UDP协议解析

UDP:用户数据报传输协议。

UDP的报文结构

UDP传输文件 python udp传输文件 解析_UDP传输文件 python

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