
看下圖,取自 Ilya Grigorik - High Performance Browser Networking 一書,我可以理解 SYN 封包選擇一個隨機序號,該序號在 SYN ACK 封包 (N+1) 中遞增。最後,在 ACK 封包中,序號 (N+1) 和確認號 (N+1) 都會遞增。
使用 Wireshark 進行測試時,我得到的 ACK 封包的確認號碼 = N+1 但序號=N。當作者說在 ACK 封包中序號和確認號都會遞增時,這是一個錯誤嗎?
答案1
RFC 793狀態反覆確認號是序號該端期望接收的下一個資料包。因此它總是高於序號。
例如,在第 2.6 節:
段還攜帶確認號,該確認號是反向傳輸的下一個預期資料八位組的序號。
在第 3.1 節:
確認號:32 位元
如果設定了 ACK 控制位,則該欄位包含該段的發送方期望接收的下一個序號的值。一旦建立連接,就會始終發送該連接。
3.3 節詳細解釋了序號如何運作,以及為什麼它們這樣運作。您可能會發現它比您的書更有啟發性。