MTU是Maximum Transmission Unit的缩写。
意思是网络上传送的最大数据包。MTU的单位是字节。大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。
而一般ADSL宽带的MTU在1450与1492之间,系统与ISP之间MTU的不符就会直接导致数据在网络传输过程中不断地进行分包、组包,浪费了宝贵的传输时间,也严重影响了宽带的工作效率。这就要求我们必须将本机MTU值设为与ISP所使用的MTU值一样后才能快速浏览网页、下载数据。但是,每个地区的ISP所使用的MTU值都不相同,同时ISP也会不定期地更改局端MTU大小,这给我们设置本机MTU带来了很大的不便,那么我们怎样才能知道ISP的MTU是多少呢?其实,我们平时最常用的Ping命令就能很方便地帮我们测试出本地ISP的MTU大小,如果大家感兴趣,就请跟随笔者一起来看看吧。
如何检测网关的MTU?
在本机打开dos窗口,执行:
ping -f -l 1452 192.168.1.1
其中192.168.1.1是网关IP地址,1452是数据包的长度。请注意,上面的参数是“-l”(小写的L),而不是“-1”。 如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。 如果出现:
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命令。从1400到1472之间多试几次,就能找到合适的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。 如果检测到网关的MTU值是1500,不需要修改。如果网关有防火墙ping不通,可以试试直接把MTU设为1400。