首页 > 编程知识 正文

怎么设置mtu值,设置合适的mtu值

时间:2023-05-06 17:39:10 阅读:217043 作者:3499

 以下内容是通过网上收集资料,测试通过的。

      一、原理:在windows里,默认的MTU是1500,但是不同的网络接入方式,不同地区的网络运营商,甚至不同的路由器,它们的MTU值都可能是不同的。例如:ADSL接入时MTU为1492字节,假设A需要给B传输3000字节数据,如果整个传输过程中各个环节的MTU都是1500,那么2个数据包就可以传输完成。可是偏偏这时ADSL接入方式的MTU是1492字节,数据包就因为这个MTU差异额外拆分为3个(为了便于理解,暂时不将“数据包报头”纳入考虑范围)显然这额外增加了需要传输的数据包数量,而且拆包组包的过程也浪费了时间。如果从本地到网络采用一致的MTU就可以避免额外拆包。

      那么什么情况下MTU值是合理的呢?1、本地MTU值大于网络MTU值时,本地传输的数据包过大导致网络会拆包后传输,不但产生额外的数据包,而且消耗了“拆包、组包”的时间。2、本地MTU值小于网络MTU值时,本地传输的数据包可以直接传输,但是未能完全利用网络给予的数据包传输尺寸的上限值,传输能力未完全发挥。  这样我们就知道,所谓合理的设置MTU值,就是让本地的MTU值与网络的MTU值一致,既能完整发挥传输性能,又不让数据包拆分。

       设置MTU大小是一个反复试验的过程: 由最大值1500开始下降,直至问题解决。使用下列值之一或许能解决一些由MTU值引起的问题:
       1500:以太网信息包最大值,也是默认值。是没有PPPoE和VPN 的网络连接的典型设置。是各种路由器、网络适配器和交换机的默认设置 
       1492:PPPoE 的最佳值 
       1468:DHCP的最佳值 
       1430:VPN和PPTP 的最佳值 
       576:拨号连接到ISP的标准值

       二、判断本机MTU最大值方法,思路:在广域网上,大小超出ISP要求的数据包将无法传输,而操作系统则会根据本机MTU值自动将大小不符合要求的数据进行分包处理再进行传输,所以我们可以通过向Internet上的某台主机发送一个定长数据包,并且不允许操作系统更改其大小的方式去检查该数据包能否被正常传输,如果数据包小于或等于ISP的MTU值时,传输就能正常进行,而如果发送的数据包大于ISP使用的MTU值时,传输就会失败,这样我们就能通过不断发送不同大小的数据包最终得到ISP端的MTU大小,而这个数据再加上28字节的包头信息就是我们需要的最终MTU值。

      输入命令“ping –l 14xx –f www.csdn.com”,用参数-l和-f 来做。

      找出最佳的大小,然后加上28,就是要设置的MTU大小。

     三、 windows下设置MTU值:

      通过输入:netsh interface ipv4 show subinterfaces 查询到目前系统的MTU值。

      通过输入:netsh interface ipv4 set subinterface "本地连接" mtu=1480 store=persistent
                  netsh interface ipv4 set subinterface "无线网络连接" mtu=1480 store=persistent

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。