?
扩展阅读
?
当前位置:??网络技术>IP协议

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

?
分享到:
????发布时间:2014-10-20??


????本文导语:? 最大传输单元MTU(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。 MTU值设定TCP...

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

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

EtherNet(一般上网方式,默认值):1500
PPPoE/ADSL:1492
Dial?Up/Modem:576

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值。

具体测试举例:

C:WINDOWS>ping?-f?-l?1500?127.0.0.1
Pinging?127.0.0.1?with?1500?bytes?of?data:
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?statistics?for?127.0.0.1:
???Packets:?Sent?=?4,?Received?=?0,?Lost?=?4?(100%?loss),?Approximate?round?trip?times?in?milli-seconds:
???Minimum?=?0ms,?Maximum?=?0ms,?Average?=?0ms

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

C:WINDOWS>ping?-f?-l?1464?127.0.0.1
Pinging?127.0.0.1?with?1464?bytes?of?data:
Reply?from?127.0.0.1:?bytes=1464?time=10ms?TTL=128
Reply?from?127.0.0.1:?bytes=1464?time<10ms?TTL=128
Reply?from?127.0.0.1:?bytes=1464?time<10ms?TTL=128
Reply?from?127.0.0.1:?bytes=1464?time<10ms?TTL=128
Ping?statistics?for?127.0.0.1:
???Packets:?Sent?=?4,?Received?=?4,?Lost?=?0?(0%?loss),?Approximate?round?trip?times?in?milli-seconds:
???Minimum?=?0ms,?Maximum?=?10ms,?Average?=?2ms

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

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

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

LINUX下设置网卡的MTU值?

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

ifconfig?-a
eth0??????Link?encap:Ethernet??HWaddr?00:0D:61:93:55:3E
??????????inet?addr:192.168.0.1??Bcast:192.168.0.255??Mask:255.255.255.0
??????????UP?BROADCAST?RUNNING?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:386423?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:6490?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000
??????????RX?bytes:203556104?(194.1?MiB)??TX?bytes:787293?(768.8?KiB)
??????????Interrupt:209?Memory:fb000000-0
eth1??????Link?encap:Ethernet??HWaddr?00:40:F4:98:8E:43
??????????BROADCAST?MULTICAST??MTU:1500??Metric:1
??????????RX?packets:0?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:0?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:1000
??????????RX?bytes:0?(0.0?b)??TX?bytes:0?(0.0?b)
??????????Interrupt:185?Base?address:0xa000
lo????????Link?encap:Local?Loopback
??????????inet?addr:127.0.0.1??Mask:255.0.0.0
??????????UP?LOOPBACK?RUNNING??MTU:16436??Metric:1
??????????RX?packets:36036?errors:0?dropped:0?overruns:0?frame:0
??????????TX?packets:36036?errors:0?dropped:0?overruns:0?carrier:0
??????????collisions:0?txqueuelen:0
??????????RX?bytes:20683798?(19.7?MiB)??TX?bytes:20683798?(19.7?MiB)

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

#?ip?link?list
1:?lo:??mtu?16436?qdisc?noqueue
????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00
2:?eth0:??mtu?1500?qdisc?pfifo_fast?qlen?1000
????link/ether?00:0d:61:93:55:3e?brd?ff:ff:ff:ff:ff:ff
3:?eth1:??mtu?1500?qdisc?noop?qlen?1000
????link/ether?00:40:f4:98:8e:43?brd?ff:ff:ff:ff:ff:ff

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

ip?link?set?dev?eth0?mtu?1200

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

#?cat?/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MTU=1200
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet

然后重启网络接口:

service?network?restart

?/etc/init.d/network?restart


  • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:MTU介绍以及在windows和linux下怎么设置MTU值
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

?2012-2019,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号