UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?
💡
原文中文,约9900字,阅读约需24分钟。
📝
内容提要
UDP报文由UDP头部和UDP数据区组成。UDP头部包含源端口、目标端口、长度和校验值。UDP没有发送缓冲区,当接收缓冲区满时,新的数据报会被丢弃。UDP报文最大长度为65507字节。UDP丢包的原因包括缓冲区满、包过大、ARP缓存过期、接收端处理时间过长、发送的包巨大、发送的包频率太快等。解决UDP丢包的方法包括延迟发送、数据接收与处理分离、修改接收缓存大小等。UDP在实时性要求高、多点通信、NAT穿越等场景下使用较为合适。QQ采用UDP作为主要通信协议,通过服务器转发和应答包来保证可靠传输。
🎯
关键要点
- UDP报文由UDP头部和UDP数据区组成,头部包含源端口、目标端口、长度和校验值。
- UDP没有发送缓冲区,接收缓冲区满时新数据报会被丢弃,最大报文长度为65507字节。
- UDP丢包原因包括缓冲区满、包过大、ARP缓存过期、接收端处理时间过长、发送包巨大和发送频率过快。
- 解决UDP丢包的方法包括延迟发送、数据接收与处理分离、修改接收缓存大小等。
- UDP适用于实时性要求高、多点通信和NAT穿越等场景。
- QQ采用UDP作为主要通信协议,通过服务器转发和应答包来保证可靠传输。
- UDP没有发送缓冲区,接收缓冲区满时新来的数据报会被丢弃,导致UDP不可靠。
- UDP包的最佳传输大小应控制在MTU限制内,以避免分片丢失。
- UDP丢包的解决方案包括延迟发送、数据接收与处理分离和修改接收缓存大小。
- UDP的致命缺点是数据包容易丢失和无序,需在应用层实现可靠性。
- 实现UDP可靠性的方案包括回复、重发和编号机制,以及冗余传输方案。
- RUDP(Reliable UDP)可以在UDP上实现可靠性,适用于复杂网络环境。
- UDP在高实时性和低持续性要求的场景下更为合适,如实时音视频通信和多人游戏。
- QQ使用UDP减少服务器负担,并通过上层协议保证消息的可靠传输。
🏷️
标签
➡️