zoukankan      html  css  js  c++  java
  • Linux下查看与修改mtu值

    MTU:通信术语
    最大传输单元(Maximum Transmission Unit)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
    我们在使用互联网时进行的各种网络操作,都是通过一个又一个“数据包”传输来实现的。而MTU指定了网络中可传输数据包的最大尺寸,在我们常用的以太网中,MTU是1500字节。超过此大小的数据包就会将多余的部分拆分再单独传输 。
    MTU的设置不是一个值天下通用,所以需要我们合理设置特殊场景的MTU 。


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

     

    检测需要设置的合理的值:

    大部分网络设备都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包 

    Linux OS:
    # ping -s 1472 -M do 172.21.0.118
    含义:
    发送大小包大小是1472(+28)字节,禁止路由器拆分数据包。 【 1472 + 8(ICMP回显示请求和回显应答报文格式长度) + 20(IP首部) = 1500 】
    回复结果:
    1.如果正常回复,说明网络允许最大MTU就是1500字节,与系统默认相同,只需将自己的路由的MTU也设置为1500即可。
    2.如果没正常回复,说明数据包大小超过了网络限定的MTU大小。需要减小探测包大小再次尝试。

    MTU设置与查看:

    1、设置本机的mtu,即时生效,重启后失效
    # ifconfig eth0 mtu 1472

    2、永久生效的修改方法,缺点是需要重启网卡

    # vim  /etc/sysconfig/network-scripts/ifcfg-eth0   增加如下内容

    • MTU="9000"

    # service network restart


    查看设置后的结果
    # netstat -i   或使用ifconfig也可以查看得到

    --------------------------------------------------------------------

    MSS: Maxitum Segment Size 最大分段大小

    MSS最大传输大小的缩写,是TCP协议里面的一个概念。
    MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes), 通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

    而一般以太网MTU都为1500, 所以在以太网中, 往往TCP MSS为1460。

  • 相关阅读:
    关于new 这个动作怎么理解面试遇到过
    _proto_ 和prototype自己的理解
    关于原始input的一些事情
    关于promise自己的理解
    event loop事件循环机制
    详解text-overflow 与 word-wrap ---------->>>>css加省.....英文换行处理
    vue滚动事件销毁,填坑
    vue中检测敏感词,锚点
    让文字两端对齐
    中文分词系列(一) 双数组Tire树(DART)详解
  • 原文地址:https://www.cnblogs.com/qczy/p/14141800.html
Copyright © 2011-2022 走看看