📘題干回顧:
主機A向主機B發送一個長度為L字節的文件,假設TCP的MSS為1460字節,則在TCP的序號不重復使用的前提下,L的最大值是多少?
這個問題關鍵在于“TCP序號不重復使用”。
? 正確答案是:D. 232 - 1
理由如下:
-
TCP的**序列號(Sequence Number)**是一個 32位無符號整數。
-
它表示TCP字節流中每個字節的編號,不是每個報文段,而是每個字節!
-
所以序列號的范圍是:
0?到?232?1=42949672950? -
因為每一個字節都要有一個唯一序號,為了不重復使用,最多只能發送 2322^{32}232 個字節(包括0),也就是最多 232 - 1 個字節數據。
?你提到“三次握手需要占用一個序列號嗎?”
是的!TCP三次握手中確實“消耗”了一個序列號,但:
在這道題中,它說的是“最大L值”,也就是理論上序號不重復能用的極限。
所以是從 某個初始序號 x 開始,最多能使用 2322^{32}232 個連續的序列號,也就是說最多能發送 232 -1?字節的數據(一個序號用來表示第一個字節,最后一個是?232 -1?)。
即便我們考慮三次握手時用掉1個序號,這也只是初始化時“浪費”1個序號而已,對最大L影響非常小,可以忽略。
?結論:
-
序列號長度:32位
-
一個字節對應一個序號
-
最大L值 = 232 - 1 字節
-
三次握手雖然用掉一個序號,但題目問的是理想最大值 L,因此答案仍然是 D. 232 - 1