TCP協議數據格式


TCP協議間交換的數據單元稱為“TCP段”,包括兩部分:首部和數據。標准首部長20字節,帶有選項的首部會更長。

 

1. 源端口和目的端口

各占2字節,端口號加上IP地址,共同構成socket。互相通信的進程使用一對socket,包括協議、源IP、源端口、目的IP、目的端口,這五個元素唯一確定一個TCP連接。

2. 序號

占4字節,是TCP段所發送的數據部分第一個字節的序號。在TCP傳送的數據流中,每一個字節都有一個序號。建立連接時,發送方將初始序號(Initial Sequence Number, ISN)填寫到第一個發送的TCP段序號中。

3. 確認號

占4字節,是期望收到對方下次發送的數據的第一個字節的序號,也就是期望收到的下一個TCP段的首部中的序號,等於已經成功收到的TCP段的最后一個字節序號加1。確認號在ACK標志為1時有意義,除了主動發起連接的第一個TCP段不設置ACK標志外,其后發送的TCP段都會設置ACK標志。

4. 數據偏移

占4比特,表示數據開始的地方離TCP段的起始處有多遠。實際上就是TCP段首部的長度。由於首部長度不固定,因此數據偏移字段是必要的。數據偏移以32位為長度單位,因此TCP首部的最大長度是60(15*4)個字節。

5. 控制位

一共6個,占6比特,設置為1時有效。按順序依次為:URG、ACK、PSH、RST、SYN、FIN。

URG

緊急位,為1時,首部中的緊急指針有效

ACK

確認位,為1時,首部中的確認號有效

PSH

推位,為1時,要求把數據盡快交給應用程序

RST

復位標志,為1時,復位連接,一般在出錯或關閉連接時使用

SYN

同步位,在建立連接時使用,當SYN=1而ACK=0時,表明這是一個連接請求報文段。對方若同意建立連接,在發回的報文段中使SYN=1和ACK=1

FIN

結束位,為1時,表示發送方完成了數據發送

6. 窗口

占2字節,表示報文段發送方期望接收的字節數,可接收的序號范圍是從接收方的確認號開始到確認號加上窗口大小之間的數據。

7. 校驗和

校驗和包含了偽首部、TCP首部和數據,校驗和是TCP強制要求的,由發送方計算,接收方驗證。

8. 緊急指針

URG標志為1時,緊急指針有效,表示數據需要優先處理。緊急指針指出在TCP段中的緊急數據的最后一個字節的序號,使接收方可以知道緊急數據共有多長。

9. 選項

最常用的選項是最大段大小(Maximum Segment Size,MSS),向對方通知本機可以接收的最大TCP段長度。MSS選項只在建立連接的請求中發送。


免責聲明!

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



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