UDP传输原理
TCP协议为应用层提供可靠的、面向连接的基于流的服务、使用超时重传、数据确定等方式来确保数据包被正确发送至目的地。
UDP是无连接的,面向消息的数据传输协议,与TCP相比,有两个致命的缺点:
- 数据包容易丢失
- 数据包无序
所以制定上层的协议,包括:流控机制、超时机制、重排机制、重传机制
UDP传输应用层需要注意的问题
(1)数据包确定机制
(2)数据包重发机制
(3)尽量不发大于路径MTU的数据包
(4)处理数据包重排
UDP分片原理
- 对应用层的数据进行分片,以满足MTU传输的需求
- 在发送端给分片编号,在接收端重组分片,解决乱序 数据包重组的问题
MTU,最大传输单元是指通信协议的某一层上面所能通过的最大数据包大小(以字节为单位),最大为1500(局域网发送),单个UDP传输的最大内容1472(1500-20-8)字节,但由于不同的网络中转设备设置的MTU并不相同。就好比Internet上的标准MTU为576字节,建议在进行Internet的UDP编程时,最好将UDP的数据长度控制在548字节(576-20-8)以内。
最基本的协议:IP报文=header+body,MTU->IP 报文
InternetUDP数据分包:
附加信息(12字节)+用户数据(548-12=536字节)
使用UDP的场景:
- 实时性(游戏领域)
- 下载和大量数据传输
- P2P和网络穿透