Wireshark中的TCP協議包分析

小魏技術發表於2023-12-25

W ireshark 可以跟蹤網路協議的通訊過程,本節透過 TCP 協議,在瞭解 Wireshark 使用的基礎上,重溫 TCP 協議的通訊過程。

TCP Transmission Control Protocol ,傳輸控制協議)是一種面向連線的、可靠的、基於 的傳輸層

TCP 旨在適應支援多網路應用的分層協議 連線到不同但互連的計算機通訊網路的主計算機中的成對程式之間依靠TCP 提供可靠的通訊服務。 從網路模型 - 協議對應表中發現, TCP 協議位於傳輸層。



Wireshark介面圖中可以發現 1 1 1 4 1 5 號資料包是 建立TCP 連線的三次握手 過程。



1.  第一次握手(SYN=1,seq=x): 客戶端傳送一個 TCP SYN 標誌位置 1 的包,指明客戶端打算連線的伺服器的埠,以及初始序號 X 儲存在包頭的序列號(Sequence Number) 欄位裡。傳送完畢後,客戶端進入 SYN_SEND 狀態。

2.  第二次握手(SYN=1,ACK=1,seq=y,ACKnum=x+1): 伺服器發回確認包 (ACK) 應答。即 SYN 標誌位和 ACK 標誌位均為 1 。伺服器端選擇自己 ISN 序列號,放到 Seq 域裡,同時將確認序號 (Acknowledgement Number) 設定為客戶的 ISN 1 ,即 X+1 。傳送完畢後,伺服器端進入 SYN_RCVD 狀態。

3.  第三次握手(ACK=1 ACKnum=y+1) :客戶端再次傳送確認包 (ACK) SYN 標誌位為 0 ACK 標誌位為 1 ,並且把伺服器發來 ACK 的序號欄位 +1 ,放在確定欄位中傳送給對方,並且在資料段放寫 ISN +1 。傳送完畢後,客戶端進入 ESTABLISHED 狀態,當伺服器端接收到這個包時,也進入 ESTABLISHED 狀態, TCP 握手結束。

Wireshark 介面圖中可以發現 77 78 79 /8 0 號資料包是 移除TCP 連線的四次揮手 過程。

1.  第一次揮手(FIN=1 seq=x) :客戶端傳送一個 FIN 志位置為 1 的包,表示自己已經沒有資料可以傳送了,但是仍然可以接受資料。傳送完畢後,客戶端進入 FIN_WAIT_1 狀態。

2.  第二次揮手(ACK=1 ACKnum=x+1) :伺服器端確認客戶端的 FIN 包,傳送一個確認包,表明自己接受到了客戶端關閉連線的請求,但還沒有準備好關閉連線。傳送完畢後,伺服器端進入 CLOSE_WAIT 狀態,客戶端接收到這個確認包之後,進入 FIN_WAIT_2 狀態,等待伺服器端關閉連線。

3.  第三次揮手(FIN=1 seq=y) :伺服器端準備好關閉連線時,向客戶端傳送結束連線請求, FIN 置為 1 。傳送完畢後,伺服器端進入 LAST_ACK 狀態,等待來自客戶端的最後一個 ACK

4.  第四次揮手(ACK=1 ACKnum=y+1) :客戶端接收到來自伺服器端的關閉請求,傳送一個確認包,並進入 TIME_WAIT 狀態,等待可能出現的要求重傳的 ACK 包。伺服器端接收到這個確認包之後,關閉連線,進入 CLOSED 狀態。客戶端等待了某個固定時間(兩個最大段生命週期, 2MSL 2 Maximum Segment Lifetime )之後,沒有收到伺服器端的 ACK ,認為伺服器端已經正常關閉連線,於是自己也關閉連線,進入 CLOSED 狀態。

透過上面的通訊過程分析,加深我們對 tcp 協議通訊過程的瞭解,同時也加強 Wireshark 對資料包支援的理解。

TCP 透過如下機制 保證可靠性

1.  確認和重傳:接收方收到報文就會確認,傳送方傳送一段時間後沒有收到確認就重傳。

2.  資料校驗。

3.  資料合理分片和排序:

4.  流量控制:當接收方來不及處理傳送方的資料,能提示傳送方降低傳送的速率,防止包丟失。

5.  擁塞控制:當網路擁塞時,減少資料的傳送。

 






來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70033718/viewspace-3001360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章