16位源端口號 |
16位目的端口號 |
|||||||
32位序列號 |
||||||||
32位確認序列號 |
||||||||
4位頭部長度 |
保留6位 |
U R G |
A C K |
P S H |
R S T |
S Y N |
F I N |
16位窗口大小 |
16位檢驗和 |
16位緊急指針 |
|||||||
可選項 |
||||||||
數據 |
源端口: 長度為16位,2個字節。
目的端口: 長度為16位,2個字節。
IP實現了點到點的數據通信,而TCP實現的是端到端的通信。
通信端用一個IP與端口號來唯一標識。(其實端口號就是用來標識同一主機中的不同進程。)
IP協議負責將數據傳輸到目標主機,而TCP可以根據數據報中的端口號,將數據交給相應的程序進行處理。
序列號: 長度32位,4個字節。
確認序列號:長度32位,4個字節。
頭部長度:該字段占用4位,用來表示報文首部的長度,單位是4Byte。如:headLen = ((packet[12]>>4)&0x0F)*4;
預留6位:長度為6位,作為保留字段,暫時沒有什么用處。
URG:長1位,表示緊急指針字段有效;
ACK:長1位,置位表示確認號字段有效;
PSH:長1位,表示當前報文需要請求推(push)操作;
RST:長1位,置位表示復位TCP連接;
SYN:長1位,用於建立TCP連接時同步序號;
FIN:長1位,用於釋放TCP連接時標識發送方比特流結束;
————該6位字段,理解不深,留作日后研究???
窗口大小:長度為16位,2個字節。
校驗和:長度為16位,2個字節。
緊急指針:長度為16位,2個字節。
以上是TCP包頭必須要有的字段,也稱固有字段,長度為20個字節。
可選項:此項是可選項(可有可無),解包時得具體分析(是TCP包頭的一部分)。