MTU=最大传输单元 单位:字节 英文:Maximum Transmission Unit”我们平时上网时的各种操作,都是通过一个又一个“数据包”传输来实现的。而MTU指定了网络中可传输数据包的最大尺寸,在我们常用的以太网中,MTU是1500字节。超过此大小的数据包就会将多余的部分拆分再单独传输。就像货车通过限高的桥洞一样,货物高度超过限制高度了,就需要卸下一些货物,分两批通过限高路段。

MTU跟我的网络有神马关系?
关系还是挺密切的,在windows里,默认的MTU是1500,但是不同的网络接入方式,不同地区的网络运营商,甚至不同的路由器,它们的MTU值都可能是不同的。例如:ADSL接入时MTU为1492字节,假设A需要给B传输3000字节数据,如果整个传输过程中各个环节的MTU都是1500,那么2个数据包就可以传输完成。可是偏偏这时ADSL接入方式的MTU是1492字节,数据包就因为这个MTU差异额外拆分为3个(为了便于理解,暂时不将“数据包报头”纳入考虑范围)显然这额外增加了需要传输的数据包数量,而且拆包组包的过程也浪费了时间。如果从本地到网络采用一致的MTU就可以避免额外拆包。


我该怎么合理设置MTU呢?
更快的网速,这个理由够不够让你折腾一趟呢?显然是值得的,可是MTU值不是一个数字,天下通用的。所以在我们动手设置的时候,讲究一个合理!

那么什么情况下MTU值是合理的呢?我们先来看看不合理的。1、本地MTU值大于网络MTU值时,本地传输的数据包过大导致网络会拆包后传输,不但产生额外的数据包,而且消耗了“拆包、组包”的时间。2、本地MTU值小于网络MTU值时,本地传输的数据包可以直接传输,但是未能完全利用网络给予的数据包传输尺寸的上限值,传输能力未完全发挥。 这样我们就知道,所谓合理的设置MTU值,就是让本地的MTU值与网络的MTU值一致,既能完整发挥传输性能,又不让数据包拆分。


ping:发起一个探测请求; -l(L的小写):限制探测包大小; 1472:包大小为1472字节; -f:禁止路由器拆分数据包 百度:设百度为探测目标
ping -l 1472 -f www.baidu.com

==>
如果出现需要拆分数据包但是设置 DF。或是Packer needs to be fragmented but DF set.的提示,那就说明数据包大小超过了网络限定的MTU大小。需要减小探测包大小再次尝试。

==>
直至你发现数据包-1后,有了返回,就说明你探测到了MTU允许的准确数据包大小。(例如从1465降低到1464就有了返回,那么允许的数据包大小就是1464)7、不过上面得到的值还不能设置为操作系统或路由器的MTU,你找到的数据包大小需要加上28字节的“数据包报头”,才是完整的数据包尺寸。(例如:探测到的数据包大小是1464,那么加上28字节,最终MTU=1492字节)8、最后,只需要将路由器和操作系统中的MTU值设置为你得出的结果即可进入小极后台,高级选项中的MTU设置中填入测得的数值即可