MTU的研究

本文介绍了MTU(最大传输单元)的概念,探讨了不同网络设备MTU值不一致可能导致的数据包分割问题,以及如何通过修改MTU提高网络速度。通过ping命令测试网关MTU,并详细说明了XP系统中修改MTU值的步骤。

记得以前家里的电脑上网网速很慢,于是千方百计寻找提高网速的方法。网络上的解决方法千篇一律,都是围绕如何修改MTU展开的,于是就下载了类似的工具修改MTU的值,好像效果也没有十分明显。当时对网络基本上也是一窍不通,也不知道MTU是什么东东,所以也没研究。

近日在学习《计算机网络》中的数据链路层的时候,突然看到MTU的内容,后来又去上网搜索了相关的知识,整理了一些资料。

MTU(Maximum Transfer Unit)-也即最大传送单元。
数据链路层在收到上层网络层提供的IP数据报之后,会在其每个IP数据报首部和尾部加入帧首部和帧尾部,封装成帧,然后再交给物理层以比特流传输给对方。为了提高帧的传输效率,我们自然希望一个帧的数据部分的长度比首部和尾部这些控制信息的长度长。当然,任何事物都需要有一个度,所以我们必须对帧数据部分的长度进行控制(这是从网络的整体考虑的),给它限定一个最大长度,也就是MTU。

     任何网络设备都有一个自己的MTU(这也是从网络的整体性考虑的),包括路由器,交换机,当然包括自己的电脑。由于各个网络设备的MTU值不一定相同,这时便出现了这样一个问题,数据报(或者说是分组)再次被分成若干个数据包,这样一来,就增加了数据包出错或者丢失的概率。

对此,我们分两种情况讨论:(MTU的单位是字节)
1.路由器的MTU比本机的小,路由器会对数据包再进行分割。
比如:路由的MTU是800,而自己的电脑的MTU是1500,那么当你给对方传送1500字节的数据时,势必需要对这1500字节数据进行分割才能使800+700字节的数据都能通过路由器。
2.路由器的MTU比本机的大,我想这种情况就不要多考虑了,你每次发送的数据,路由器都不会对其分割。

有电子或者通信基础的人都知道,世界上的通信信道都不是理想的,多多少少都有噪声存在,对信号存在干扰,使信号出错。所以,当你数据包的数目越多,出错的概率就越大。

所以为了解决上面的问题,所以有了MTU这么一个说法。至此,通过修改MTU的值来提高网络速度的方法就自然而然变得明了了。

下面再对如何修改MTU说明一下。
通过IPCONFIG命令,得到本机所处网络的网关IP。在我这里是10.81.132.1

再PING网关 ping -f -l 1480 10.81.132.1 (解释一下:-f Set Don't Fragment flag in packet,不对数据包进行分割;-l 发送的测试数据包的长度)用于测试出网关的MTU值

如果ping通了,就代表路由器的MTU此时比本机的大,我们再增加测试数据包的长度,如果ping不通了,就代表此时路由器的MTU已经小于本机的MTU了(此时表现为数据包全部丢失,出现Packet needs to be fragmented but DF set的提示)。据网上参考文章所说:基本上的网络设备MTU=1500.所以,我们测试的时候,数据包的长度基本上是1472是最大的了。

可能有人会问,1472不是小于1500吗?确实如此,但是实际上1472只是IP数据报数据部分的长度,我们在PING的时候,系统会自动给数据加上28字节的首部(IP首部20字节+ICMP首部8字节)。也就是说,这1472+20+8是整个IP数据报的长度,再把这个IP数据报做为帧数据部分封装到帧中。而对于一个帧到底有多长,我们可以通过帧格式得知,加上帧的首部和尾部,最长为1518字节,最低为64字节,换言之,路由器可通过的最长帧是1518字节。 (如果是用于VLAN的以太网帧,因为首部还有个4字节的VLAN标记,所以最长帧长度为1522字节)
这里在重申一下:MTU只是代表帧数据部分长度,也就是整个IP数据报的长度。

还有一个值得提一下的地方是:我们在PING的时候,系统默认发送的测试IP数据报为32字节(此32字节不包含IP数据报首部和尾部),也就是说少于(64-28=46)字节,此时系统会对这份数据报自动补0,以达到最低值

关于如何在XP修改MTU值参照了网上的方法:
在注册表中定位到下面的项
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/Interfaces

Interfaces下有多个子项,每个子项对应一个网卡。请按如下方法选择网卡:
确定本机用来连接Internet的网卡或拨号连接的IP,如10.81.132.242(我自己电脑的IP);
用鼠标点击Interfaces上的子项,查看键值列表中的IPAddress项;
如果IPAddress的键值与10.81.132.242相同,即10.81.132.242,则该子项就是要找的网卡。
进入该子项,在右边的窗口里按鼠标右键,选择“新建DWORD值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口:填入MTU的值。填写前请先把基数设为十进制。设置好后,需要重启机器才能生效

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值