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需自行处理丢包和乱序,如添加序列号或冗余校验。
相关推荐
Pluchon40 分钟前
硅基计划6.0 伍 JavaEE 网络原理
网络·网络协议·学习·tcp/ip·udp·java-ee·信息与通信
せいしゅん青春之我41 分钟前
【JavaEE初阶】网络层-IP协议
java·服务器·网络·网络协议·tcp/ip·java-ee
wuk9986 小时前
实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
前端·websocket·网络协议
濊繵6 小时前
Linux网络-Socket 编程 UDP
linux·网络·udp
小陈又菜9 小时前
【QT学习之路】网络通信新次元!Qt TCP双侠:Server监听瞬息,Socket连接万变
qt·网络协议·tcp/ip·socket
C2H5OH6669 小时前
Netty详解-02
java·websocket·网络协议·tcp/ip·tomcat·netty·nio
Chief_fly10 小时前
RestTemplate 和 Apache HttpClient 实现 HTTP 请求
网络协议·http·apache
qq_3565314511 小时前
浏览器访问web服务器经过了哪些过程
网络协议
それども12 小时前
HTTP接口和Dubbo接口区别
网络协议·http·dubbo
诚实可靠王大锤13 小时前
WebSocket调试工具(html),用于调试WebSocket链接是否畅通
websocket·网络协议·html