网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

如何在TCP中计算最大段大小?

更新时间:2026年03月27日   作者:spoto   标签(Tag):

“最大段大小”指的是本地主机在单个数据包中能够接受的最大数据段的大小。也就是说,它代表了主机在单个TCP数据中能够接收的最大数据量。

为了建立TCP连接,发送方和接收方都需要指定自己能够接受的最大数据包大小。在通过TCP连接传输数据包时,发送方会根据接收到的MSS值来缩小数据包的大小。这对于那些内存有限的设备来说非常有用,因为它允许这些设备自行设定所接收数据包的最大大小。

网络驱动程序能够了解直接连接到的网络的“最大传输单元”大小。所谓“最大传输单元”,指的是能够在数据链路层上传输的最大帧大小。IP协议会从网络驱动程序中获取“最大传输单元”的值,然后利用该值来计算“最大数据报数据大小”。

MDDS = MTU - IP_HL

where,
MDDS = Maximum Datagram Size
MTU = Maximum Transmission Unit
IP_HL = IP Header Length

“最大数据报数据大小”指的是在IP数据包中可以接收的最大数据量。

现在,TCP会从IP那里获取“最大数据报数据大小”的值,然后利用该值来计算“最大分段大小”。

MSS = MDDS - TCP_HL

where,
MSS = Maximum Segment Size
MDDS = Maximum Datagram Data Size
TCP_HL = TCP Header Length

示例:假设最大传输单元的有效载荷为1500B,头部包含有关数据包数量的信息,而尾部则表示数据链路层中的数据包传输结束。另外,TCP和IP头部的长度均为20B。因此,我们可以通过以下步骤来确定最大段大小:

  1. 网络层接收的载荷为1500B。其中,最大数据报数据大小为1480B,另外还有20B用于存储IP头部信息。这意味着,通过网络层传输的IP数据包可以携带最多1480B的信息,同时还有20B的空间用于存储诸如IP版本、源地址、目标地址以及数据包的生存时间等相关信息。
  2. 在传输层接收到的有效载荷为1480B。其中,1460B用于存储数据信息,而剩下的20B则用于存储TCP头部信息。这意味着,通过传输层发送的TCP数据包可以携带最多1460B的数据信息,同时还有20B的空间用于存储诸如源端口、目标端口、序列号、确认号、头部长度、校验和、窗口大小、紧急指针以及保留位等关键信息。

因此,最大分段大小将为1460B。也就是说,单个TCP数据包中可以传输1460B的数据。

在选择最大段大小时,必须考虑以下性能问题:

  1. 管理费用管理:如果MSS值过低,那么带宽的使用效率就会大大降低。因为存储在那个段中的数据量其实与头部数据相比微不足道,这显然是不合理的。
  2. IP分片:如果MSS过大,那么就会产生大量的IP数据报。这些数据报在传输之前需要进行分片处理。而分片处理会降低效率,同时还会增加TCP数据包中的部分内容丢失的可能性,最终导致整个数据包需要被重新传输。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料