TCP報文格式

TCP(Transmission Control Protocol)傳輸控制協議是一種面向鏈接的、可靠的、基於字節流的傳輸層協議。報文格式以下:
image.png
一、源端口號、目的端口號同IP數據報中的源IP與目的IP惟一肯定一條TCP鏈接。
二、序號(4字節)與確認序號(4字節):是TCP可靠傳輸的關鍵部分。序號是本報文段發送的數據組的第一個字節的序號。在TCP傳送的流中,每個字節一個序號。確認序號,即ACK,指明下一個期待收到的字節序號,代表該序號以前的全部數據已經正確無誤的收到。確認序號只有當ACK標誌爲1時纔有效。好比創建鏈接時,SYN報文的ACK標誌位爲0。
三、首部長度(4位):以4字節爲單位,因爲首部可能含有可選項內容,所以TCP報頭的長度是不肯定的,報頭不包含任何可選字段則長度爲20字節,4位首部長度字段所能表示的最大值爲1111,10進製爲15,15*4 = 60,故報頭最大長度爲60字節。
四、保留:爲未來定義新的用途保留,通常置0。
五、控制位:URG ACK PSH RST SYN FIN,共6個,每個標誌位表示一個控制功能。
1)URG:緊急指針標誌,爲1時表示緊急指針有效,爲0則忽略緊急指針。
2)ACK:確認序號標誌,爲1時表示確認號有效,爲0表示報文中不含確認信息,忽略確認號字段。
3)PSH:push標誌,爲1表示是帶有push標誌的數據,指示接收方在接收到該報文段之後,應儘快將這個報文段交給應用程序,而不是在緩衝區排隊。
4)RST:重置鏈接標誌,用於重置因爲主機崩潰或其餘緣由而出現錯誤的鏈接。或者用於拒絕非法的報文段和拒絕鏈接請求。
5)SYN:同步序號,用於創建鏈接過程。
6)FIN:finish標誌,用於釋放鏈接,爲1時表示發送方已經沒有數據發送了,即關閉本方數據流。
六、窗口:滑動窗口大小,用來告知發送端接受端的緩存大小,以此控制發送端發送數據的速率,從而達到流量控制。窗口大小是一個16bit字段,於是窗口大小最大爲65535。
七、校驗和:奇偶校驗,此校驗和是對整個的 TCP 報文段,包括 TCP 頭部和 TCP 數據,以 16 位字進行計算所得。由發送端計算和存儲,並由接收端進行驗證。
八、緊急指針:只有當 URG 標誌置 1 時緊急指針纔有效。緊急指針是一個正的偏移量,和順序號字段中的值相加表示緊急數據最後一個字節的序號。 TCP 的緊急方式是發送端向另外一端發送緊急數據的一種方式。
九、選項和填充:最多見的可選字段是最長報文大小,又稱爲MSS(Maximum Segment Size),每一個鏈接方一般都在通訊的第一個報文段(爲創建鏈接而設置SYN標誌爲1的那個段)中指明這個選項,它表示本端所能接受的最大報文段的長度。另外也會保存2個4字節的時間戳,包括本方的當前時間戳與對端的接受到的最新時間戳。選項長度不必定是32位的整數倍,因此要加填充位,即在這個字段中加入額外的零,以保證TCP頭是32的整數倍。緩存

相關文章
相關標籤/搜索