MTU是Maximum Transmission Unit的缩写,即最大传输单元。是指链路层(TCP/IP四层结构中的最底层:链路层 Link Layer)所能传送数据帧的最大长度。MTU的单位是字节。 大部分网络设备的MTU都是1500,即IP数据报的长度不能超过1500字节。表1列出了几种常见的MTU值。
表1 几种常见的最大传输单元
网 络 |
MTU字节 |
超通道 16 Mb/s令牌环(IBM) 4 Mb/s令牌环(IEEE 802.5) FDDI 以太网 IEEE802.3/802.2 X.25 点对点(低延时) |
65536 17914 4464 4352 1500 1492 576 296 |
若是本机的MTU比网关的MTU大,大的数据报就会被拆开来传送,这样会产生不少数据报碎片,增长丢包率,下降网络速度。把本机的MTU设成比网关的MTU小或相同,就能够减小丢包。
如何检测网关的MTU。 在XP下面,进入命令提示符(开始-运行:输入cmd),执行:
ping -f -l 1472 192.168.1.175
其中192.168.1.175是另一台局域网内主机的IP地址,
本机IP地址为192.168.1.209(IP地址为192.168.×.×的为局域网专用IP,是不能在公网上显示的,主要是基于缓解IP地址资源紧张而提出的一种解决方法)。
1472 是数据报的长度。1472是经过这样计算出来的:因为以太网的MTU为1500,这个长度是包括IP包头长度(通常为20字节),以及传输层的报头长度 (TCP通常为20字节,UDP为8字节)。因为Ping程序发送的数据长度是UDP数据,所以,能够发送至以太网最大的UDP数据长度为1500-20 -8=1472字节。
同时,上面的参数是“-l”(小写的L),而不是“-1”。若是能ping通,表示数据报不须要拆包,能够经过网关发送出去。 若是出现: Packet needs to be fragmented but DF set. 表示数据报须要拆开来发送。此时,减小数据报长度,再执行上面的ping命令。从1400到1472之间多试几回,就能找到合适的数据报长度了。把数据报 长度加上数据报头28字节,就获得MTU的值。 若是检测到网关的MTU值是1500,不须要修改。若是网关有防火墙ping不通,能够试试直接把MTU设为1400。
如下是执行
ping -f -l 1472 192.168.1.175的输出结果:
Pinging 192.168.1.175 with 1472 bytes of data:
Reply from 192.168.1.175: bytes=1472 time=2ms TTL=128
Reply from 192.168.1.175: bytes=1472 time=1ms TTL=128
Reply from 192.168.1.175: bytes=1472 time=1ms TTL=128
Reply from 192.168.1.175: bytes=1472 time=1ms TTL=128
Ping statistics for 192.168.1.175:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 2ms, Average = 1ms
这首先说明当IP数据报的长度为1500字节的时候,网关能够顺利的发送出去,而不用将数据报拆分,即分组。下面咱们将测试IP数据包为1501字节是,即UDP数据长度为1473时执行
ping -f -l 1473 192.168.1.175
的输出结果:
Pinging 192.168.1.175 with 1473 bytes of data: Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. Packet needs to be fragmented but DF set. Ping statistics for 192.168.1.175: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), 这说明当IP数据报的长度为1501字节时,数据报就须要分组。由此能够看出,网关的MTU应该是1500字节。