在网络分层体系中,每一层处理的数据单元统一称为 PDU(协议数据单元),具体到某些层分别为:
层 | 概念 |
---|---|
运输层:TCP | 节:Segment |
网络层:IP | IP 数据报 |
链路层:DLL | 帧:Frame |
MSS:Max Segment Size,最大分节大小,不包括 TCP 首部大小,这是运输层协议的一个选项,表示发送 SYN 的 TCP 一端使用该选项通告对端,
发送 SYN 端视角:我在咱们这次 TCP 连接中可接受的分节的最大数据量就是它(MSS)。如果本端需要发送的数据量大于 MSS,那么就会在 TCP 层被分片到 MSS 以下的多个节,然后再输出到 IP 层,依次类推。
接收 SYN 端视角:万一 MSS 选项没有被设置呢,这时候本端就会使用 536 这个值,这个值的来源在于 IPv4 有一个最小重组缓冲区大小,其值为 576 字节,是 IPv4 的任何实现都必须保证支持的最小 IP 数据报大小,IPv6 对应的值为 1500 字节。
从运输层到 IP 层,PDU 增加了 IP 首部,20字节,因此 TCP 包为 556 字节,再去掉首部 20 字节,即为最小的 MSS,即 536 字节。