UDP与TCP的区别

UDP与TCP的区别

  1. 连接方式

    • TCP是面向连接的协议,通信前需通过三次握手建立连接。
    • UDP是无连接的协议,直接发送数据,无需建立连接。
  2. 可靠性

    • TCP提供可靠传输,通过确认、重传、流量控制等机制确保数据完整有序。
    • UDP不保证可靠性,数据可能丢失或乱序。
  3. 效率

    • TCP因复杂控制机制,传输效率较低,延迟较高。
    • UDP无控制开销,传输效率高,延迟低。
  4. 数据边界

    • TCP是字节流协议,无明确消息边界。
    • UDP保留数据包边界,发送和接收次数一致。
  5. 拥塞控制

    • TCP动态调整传输速率以避免网络拥塞。
    • UDP无拥塞控制,可能加剧网络拥塞。

TCP建立到结束过程

建立连接(三次握手)

  1. 客户端发送SYN=1, seq=x的同步报文。
  2. 服务端回复SYN=1, ACK=1, seq=y, ack=x+1
  3. 客户端发送ACK=1, seq=x+1, ack=y+1确认。

数据传输

  • 发送方按需分割数据并编号,接收方确认后窗口滑动。
  • 通过超时重传、流量控制等机制确保可靠性。

断开连接(四次挥手)

  1. 主动方发送FIN=1, seq=u
  2. 被动方回复ACK=1, ack=u+1
  3. 被动方发送FIN=1, seq=v
  4. 主动方回复ACK=1, ack=v+1并等待超时关闭。

UDP建立到结束过程

无连接通信

  • 发送端直接构造数据包(源/目标端口、长度、校验和),通过Socket发送。
  • 接收端监听端口,接收数据包并处理。无确认或重传机制。

无明确结束流程

  • 通信双方随时可停止发送或关闭Socket。

应用场景

TCP适用场景

  • 需要可靠传输:网页浏览(HTTP)、文件传输(FTP)、邮件(SMTP)。
  • 长连接交互:数据库连接、远程登录(SSH)。

UDP适用场景

  • 实时性优先:音视频流(RTP)、在线游戏、VoIP。
  • 广播/多播:DNS查询、DHCP、网络发现协议。

Unity中的使用场景

TCP应用

  • 需同步状态的回合制游戏或策略游戏,如棋牌类。
  • 玩家数据持久化,如登录验证或存档上传。

UDP应用

  • 实时动作类游戏(如FPS、MOBA),低延迟优先。
  • 高频小数据包传输,如玩家位置同步。

Unity实现示例

csharp 复制代码
// TCP客户端示例
TcpClient client = new TcpClient();
client.Connect("127.0.0.1", 8080);
NetworkStream stream = client.GetStream();
byte[] data = Encoding.UTF8.GetBytes("Hello TCP");
stream.Write(data, 0, data.Length);

// UDP客户端示例
UdpClient udpClient = new UdpClient();
byte[] udpData = Encoding.UTF8.GetBytes("Hello UDP");
udpClient.Send(udpData, udpData.Length, "127.0.0.1", 9090);

注意事项

  • Unity主线程中需避免阻塞,建议异步处理网络通信。
  • UDP需自行处理丢包和乱序,如添加序列号或冗余校验。
相关推荐
暴力求解9 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
游戏开发爱好者810 小时前
WebSocket 抓包怎么查看内容?从握手到消息帧完整解读
网络协议·计算机网络·网络安全·ios·adb·https·udp
80s77711 小时前
动态ip和静态ip有什么区别
服务器·网络·tcp/ip
尘世壹俗人12 小时前
如何生成SSL要用的自签证书
网络协议
阿钱真强道14 小时前
06 极物科技 | 创明RS485窗帘 - UDP 通讯协议规范
udp·智能家居·通讯协议·极物·极物智能·极物科技·创明窗帘
新手unity自用笔记15 小时前
unity基于Socket的网络学习
网络·网络协议·学习·unity·c#·游戏引擎
2401_8685347816 小时前
在企业环境中快速安装配置 FreeBSD Unix 服务器操作系
linux·网络协议
XUEYUAN521216 小时前
Cloudflare 防护机制深度剖析与跨境数据采集工程化实践
服务器·网络·网络协议·tcp/ip·http
青瓦梦滋16 小时前
IP/MAC帧/ARP协议
运维·服务器·网络·网络协议·tcp/ip
TlSfoward16 小时前
TLS指纹库的数据质量与误判治理 TLSFOWARD TLS指纹库
爬虫·网络协议·http