網絡學習筆記四、數據包說明筆記

1. 源端口號( 16 位)

它(連同源主機 IP 地址)標識源主機的一個應用進程。

2. 目的端口號( 16 位)

它(連同目的主機 IP 地址)標識目的主機的一個應用進程。這兩個值 加上 IP 報頭中的源主機 IP 地址和目的主機 IP 地址唯一確定一個 TCP 連接。

3. 順序號 seq( 32 位)

用來標識從 TCP 源端向 TCP 目的端發送的數據字節流,它表示在這個 報文段中的第一個數據字節的順序號。如果將字節流看作在兩個應用程序間的單向流動,則 TCP 用順序號對每個字節進行計數。序號是 32bit 的無符號數,序號到達 2 的 32 次方 - 1 後 又從 0 開始。當建立一個新的連接時, SYN 標誌變 1 ,順序號字段包含由這個主機選擇的該 連接的初始順序號 ISN ( Initial Sequence Number )。

4. 確認號 ack( 32 位)

包含發送確認的一端所期望收到的下一個順序號。因此,確認序號應當 是上次已成功收到數據字節順序號加 1 。只有 ACK 標誌爲 1 時確認序號字段纔有效。 TCP 爲 應用層提供全雙工服務,這意味數據能在兩個方向上獨立地進行傳輸。因此,連接的每一端必 須保持每個方向上的傳輸數據順序號。

5. TCP 報頭長度( 4 位)

給出報頭中 32bit 字的數目,它實際上指明數據從哪裏開始。需要這 個值是因爲任選字段的長度是可變的。這個字段佔 4bit ,因此 TCP 最多有 60 字節的首部。然 而,沒有任選字段,正常的長度是 20 字節。

6. 保留位( 6 位)

保留給將來使用,目前必須置爲 0 。

7. 控制位( control flags , 6 位)

在 TCP 報頭中有 6 個標誌比特,它們中的多個可同時被設 置爲 1 。依次爲:

1) URG :爲 1 表示緊急指針有效,爲 0 則忽略緊急指針值。 

2)ACK :爲 1 表示確認號有效,爲 0 表示報文中不包含確認信息,忽略確認號字段。

3) PSH :爲 1 表示是帶有 PUSH 標誌的數據,指示接收方應該儘快將這個報文段交給應用層 而不用等待緩衝區裝滿。

4)RST :用於復位由於主機崩潰或其他原因而出現錯誤的連接。它還可以用於拒絕非法的報 文段和拒絕連接請求。一般情況下,如果收到一個 RST 爲 1 的報文,那麼一定發生了某些 問題。

 5)SYN :同步序號,爲 1 表示連接請求,用於建立連接和使順序號同步( synchronize )。

6)FIN :用於釋放連接,爲 1 表示發送方已經沒有數據發送了,即關閉本方數據流。

8. 窗口大小( 16 位)

數據字節數,表示從確認號開始,本報文的源方可以接收的字節數,即源 方接收窗口大小。窗口大小是一個 16bit 字段,因而窗口大小最大爲 65535 字節。

9. 校驗和( 16 位)

此校驗和是對整個的 TCP 報文段,包括 TCP 頭部和 TCP 數據,以 16 位字 進行計算所得。這是一個強制性的字段,一定是由發送端計算和存儲,並由接收端進行驗證。

10. 緊急指針( 16 位)

只有當 URG 標誌置 1 時緊急指針纔有效。TCP 的緊急方式是發送端向另 一端發送緊急數據的一種方式。

11. 選項

最常見的可選字段是最長報文大小,又稱爲 MSS(Maximum Segment Size) 。每個連 接方通常都在通信的第一個報文段(爲建立連接而設置 SYN 標誌的那個段)中指明這個選項, 它指明本端所能接收的最大長度的報文段。選項長度不一定是 32 位字的整數倍,所以要加填充 位,使得報頭長度成爲整字數。

12. 數據

TCP 報文段中的數據部分是可選的。在一個連接建立和一個連接終止時,雙方交換的報 文段僅有 TCP 首部。如果一方沒有數據要發送,也使用沒有任何數據的首部來確認收到的數 據。在處理超時的許多情況中,也會發送不帶任何數據的報文段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章