基于最大UDP数据报长度和MTU值的思考

最大UDP数据报长度

   理论上,IP数据报的最大长度是65535字节,这是由IP首部(图IP协议格式)16比特总长度字段所限制。去除20字节的IP首部(图IP协议格式)和8字节的UDP(图UDP协议格式)首部,UDP数据报中用户的最长长度为65507.但是,大多数实现所提供的长度比这个最大值小。

   基于最大UDP数据报长度和MTU值的思考

   基于最大UDP数据报长度和MTU值的思考

     我们将遇到两个限制因素。

      第一,应用程序可能会受到其程序接口的限制。socket API提供了一个可供应用程序调用的函数,以设置接收和发送缓存的长度。对于UDP socket,这个长度与应用程序可以读写的最大UDP数据报的长度直接相关。现在的大部分系统都默认提供了可读写大于8192自己的UDP数据报。

      第二个限制来自于TCP/IP的内核实现。可能存在一些实现特性(或差错),使IP数据报长度小于65535字节。

   MTU值

    参考TCP/IP详解卷一,做的全球互联网实验

     作为一个实验,我们多次运行修改以后的traceroute程序,目的端为世界各地的主机,可以到达15个国家(包括南极洲),使用了多个跨大西洋和跨太平洋的链路。但是,在这样做之前,作者所在子网与路由器netb之间的拨号SLIP链路MTU增加到1500与以太网相同。

    在18次运行当中,只有其中2次发现的路径MTU小于1500。其中一个跨大西洋的链路MTU值为572,而路由器返回的的是新格式的ICMP差错报文。另外一条链路,在日本的两个路由器之间,不能处理1500字节的数据帧,并且路由器没有返回新格式的ICMP差错报文。把MTU值设成1006则可以正常工作。

      从这个实验可以读出结论,现在许多但不是所有的广域网都可以处理大于512自己的分组,利用路径MTU发现机制,应用程序就可以充分利用更大的MTU来发送报文。

     对于MTU值,要求主机必须能够接收至少576字节的IP数据报。在许多UDP应用程序设计中,其应用程序数据被限制成512字节或更小,因此比这个限制值小。当然,我们可以通过分析很多路由协议(DNS TFTP BOOTP SNMP)总是发送每份小于512字节的数据。

   

 

         

上一篇:TCP/IP illustated: 第二章 Link Layer


下一篇:浅析UDP包的网络传输