MSS: Maximum Segment Size,即最大报文段长度。MSS是TCP协议的一个选项,用于在TCP连接建立时,收发双方可以通知对方通信时每一个报文段所能承载的最大数据长度。注意该选项不是协商选项,只是一种通知。即接收方告知发送方自己的MSS大小,对方使用该值与否,取决于对方。

MTU: Maximum Transmission Unit,即最大传输单元,表示数据链路层可以传输的最大数据包(不包含帧首部和尾部)。每个网络都有其MTU值。该值大小可能是由于技术限制,也可能是工程、技术或管理上的考虑。即使是同一种网络在不同的环境中或设置下,MTU也是不同的。一些流行的网络中,MTU的值如下:


ARPANET, MILNET    = 1007

Ethernet(以太网)    = 1500


MTU作用于数据链路层,因网路不同而不同。MSS作用域传输层,表明传输层能够传输的数据大小。高层协议必然受到低层协议和数据链路的限制。因此,MSS也受限于MTU.具体的关系如下:

在最好的情况下,即IP数据报和TCP报文段都只使用最小的首部,则

MSS = MTU - 20(IP首部) - 20 (TCP首部)

MSS = MTU - 40

在最坏的情况下,IP数据报和TCP报文段都使用最大的首部长度,则

MSS = MTU - 60(IP首部) - 60 (TCP首部)

MSS = MTU - 120

也就是说在以太网环境中,最大MSS = 1500 - 40 = 1460字节。

为什么我们要十分注意MSS以及MTU ?

如果我们的IP数据包交付给数据链路层封装成帧时,如果IP数据包的大小大于MTU,我们就必须对IP数据报进行分片,等到达终点后再对IP分片进行组装,这无疑降低了网络利用率和网络吞吐量。因此,我们必须尽量控制MSS大小不超过最大大小,从而使得IP数据报交付给数据链路层时能够不分片。

现实

在当今流行的操作系统中,在使用IPv4时都将MTU设置为576,因此MSS也就被限制在536以内。为什么操作系统实现中将MTU设置为576呢?因为老的ISP拨号网络的标准值为576,甚至Internet上以下路由器的MTU也是576.原则上来说,只要网络连接稳定性高,MTU越大则传输效率越高。但是,如果接收机器所在网络或传输路径上路由器的MTU小的话,数据帧将不得不再次被拆分,这样反而降低了效率。

在使用IPv6时,MTU默认设置为1280,则MSS为1220( 1280 - 20字节TCP首部-40字节IP首部)

区分

最大报文段长度(MSS)与最大传输单元(Maximum Transmission Unit, MTU)均是协议用来定义最大长度的。不同的是,MTU应用于OSI模型的第二层数据链接层,并无具体针对的协议。MTU限制了数据链接层上可以传输的数据包的大小,也因此限制了上层(网络层)的数据包大小

MSS与MTU的关系相关推荐

  1. TCP传输的单个报文最大字节(MSS和MTU)

    TCP和1448 1448字节是实际场景下,单个TCP包的实际运载能力.也就是说,实际场景下,上层调用send(1000KB),下层会把这1000KB封装成多个TCP包进行发送.单个TCP包每次打包1 ...

  2. mtu/mss 数据包分片详解

    MTU是啥 MTU是Maximum Transmission Unit的缩写,意思是最大传输单元,这个值是作用于网卡上的,表示的是数据报文经过网卡时的最大大小,默认情况下网卡的MTU值都是1500,当 ...

  3. TCP/IP协议:最大传输单元MTU 路径MTU

    最大传输单元MTU 以太网和8 0 2 . 3对数据帧的长度都有一个限制,其最大值分别是1 5 0 0和1 4 9 2字节.链路层的这个特性称作M T U,最大传输单元.不同类型的网络大多数都有一个上 ...

  4. 【计算机网络】 0、各网络命令 + tcpdump + Wireshark、抓包实战、TCP 握手挥手、防火墙、保活、MTU

    文章目录 一.各层网络工具 应用层 找到服务器的 IP 查接口.对象的耗时 删除指定网站的Cookie 表示层.会话层 tcpdump.wireshard 传输层 telnet: 路径可达性测试 nc ...

  5. TCP中的MSS解读

    MSS 是TCP选项中最经常出现,也是最早出现的选项.MSS选项占4byte.MSS是每一个TCP报文段中数据字段的最大长度,注意:只是数据部分的字段,不包括TCP的头部.TCP在三次握手中,每一方都 ...

  6. [置顶] C/C++超级大火锅

    写在前面 最近接触到一些基础知识,平时遇到的编程困惑也加入其中.准确说是写给自己看的,但是如果大家可以借鉴就更好.多数是c/c++,也有少量Java基础和其他知识,貌似应该叫<计算机基础问题汇总 ...

  7. 网络原理 | TCP/IP中的连接管理机制 重要协议与核心机制

    应用层.传输层.网络层.数据链路层.物理层 一.应用层协议 应用层 是程序猿最最经常打交道的一层 其他四层,都是操作系统.驱动.硬件,实现好了的,咱们不需要管 (除非你是系统工程师,驱动开发工程师-- ...

  8. Netty常用招式——ChannelHandler与编解码

    本文是Netty系列第8篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件ChannelHandler和ChannelPipeline,并介绍了它在日常开发使用中的最佳实践.文中也提到了,Ch ...

  9. C/C++超级大火锅

    写在前面 最近接触到一些基础知识,平时遇到的编程困惑也加入其中.准确说是写给自己看的,但是如果大家可以借鉴就更好.多数是c/c++,也有少量java基础和其他知识,貌似应该叫<计算机基础问题汇总 ...

最新文章

  1. 结构化方法与面向对象方法之比较
  2. Python中的正则表达式(分组)
  3. 一个java文件中多个类
  4. springcloud初体验(一句话,真香!)
  5. 【渝粤教育】国家开放大学2018年秋季 2247T社会工作政策法规 参考试题
  6. [html] html标签的属性值是否可以省略引号?为什么?
  7. MySQL/MariaDB的response time插件
  8. linux内核工程师必须知道的三十道题
  9. redis常用内容信息:
  10. php画弧,75、PHP图像处理之画圆、弧线、网站饼状统计图绘制
  11. 层次分析法AHP及Python实现
  12. smartupload功能介绍
  13. Edsger W. Dijkstra -- 巨人的肩膀
  14. 【六】ubuntu发行版本构建工具
  15. React 调用手机,电脑摄像头扫描识别二维码
  16. SQLMap用户常用命令——1
  17. Excel实用技巧——甘特图展示项目排期
  18. 2021-07-07 - 使用脚本批量下载网页视频[如哔哩哔哩] - 学习/实践
  19. 第二天 05-安装win7系统与远程桌面开启
  20. Octave是什么,以及Octave online的使用(相当于open source的matlab)

热门文章

  1. 12.第五章 参数假设检验(1)
  2. docker打开2375监听端口
  3. Mac地址;Mac地址的分类
  4. 中国电信即将全面赶超中国联通,巩固第二大运营商地位
  5. 订单号创建(php)
  6. AutoML系列 | 03-神经网络架构搜索(NAS)综述
  7. Linux用户组和权限管理
  8. 简明python教程英语版_简明Python教程(A Byte of Python中文版)
  9. 用sql语句对数据库表中的数据进行增删改
  10. Linux的优缺点,Linux与windows的区别