TCP報文


 

源端口和目的端口

    各占16位 ,服務相對應的源端口和目的端口。

 

序列號

      占32位,它的范圍在[0~2^32-1],序號隨着通信的進行不斷的遞增,當達到最大值的時候重新回到0在開始遞增。TCP是面向字節流的,在一個TCP連接中傳送的字節流中的每一個字節都按照順序編號。整個要傳送的字節流的起始號必須在連接建立時設置。下個序列號(發送)等於上個序列號(接受)加上報文長度。

 

確認號

       占32位,用於確認對上個數據包接收成功。確認號(發送)等於上個序列號(接受)加一

 

數據偏移:

       占4位,指出TCP報頭從起始端到數據端的距離,該字段描述了TCP報頭的長度。由於option字段的存在,所以TCP報頭的長度往往是不確定的,因此該字段很有存在的必要了。需要注意的是“數據偏移”計算的單位是32位字(即4個字節為一個計算單位)。因此“數據偏移”有4個位所以能夠表達的最大的十進制為15,也就說TCP報頭的最大長度為60字節。

 

保留位:

      占6位,保留為今后使用,目前該字段為全0.

 

標志位:

      占6位,用於標志數據包

URG:  字段為1時緊急發送數據。相當於提高數據發送的優先級,不按照原來隊列順序來進行發送,同時啟用緊急指針。

ACK: 該字段為1時表示確認號有效,當該位為0是表示確認號無效。TCP規定,建立鏈接后所有數據報文段ACK都設為1。

PSH:  該字段為1時緊急接收數據。該字段允許數據包不需要等到接收端的緩存(窗口)滿了后才上交數據,而是直接上交數據。

 

RST: 該字段為1時表示該連接出現嚴重的錯誤,必須釋放該連接再重新建立連接進行數據傳輸。RST置1還用來拒絕一個非法的報文段或拒絕打開一個連接。

SYN: 該字段位1時表示發送連接請求,用來在建立連接時進行同步序號。

FIN: 該字段為1時表示發送釋放請求,用於釋放當前的連接。

 

窗口:

   占16位。窗口指的是接收窗口。用於限制發送方當前允許發送的數據量。這是因為接收方的數據緩存空間是有限的。

 

檢驗和:

   占16位。檢驗和字段檢驗的范圍包括首部和數據兩部分。

 

緊急指針:

   占16位。當URG=1的時候才生效,它指出本報文段中的緊急數據的字節數(緊急數據結束后就是普通數據)。因此緊急指針指出了緊急數據的末尾報文段中的位置。當所有的緊急數據都處理完畢時,TCP就告訴應用程序恢復正常的操作。

 

選項:

   長度可變,最長可達40字節(320位)。當沒有使用option字段的時候TCP報文首部長度為20字節。

 

流量控制:

  發送端發送的流量不可以無限大,因為接收端的緩存區是有限的,因此需要在TCP報文當中添加windows字段

windows字段可以表示當前發送的流量大小,如果發送的流量大於接收端處理流量的緩存,接收端會在回復TCP報文

時置窗口大小為自身所能處理的大小。這樣下次發送端會依照此窗口大小來調整所發的數據流量大小,避免重復丟包。

另外當發送端剛好發完一次窗口大小的流量,那么他會等待接收端的確認包后才繼續下次發送。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM