主机A向主机B发送一个长度为L字节的文件,假设TCP的MSS为1460字节,则在TCP的序号不重复使用的前提下,L的最大值是多少?
📘题干回顾:
主机A向主机B发送一个长度为L字节的文件,假设TCP的MSS为1460字节,则在TCP的序号不重复使用的前提下,L的最大值是多少?
这个问题关键在于“TCP序号不重复使用”。
✅ 正确答案是:D. 2³² - 1
理由如下:
-
TCP的**序列号(Sequence Number)**是一个 32位无符号整数。
-
它表示TCP字节流中每个字节的编号,不是每个报文段,而是每个字节!
-
所以序列号的范围是:
0 到 2³²−1=42949672950 -
因为每一个字节都要有一个唯一序号,为了不重复使用,最多只能发送 2322^{32}232 个字节(包括0),也就是最多 2³² - 1 个字节数据。
❓你提到“三次握手需要占用一个序列号吗?”
是的!TCP三次握手中确实“消耗”了一个序列号,但:
在这道题中,它说的是“最大L值”,也就是理论上序号不重复能用的极限。
所以是从 某个初始序号 x 开始,最多能使用 2322^{32}232 个连续的序列号,也就是说最多能发送 2³² -1 字节的数据(一个序号用来表示第一个字节,最后一个是 2³² -1 )。
即便我们考虑三次握手时用掉1个序号,这也只是初始化时“浪费”1个序号而已,对最大L影响非常小,可以忽略。
✅结论:
-
序列号长度:32位
-
一个字节对应一个序号
-
最大L值 = 2³² - 1 字节
-
三次握手虽然用掉一个序号,但题目问的是理想最大值 L,因此答案仍然是 D. 2³² - 1