最大传送单位 (MTU) 指定接口的最大传输单位的大小。TCP/IP 使用的每个接口都可能指定不同的 MTU 值。MTU 通常是通过与更低级别驱动程序协商以及使用该更低级别驱动程序值来确定的。但是,该值可能被覆盖。
每种媒体类型都有一个不能超过的最大帧大小。链接层负责发现此 MTU 并将其报告给链接层上方的协议。协议栈可能会向网络驱动程序接口规范 (NDIS) 驱动程序查询本地 MTU。接口的 MTU 信息由上层协议如 TCP 使用,TCP 自动为每种媒体优化数据包大小。
如果网络适配器驱动程序(如异步传输模式 (ATM) 驱动程序)使用局域网 (LAN) 模拟模式,它可能会报告其 MTU 大小高于该媒体类型的预期大小。例如,网络适配器可能会模拟以太网,但却报告 MTU 为 9180 字节。Windows 会接受并使用该适配器报告的 MTU 大小,即使它超过了给定媒体类型的正常 MTU。 以下是不同网络媒体的默认 MTU 大小一览表。 网络 MTU(字节) ----------------------------------- 16 Mbps 令牌环 17914 4 Mbps 令牌环 4464 FDDI 4352 以太网 1500 IEEE 802.3/802.2 1492 PPPoE (WAN Miniport) 1480 X.25 576 |
如何检测网关的MTU
在本机打开dos窗口,执行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是网关IP地址,1472是数据包的长度。请注意,上面的参数是“-l”(小写的L),而不是“-1”。如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。 如果出现: Packet needs to be fragmented but DF set. 表示数据包需要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。从1400到1472之间多试几次,就能找到合适的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。 如果检测到网关的MTU值是1500,不需要修改。如果网关有防火墙ping不通,可以试试直接把MTU设为1400。
如何修改本机的MTU修改方法如下:
(1)、运行regedit (2)、浏览到: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/Interfaces
(3)、Interfaces下有多个子项,每个子项对应一个网卡。请按如下方法选择网卡:(a)确定本机用来连接Internet的网卡或拨号连接的IP,如192.168.0.19;(b)用鼠标点击Interfaces上的子项,查看键值列表中的IPAddress项;(c)如果IPAddress的键值与(a)中的IP相同,即192.168.0.19,则该子项就是要找的网卡。(4)、进入该子项,在右边的窗口里按鼠标右键,选择“新建”->“双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口: 如图3: 填入MTU的值。填写前请先把基数设为十进制。 设置好后,需要重启机器才能生效。