MTU: Maxitum Transmission Unit 最大传输单元
MSS: Maxitum Segment Size 最大分段大小
在 Win 系统中,MTU 值默认是 1500。假设我们现在要传输 3000 字节的数据,只需要拆分成 2 个数据包就行了。
而如果是 ADSL 接入方式,它的 MTU 值是 1492 的话,则 3000 字节的数据需要分为 3 个数据包传送。由于数据包的数量增多了,同时拆包组包都需要额外消耗时间,因此网速变慢也就不 足为奇了
1)当本地 MTU 值 > 网络 MTU 值,网络会进行拆包,这样一来数据包数量增多,二来也增加了拆包组包的时间
2)当本地 MTU 值 < 网络 MTU 值,虽然可以直接传输,但是却没有完全利用网络的性能,没有发挥出最大传输能力
因此,设置最合适的本地 MTU 值,就是要让本地 MTU 值 = 网络 MTU 值。
那么,怎样才能知道自己的当前网络环境的 MTU 值是多少呢?下面便来介绍测试方法。
查询MTU
②在命令提示符窗口输入以下命令(建议直接复制,以免误将小写字母 l 写为数字 1),回车。
ping -l 1472 -f www.baidu.com
这条命令的意思是向 www.baidu.com(百度主页)发送一个探测请求,请求将一个不允许分割的 1472 字节的数据包发送出去。
⑥如此这般,通过不断修正数据包的大小,我们可以最终得到当前网络的 MTU 值。比如我这里,测试 1464 通过,但 1465 失败,所以我的网络 MTU 值为 1464。
在此需要特别说明的是,当我们设置本地 MTU 值,必须牢记要将这个测得的值再加上 28,即 1464+28 = 1492。
设置MTU
1、查看自己当前网络的 MTU 值,请命令提示符下输入以下命令并回车:
netsh interface ipv4 show subinterfaces
2、要设置你正在使用网络的 MTU 值,请在命令提示符下输入以下命令并回车:
netsh interface ipv4 set subinterface "需修改的连接名" mtu=值 store=persistent
其中,需修改的连接名 和 值 要用相应的值来代替。例如,我这里需要输入:
netsh interface ipv4 set subinterface "WLAN" mtu=1492 store=persistent
在这里,我已经把要修改的地方用粗体字标出来了。
另外,请大家注意,修改 MTU 值与查看不同,需要以管理员身份运行命令提示符。
如果发现上面的不符合自己的要求
我们首先要了解到,tcp协议中的重传机制,当达到重传次数限制的时候,也会出现分包的现象,这时候,我们就要设置次数的限制。其中windows 默认是5次,liunx 默认是15次。
主要就是设置上面两个值,
Windows中,下面注册表中,如果没有就创建