您的位置:首页 > 运维架构 > Linux

MTU介绍以及在windows和linux下怎么设置MTU值

2017-08-22 18:35 741 查看
最大传输单元MTU(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。

MTU值设定TCP/IP协议传输数据报时的最大传输单元。设置合适的MTU值可以解决“部分网站打不开”、“上网速度慢”等问题,并且可以适当提升上网速度。设置多大的MTU值取决于你的上网方式,不同的上网方式支持不同的MTU,下面列出了一些上网方式的MTU值:

Windows下如何设置MTU?下面分两种情况分别介绍:

1.知道了我的上网方式,如何设置MTU值?

1) 在 『开始』>『运行』中,键入regedit,点确定;

2) 选择『HKEY_Local_Machine』>『SYSTEM』>『CurrentControlSet』>『Services』>『Tcpip』>『Parameters』>『interface』;

3) 在 interface 底下可能有很多的选项,你一个一个的去看,会有一个选项与你的网卡的 IP 相同,那个就是你要挑选的选项啦!然后同样的在该选项上选择『编辑』>『新建』>『DWORD值』之后,建立一个名为『MTU』的DWORD,然后双击修改,选择十进制,填入合适 MTU 值.

2.不知道自己的上网方式,如何确定MTU值呢?

要正确设置MTU首先需要测试网关上的MTU值,可以采用PING命令向网关上传送固定大小的数据包来进行测试。具体做法是:ping -F -L 1472 www.169it.com ,其中 -F是不在数据包中产生碎片标记,-L指定数据包大小 1472就是被指定的大小,这个数值可以随便设定,至于网关可以随便设定,这里就以169it.com为例。此命令的意思就是向通往169it.com的网关传送大小为1472字节的数据包,而且不产生碎片标记。如果能够正常连通,就说明1472字节大小的数据包可以传送,不需要分包。如果返回的是Packet needs to be fragmented but DF set信息,说明需要分包,可以把数据包改小再试,直到可以传送出去,即可得到网关能接受的数据包大小值,将该值加上数据包ip头所占用的28字节,就得到了网关的MTU值。

具体测试举例:

上面的式子中,-l 是 L 的小写,1500 是我们要测的 MTU 值,结果出现了 Packet needs to be fragmented but DF set. 这就表示MTU值太大了,你需要更小的 MTU 值才行!那假设我们使用 1464 来测试时:

结果出现了回应了!这表示这一个 MTU 值是可行的!不过,强烈建议找出可行的最大 MTU 值!这样一来,在设定的时候,才可以达到最佳的网速

找出 MTU 值:利用上面这个方法找到的数值还不是 MTU,由于一些封包上面的问题,上面这个值再加上 28 才是我们所需要的 MTU 值!所以,在上面的例子中,我们所需要的 MTU 值是 1464+28=1492!

一般来讲,设计好本机的MTU值,可以解决部分网站打不开的情况,但是如果你的共享主机路由器的MTU设置有问题,有时问题仍然存或,或者出现网速过慢的情况。合理的设置路由器与本机的MTU值,就可以完全解决上述问题,使上网速度达到最大化。

LINUX下设置网卡的MTU值

网卡的MTU值可以通过修改设备配置文件来设置。通过ifconfig命令可以查看网卡配置:

或者可以通过ip命令来查看:

网卡eth0当前的MTU是1500字节,如果要临时更改网卡的MTU值,比如更改为1200,则以root身份执行:

如果要使对eth0的配置永久生效,则需要修改/etc/sysconfig/network-scripts/ifcfg-eth0,像下面那样增加 MTU=1200:

然后重启网络接口:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐