一、TCP協議簡介
TCP,全稱Transfer Control Protocol,中文名爲傳輸控制協議,它工作在OSI的傳輸層,提供面向連接的可靠傳輸服務。
TCP的工作主要是建立連接,然後從應用層程序中接收數據並進行傳輸。TCP採用虛電路連接方式進行工作,在發送數據前它需要在發送方和接收方建立一個連接,數據在發送出去後,發送方會等待接收方給出一個確認性的應答,否則發送方將認爲此數據丟失,並重新發送此數據。
下面我們來介紹一下TCP的報頭結構和相關工作原理:
1.TCP協議報頭
TCP報頭總長最小爲20個字節,其報頭結構如下圖(圖1)所示;
比特0 比特15 比特16 比特31
源端口(16) | 目的端口(16) | ||
序列號(32) | |||
確認號(32) | |||
TCP偏移量(4) | 保留(6) | 標誌(6) | 窗口(16) |
校驗和(16) | 緊急(16) | ||
選項(0或32) | |||
數據(可變) | |||
(圖1 TCP報頭結構)
源端口:指定了發送端的端口
目的端口:指定了接受端的端口號
序號:指明瞭段在即將傳輸的段序列中的位置
確認號:規定成功收到段的序列號,確認序號包含發送確認的一端所期望收到的下一個序號
TCP偏移量:指定了段頭的長度。段頭的長度取決與段頭選項字段中設置的選項
保留:指定了一個保留字段,以備將來使用
標誌:SYN、ACK、PSH、RST、URG、FIN
SYN: 表示同步
ACK: 表示確認
PSH: 表示儘快的將數據送往接收進程
RST: 表示復位連接
URG: 表示緊急指針
FIN: 表示發送方完成數據發送
窗口:指定關於發送端能傳輸的下一段的大小的指令
校驗和:校驗和包含TCP段頭和數據部分,用來校驗段頭和數據部分的可靠性
緊急:指明段中包含緊急信息,只有當U R G標誌置1時緊急指針纔有效
選項:指定了公認的段大小,時間戳,選項字段的末端,以及指定了選項字段的邊界選項
2.TCP工作原理l TCP連接建立:TCP的連接建立過程又稱爲TCP三次握手。首先發送方主機向接收方主機發起一個建立連接的同步(SYN)請求;接收方主機在收到這個請求後向送方主機回覆一個同步/確認(SYN/ACK)應答;發送方主機收到此包後再向接收方主機發送一個確認(ACK),此時TCP連接成功建立;
l TCP連接關閉:發送方主機和目的主機建立TCP連接並完成數據傳輸後,會發送一個將結束標記置1的數據包,以關閉這個TCP連接,並同時釋放該連接佔用的緩衝區空間;
l TCP重置:TCP允許在傳輸的過程中突然中斷連接,這稱爲TCP重置;
l TCP數據排序和確認:TCP是一種可靠傳輸的協議,它在傳輸的過程中使用序列號和確認號來跟蹤數據的接收情況;
l TCP重傳:在TCP的傳輸過程中,如果在重傳超時時間內沒有收到接收方主機對某數據包的確認回覆,發送方主機就認爲此數據包丟失,並再次發送這個數據包給接收方,這稱爲TCP重傳;
l TCP延遲確認:TCP並不總是在接收到數據後立即對其進行確認,它允許主機在接收數據的同時發送自己的確認信息給對方。
l TCP數據保護(校驗和):TCP是可靠傳輸的協議,它提供校驗和計算來實現數據在傳輸過程中的完整性。
二、TCP解碼
要看懂TCP解碼信息,就必須清楚知道TCP工作原理和TCP報頭的相關字段信息。
下面我們就通過科來網絡分析系統中的解碼信息來認識TCP協議的報頭。如下圖(圖2)。
上圖顯示了TCP協議中報頭中字段的詳細信息,這裏的解碼信息完全和TCP報頭結構相吻合,下面我們分別來介紹解碼視圖中的信息:
1. 源端口:1041,偏移量爲34,值爲2個字節;
2. 目標端口:5001,端口名爲 complex-link,偏移量爲36,值爲2個字節;
3. 序列號:TCP數據包序列號爲148694863,偏移量38,值爲4個字節;
4. 確認號:確認號爲387135032,偏移量爲42,值爲4個字節;
5. TCP偏移量:TCP偏移量爲5,偏移量爲46,值爲4位
6. 標誌:PSH和ACK的值爲1,這是一個確認包,收到的有效段立即發給應用,不要放入緩衝區
7. 窗口:表示接收端能夠接收的下一段的大小64124。
8. 校驗和:校驗和爲0x10D4(正確),表示數據沒有被修改和損壞,是完整的。
9. 緊急指針:因爲標誌字段中URG標誌位的值爲0,所以這裏無緊急指針
10. 無TCP選項:無選項內容
以上爲實際抓取的一個TCP數據包,大家可以通過上述的方法學習TCP協議。