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需自行处理丢包和乱序,如添加序列号或冗余校验。
相关推荐
炘爚5 分钟前
TCP三次握手和四次挥手
服务器·网络·tcp/ip
Gh0st_Lx15 分钟前
【6】为什么有了 HTTP/1.1 ,还要 HTTP/2 和 HTTP/3
网络协议·http·php
学编程就要猛1 小时前
JavaEE初阶:网络原理-HTTP(下)
网络·网络协议·http
汤愈韬1 小时前
Full Cone NAT、行为模式
网络·网络协议·网络安全·security
灰子学技术2 小时前
Envoy TCP 层面的 Metric 指标分析
开发语言·网络·网络协议·tcp/ip·php
网络系统管理2 小时前
解决edge浏览器访问https网站报错问题
网络协议·http·https
乌萨奇也要立志学C++3 小时前
【Linux】Socket编程UDP Echo 服务器→翻译服务器→多人聊天室
linux·服务器·udp
Johnstons3 小时前
TCP Reset(RST)异常是什么?一文讲透连接被动中断的识别方法、适用场景、与超时断开的边界及排查清单
网络协议·tcp/ip·php·es·抓包分析
汤愈韬17 小时前
三种常用 NAT 的经典案例
网络协议·网络安全·security
汤愈韬18 小时前
NAT Server 与目的Nat
网络·网络协议·网络安全·security