以下是TCP頭部結構:
16位埠號:告知主機該報文段是來自哪裡(源埠Source Port)以及傳給哪個上層協議或應用程式(目的埠Destination Port)的。進行TCP通訊時,客戶端通常使用系統自動選擇的臨時埠號,而伺服器則使用知名服務埠號(比如DNS協議對應埠53,HTTP協議對應80,這些埠號可在/etc/services檔案中找到)。
32位序號:一次TCP通訊(從TCP連線建立到斷開)過程中某一個傳輸方向上的位元組流的每個位元組的編號。假設主機A和主機B進行TCP通訊,A傳送給B的第一個TCP報文段中,序號值被系統初始化為某個隨機值ISN(Initial Sequence Number,初始序號值)。那麼在該傳輸方向上(從A到B),後續的TCP報文段中序號值將被系統設定成ISN加上該報文段所攜帶資料的第一個位元組在整個位元組流中的偏移。例如,某個TCP報文段傳送的資料是位元組流中的第1025~2048位元組,那麼該報文段的序號值就是ISN+1025.另外一個傳輸方向(從B到A)的TCP報文段的序號值也具有相同的含義。
32位確認號(acknowledgement number):用作對另一方傳送來的TCP報文段的響應。其值是收到的TCP報文段的序號值加1。假設主機A和主機B進行TCP通訊,那麼A傳送出的TCP報文段不僅攜帶自己的序號,而且包含對B傳送來的TCP報文段的確認號。反之,B傳送出的TCP報文段也同時攜帶自己的序號和對A傳送來的報文段的確認號。
4位頭部長度(header length):標識該TCP頭部有多少個32bit字(4位元組)。因為4位最大能標識15,所以TCP頭部最長是60位元組。
6位標誌位包含如下幾項:
URG標誌,表示緊急指標(urgent pointer)是否有效。
ACK標誌,表示確認號是否有效。我們稱攜帶ACK標識的TCP報文段為確認報文段。
PSH標誌,提示接收端應用程式應該立即從TCP接收緩衝區中讀走資料,為接收後續資料騰出空間(如果應用程式不將接收
到的資料讀走,它們就會一直停留在TCP接收緩衝區中)。
RST標誌,表示要求對方重新建立連線。我們稱攜帶RST標誌的TCP報文段為復位報文段。
SYN標誌,表示請求建立一個連線。我們稱攜帶SYN標誌的TCP報文段為同步報文段。
FIN標誌,表示通知對方本端要關閉連線了。我們稱攜帶FIN標誌的TCP報文段為結束報文段。
16位視窗大小(window size):是TCP流量控制的一個手段。這裡說的視窗,指的是接收通告視窗(Receiver Window,RWND)。它告訴對方本端的TCP接收緩衝區還能容納多少位元組的資料,這樣對方就可以控制傳送資料的速度。
16位校驗和(TCP check sum):由傳送端填充,接收端對TCP報文段執行CRC演算法以檢驗TCP報文段在傳輸過程中是否損壞。注意,這個校驗不僅包括TCP頭部,也包括資料部分。這也是TCP可靠傳輸的一個重要保障。
16位緊急指標(urgent pointer):是一個正的偏移量。它和序號欄位的值相加表示最後一個緊急資料的下一位元組的序號。因此,確切地說,這個欄位是緊急指標相對當前序號的偏移,不妨稱之為緊急偏移。TCP的緊急指標是傳送端向接收端傳送緊急資料的方法。
TCP頭部選項:TCP頭部的最後一個選項欄位(options)是可變長的可選資訊。這部分最多包含40位元組,因為TCP頭部最長是60位元組
以下是TCP頭部結構:
16位埠號:告知主機該報文段是來自哪裡(源埠Source Port)以及傳給哪個上層協議或應用程式(目的埠Destination Port)的。進行TCP通訊時,客戶端通常使用系統自動選擇的臨時埠號,而伺服器則使用知名服務埠號(比如DNS協議對應埠53,HTTP協議對應80,這些埠號可在/etc/services檔案中找到)。
32位序號:一次TCP通訊(從TCP連線建立到斷開)過程中某一個傳輸方向上的位元組流的每個位元組的編號。假設主機A和主機B進行TCP通訊,A傳送給B的第一個TCP報文段中,序號值被系統初始化為某個隨機值ISN(Initial Sequence Number,初始序號值)。那麼在該傳輸方向上(從A到B),後續的TCP報文段中序號值將被系統設定成ISN加上該報文段所攜帶資料的第一個位元組在整個位元組流中的偏移。例如,某個TCP報文段傳送的資料是位元組流中的第1025~2048位元組,那麼該報文段的序號值就是ISN+1025.另外一個傳輸方向(從B到A)的TCP報文段的序號值也具有相同的含義。
32位確認號(acknowledgement number):用作對另一方傳送來的TCP報文段的響應。其值是收到的TCP報文段的序號值加1。假設主機A和主機B進行TCP通訊,那麼A傳送出的TCP報文段不僅攜帶自己的序號,而且包含對B傳送來的TCP報文段的確認號。反之,B傳送出的TCP報文段也同時攜帶自己的序號和對A傳送來的報文段的確認號。
4位頭部長度(header length):標識該TCP頭部有多少個32bit字(4位元組)。因為4位最大能標識15,所以TCP頭部最長是60位元組。
6位標誌位包含如下幾項:
URG標誌,表示緊急指標(urgent pointer)是否有效。
ACK標誌,表示確認號是否有效。我們稱攜帶ACK標識的TCP報文段為確認報文段。
PSH標誌,提示接收端應用程式應該立即從TCP接收緩衝區中讀走資料,為接收後續資料騰出空間(如果應用程式不將接收
到的資料讀走,它們就會一直停留在TCP接收緩衝區中)。
RST標誌,表示要求對方重新建立連線。我們稱攜帶RST標誌的TCP報文段為復位報文段。
SYN標誌,表示請求建立一個連線。我們稱攜帶SYN標誌的TCP報文段為同步報文段。
FIN標誌,表示通知對方本端要關閉連線了。我們稱攜帶FIN標誌的TCP報文段為結束報文段。
16位視窗大小(window size):是TCP流量控制的一個手段。這裡說的視窗,指的是接收通告視窗(Receiver Window,RWND)。它告訴對方本端的TCP接收緩衝區還能容納多少位元組的資料,這樣對方就可以控制傳送資料的速度。
16位校驗和(TCP check sum):由傳送端填充,接收端對TCP報文段執行CRC演算法以檢驗TCP報文段在傳輸過程中是否損壞。注意,這個校驗不僅包括TCP頭部,也包括資料部分。這也是TCP可靠傳輸的一個重要保障。
16位緊急指標(urgent pointer):是一個正的偏移量。它和序號欄位的值相加表示最後一個緊急資料的下一位元組的序號。因此,確切地說,這個欄位是緊急指標相對當前序號的偏移,不妨稱之為緊急偏移。TCP的緊急指標是傳送端向接收端傳送緊急資料的方法。
TCP頭部選項:TCP頭部的最後一個選項欄位(options)是可變長的可選資訊。這部分最多包含40位元組,因為TCP頭部最長是60位元組