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

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

1
2
3
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值。

具体测试举例:

1
2
3
4
5
6
7
8
9
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 来测试时:

1
2
3
4
5
6
7
8
9
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命令可以查看网卡配置:

1
ifconfig -a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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命令来查看:

1
# ip link list
1
2
3
4
5
6
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身份执行:

1
ip link set dev eth0 mtu 1200

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

1
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
1
2
3
4
5
DEVICE=eth0
MTU=1200
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet

然后重启网络接口:

1
service network restart

1
 /etc/init.d/network restart

MTU介绍以及在windows和linux下怎么设置MTU值的更多相关文章

  1. Windows 和  Linux 下 禁止ping的方法

    Windows 和Linux 下 禁止ping的方法 目的: 禁止网络上的其他主机或服务器ping自己的服务器 运行环境: Windows 03.08  linux 方法: Windows 03下: ...

  2. 转:socket编程在windows和linux下的区别

    如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...

  3. socket编程在windows和linux下的区别

    如无其它说明,本文所指Linux均表示2.6内核Linux,GCC编译器,Windows均表示Windows XP系统,Visual Studio 2005 sp1编译环境. 下面大概分几个方面进行罗 ...

  4. Windows与Linux下文件操作监控的实现

    一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...

  5. 怎样在Windows和Linux下写相同的代码

    目前,Linux在国内受到了越来越多的业内人士和用户的青睐.相信在不久的将来,在国内为Linux开发 的应用软件将会有很大的增加(这不,金山正在招兵买马移植WPS呢).由于未来将会是Windows和L ...

  6. socket在windows下和linux下的区别

    原文:socket在windows下和linux下的区别 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h    错误处理:errno.h 2 ...

  7. windows和linux下关闭Tomcat进程

    windows和linux下解决Tomcat进程 windows下启动Tomcat报错,8080端口号被占用,报错信息如下 两种解决方法,一种是关闭了这个端口号,另外一种是修改Tomcat下的serv ...

  8. HDP2.0.6+hadoop2.2.0+eclipse(windows和linux下)调试环境搭建

    花了好几天,搭建好windows和linux下连接HDP集群的调试环境,在此记录一下 hadoop2.2.0的版本比hadoop0.x和hadoop1.x结构变化很大,没有eclipse-hadoop ...

  9. windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)

    前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...

随机推荐

  1. ffmpeg批量实现视频转码命令行

    ffmpeg实现视频转码命令行,result需要提前建好作为保存转码后的视频路径: ffmpeg -i .mp4 -vcodec h264 "result\1.mp4" 当有大量视 ...

  2. java中的左右移

    package scanner; public class LeftMove { public static void main(String[] args) { int i = 1; System. ...

  3. SVN的安装和配置

    SVN为程序开发团队常用的代码管理,版本控制软件:下面我们来介绍TortoiseSVN的安装,和其服务器的搭建:(下面为windows 64位系统下的搭建) 闲来无事,就在本地搭建了一个SVN环境,网 ...

  4. Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  5. 自己搭建CA颁发证书做https加密网站

    192.168.10.187 CA服务器 192.168.10.190 web服务器 (1)搭建CA cd /etc/pki/CA 在这个目录下创建serial和index.txt两个文件 echo ...

  6. 三十天学不会TCP,UDP/IP网络编程 - UDP的实践--DHCP

    在经历了一顿忙碌加出去玩了玩之后,我又开始重新更新了~这是最新的一篇~完整版可以去gitbook(https://www.gitbook.com/@rogerzhu/)看到,在gitbook的后台流量 ...

  7. localhost或本机ip无法连接数据库问题解决与原因

    解决办法:将localhost替换为127.0.0.1 原因@参考文章:navicat在电脑没有联网的情况下,并不会把localhost解析成127.0.0.1,而mysql默认情况下只支持127.0 ...

  8. django的rest_framework框架源码剖析

    在看源码之前先了解一下什么是rest,restful api. 什么是rest 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则. REST是Representational S ...

  9. spring实例化bean三种方式

    我看了这篇博文<https://www.cnblogs.com/zhanglei93/p/6221546.html>,以及自己实践总结了关于spring实例化bean对象的3种方式. 一. ...

  10. 创建github仓库的gh-pages分支

    用git symbolic-ref命令将当前工作分支由master切换到一个尚不存在的分支gh-pages. $ git symbolic-ref HEAD refs/heads/gh-pages 删 ...