答案

一个TCP报文最多传输多少字节(即MSS)?
答案:1440

分析

报文头的长度
TCP: 58 = 18+20+20
UDP: 46 = 18+20+8

其中链路层:18,IP层:20, TCP:32 UDP:8,如下图:(各协议的报文详情见附录)

但我们通常说得MTU(最大传输单元)并不包括链路层,那么:
TCP: 40 = 20+20
UDP: 28 = 20+8

有些想象力丰富的小朋友会发现,链路层的协议上写着数据段大小是46-1500会不会是弄错了?
答:其实这个46和UDP没有一毛钱关系。因为链路层传输字段的最小长度是64,链路协议占了18,64-18=46。也就是说,不管你发不发数据,这个46的长度是少不了的。

MTU的长度:
以太网限制长度:1500
IEEE 802.3要求长度:1492

取较小值,也就是真正用来传输数据的长度:
1452 = 1492 - 40
百度百科参考的一般值:
1460 = 1500 - 40

TCP头的最大长度是60,因为偏移位占4bit最大值为15,表示TCP包头长度,单位4字节(32bit),因此TCP头最多长60字节。

所以我们经常抓包的时候会发现,MSS有时会是1440这个数,表示TCP包头占了60字节。当然经过复杂的网络环境MSS会更小。

附录





参考网址

https://blog.csdn.net/xiaofei0859/article/details/51052848
https://www.cnblogs.com/qinqin-me/p/12942225.html
https://blog.csdn.net/baidu_17611285/article/details/80171239

posted on 2020-06-01 15:02  步孤天  阅读(12768)  评论(2编辑  收藏  举报