UDP协议解析
UDP:用户数据报传输协议。
UDP的报文结构
- 16位的UDP数据报长度决定UDP数据报的最大长度为64KB。64KB在当今的互联网环境下是一个非常小的数字,因此需要传送大文件的话,必须在应用层进行分包。多次发送。
- 当校验失败时,该数据报会被直接丢弃。
UDP的特点
- 面向非连接,传输数据前,源端与目的端不建立连接,直接发送,就如发短信一样。
- 不需要维护连接状态:因为UDP传输过程中不需要建立连接,因此也无需维护连接
- 报头很短:只有8个字节,额外开销小。
- 效率高:吞吐量只受限于数据生成速率,传输速率与机器性能。
- 面向数据报:不对应用程序提交的程序进行拆分或者合并。如果需要,需要由用户在应用层提前做好划分。
- 不可靠:因为没有确认连接机制,和重传机制,因此UDP是不可靠的。
UDP协议相关问题
-
数据包乱序问题
由于网络阻塞或者其它因素,造成数据的接受顺序与发送数据的顺序不一致。
解决方案- 在发送数据的时候,为每一个数据报提供一个id号,这样接受端收到数据报后可以根据id号进行重组,恢复数据报的顺序。
-
UDP报文丢失问题
在传输过程中,某些报文丢失了。因为UDP是一种不可靠的传输协议,没有确认机制,因此当报文丢失后,发送端并不知道报文传输过程中丢失了。
解决方案:模仿TCP,超时重传。
如何使得UDP成为可靠传输
- 应答确认:保证可靠连接
- 超时重传机制:解决丢包问题
- 有序接受:添加包序id,解决乱序问题
- 滑动窗口、流量控制,延迟应答,捎带应答:在稳定可靠传输的基础上尽可能提升性能。
UDP的应用
- 简单文件传输协议:TFTP
- 域名系统协议:DNS
- 远程过程调用协议:NFS
- 动态主机配置协议:DHCP