首先要说两个概念:

PDU:协议数据单元,计算机网络各层对等实体间交换的单位叫做PDU,不同层的PDU名称不同

名称
应用层 数据
传输层 段 segment
网络层 数据包 package
链路层 帧 frame
物理层 比特 bit

SDU:服务数据单元,它是指PDU的实际载荷(payload)

PDU和SDU有什么关系呢?

在每一层都有PDU和SDU,在本层中SDU加上额外协议信息构成本层的PDU,行话是同一层内的SDU是本层PDU的静荷载(payload),不同层之间,上层的PDU是下层的SDU。在上次向下层传输数据的时候,上层使用下层提供的数据接口给下层传递数据,而不同层之间的PDU转换是由下层完成的(这个转换是说对上一层传递过来的PDU进行包装变成本层的PDU也就是变成符合本层协议对数据的格式要求)。如果上层PDU超过下层SDU,那么本层就要把数据 切割成若干适合的片段再给下层(对本层的SDU切割,然后每个切割后的SDU加上本层的协议信息构成一个本层的PDU传递给下层,本层的PDU大小必须不能大于下一层的SDU)。

本层的PDU是由下层的SDU大小决定的,所以一直往下走就到了数据链路层,那么上次传递过来的单个PDU不能超过链路层的SDU,而链路层的PDU叫做帧,在以太网中它的MTU是1500,所以上层传递过来的单个PDU不能超过1500字节,IP首部站20个字节,TCP首部占20个字节,那由此得出TCP层的SDU为1460字节(也叫做MSS,最大消息长度),PDU为1480字节;IP层SDU为1480而PDU为1500.

TCP的MSS不是固定的它受对端影响,在TCP传输中MSS是通信双方协商而来的。下面看一下不同链路的MTU大小

数据链路 MTU bytes 总长度 bytes
IPv4 65535  
IPv6 65575  
以太网 1500 1518
FDDI 4352 4500
IEEE 802.3 1492 1581
PPPoE 1492  

传输层本身是没有长度限制的,但是在TCP首部的MSS选项中是一个16位字段最大值为65535字节,IP层也是是65535字节,所以它俩很合适,只是受到链路层影响才会导致传输层消息要分段以及IP报文要分片。因为以太网默认MTU1500,如果真有一个65535的IP报文的话那么它显然无法封装到单个帧里,所以就需要进行切割。这种切割可以在发送端完成也可以在传送过程中完成(路由器),但是重组肯定是在接收端。所以TCP/IP为了提高效率尽量避免IP分片和重组,所以TCP就根据MSS和MTU限定每个传输层的PDU大小,这样每一个PDU就是一个完整的PDU在传送过程中不会再被切割,接收端的传输层收到这些段之后进行数据重组,实际上MSS的目的也就是为了告诉对端我的重组缓冲区大小是多少。所以这也就是为什么在传输层有一个MSS的东西存在了,一句话就是向对端TCP告知对端在每个分段中能发送的最大TCP数据量,这个MSS是在双方建立TCP连接时协商出来的。MSS经常设置成MTU减去IP和TCP首部的固定长度,在以太网中是1460字节。

总结来看,MTU是死的由具体链路决定,而MSS是不固定的通过协商而来。但两个通信双方协商出来的MSS不会大于路径MTU(通信双发路径中最小的MTU,因为通信双方走的路可能不同,也就是A到B的路径与B到A的路径不一定相同)。

MTU MSS PDU SDU的更多相关文章

  1. MTU & MSS 详解记录(转)

              先学习理解一下帧的封装格式:   需要注意的是,区别两种帧封装格式:802标准帧和以太网帧 1,在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括C R C检验 ...

  2. (转)MTU&MSS

    MTU是Maximum Transmission Unit的缩写,意为最大传输单元,通俗的理解就是在网络上传送的最大数据包,单位是字节. 以太网对数据帧的长度都有一个限制,其最大值为1500,这个特性 ...

  3. MTU&MSS

    MTU是Maximum Transmission Unit的缩写,意为最大传输单元,通俗的理解就是在网络上传送的最大数据包,单位是字节. 以太网对数据帧的长度都有一个限制,其最大值为1500,这个特性 ...

  4. 可靠的UDP连接 & MTU MSS

    这个网页里面写了: http://blog.csdn.net/plusboy/article/details/1523308 其可靠性必须由上层应用实现.一般都会采用消息重传来实现其可靠性,采用消息重 ...

  5. 网站windows可以访问mac和linux无法访问【MTU MSS问题】

    环境: 阿里云LB 内网地址类型,代理后面的k8s上的服务 公司和阿里云之间vpn打通 在windows上进行访问一切正常,在相同的办公局域网linux主机内访问不通,mac笔记本访问同样不通,tel ...

  6. TCP/IP协议:最大传输单元MTU 和 最大分节大小MSS

    MTU = MSS + TCP Header + IP Header. mtu是网络传输最大报文包. mss是网络传输数据最大值. MTU:maximum transmission unit,最大传输 ...

  7. pppoe-环境下的mtu和mss

    路由器上在宽带拨号高级设置页面会有设置数据包MTU的页面 数据包MTU(字节):1480 (默认是1480,如非必要,请勿修改) PPPoE/ADSL:1492 ,可以尝试修改为1492 MTU: M ...

  8. 一次由于 MTU 设置不当导致的网络访问超时

    转自:http://weibo.com/ttarticle/p/show?id=2309404140904511340923 API 服务正常,但是调用总是超时.api端日志显示,响应速度很快. ​​ ...

  9. 关于TCP中的MSS

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

随机推荐

  1. Linux grep 命令详解

    简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能 ...

  2. PBRT笔记(14)——光线传播2:体积渲染

    传输公式 传输方程是控制光线在吸收.发射和散射辐射的介质中的行为的基本方程.它解释了第11章中描述的所有体积散射过程--吸收.发射和内.外散射.并给出了一个描述环境中辐射分布的方程.光传输方程实际上是 ...

  3. go http

    先看一个简单的 tcp 连接: // server ln, err := net.Listen("tcp", ":8000") if err != nil {} ...

  4. copy与mutableCopy的区别总结

    1.不可变类型(不管是集合还是非集合),copy结果,不产生新对象,浅拷贝:不可变类型(不管是集合还是非集合),mutableCopy结果,产生新对象,深拷贝.2.可变类型(不管是集合还是非集合),c ...

  5. 封装ajax原理

    封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...

  6. 2019中山大学程序设计竞赛-Monitor

    题目地址 题目大意:给你一个n*m的矩形,在这个矩形内告诉你p个矩形(左下角和右上角坐标),问你q个问题,每次也是给你一个矩形(左下角和右上角坐标),问你每个矩形是否可以被开始给的p个矩形完全覆盖. ...

  7. zstd --压缩工具

    Zstandard (也被称为zstd )是一款免费的开源,快速实时数据压缩程序,具有更好的压缩比 (约为 10:1). 安装 yum group install "Development ...

  8. [LeetCode] Length of Longest Fibonacci Subsequence 最长的斐波那契序列长度

    A sequence X_1, X_2, ..., X_n is fibonacci-like if: n >= 3 X_i + X_{i+1} = X_{i+2} for all i + 2 ...

  9. iNode客户端“未收到服务器回应,即将强行下线,请检查终端能否正常访问网络或者与管理员联系”问题与解决方式

    最后在华工校园网用户故障自助手册中找到答案,参考链接: https://max.book118.com/html/2015/0115/11423952.shtm https://wenku.baidu ...

  10. OO第一次博客作业

    OO第一次博客作业 一.三次作业的bug反省 1.自己发现别人的问题 (1)输入处理的问题,比如第一次作业,主要就是处理输入的字符串,然后有同学的正则表达式有问题,则对于一些错误输入就不能正确判断. ...