Wireshark抓包 TCP的狀態型別

2021-09-05 12:54:58 字數 1673 閱讀 1664

承接上篇:

在分析wireshark抓包時,封包詳情資訊裡展現出了tcp的狀態型別。除了我們比較熟悉的syn, ack的三次握手時見到的狀態之外。突然見到psh,rst等狀態,這些比較陌生。所以覺得有必要對tcp的狀態型別做一次總結。

tcp的六大狀態包括syn,fin, ack, psh,rst和urg

在tcp層,有個flags欄位,這個欄位有以下幾個標識:syn, fin, ack, psh, rst, urg.

這六大狀態的含義:

syn表示建立連線,

fin表示關閉連線,

ack表示響應,

psh表示有 data資料傳輸,

rst表示連線重置。

ack是可能與syn,fin等同時使用的,比如syn和ack可能同時為1,它表示的就是建立連線之後的響應。 如果只是單個的乙個syn,它表示的只是建立連線。tcp的幾次握手就是通過這樣的ack表現出來的。

但syn與fin是不會同時為1的,因為這兩個狀態互相矛盾,前者表示的是建立連線,而後者表示的是斷開連線。

rst一般是在fin之後才會出現為1的情況,表示的是連線重置。 一般地,當出現fin包或rst包時,我們便認為客戶端與伺服器端斷開了連線;而當出現syn和syn+ack包時,我們認為客戶端與伺服器建立了乙個連線。

psh為1的情況,一般只出現在 data內容不為0的包中,也就是說psh為1表示的是有真正的tcp資料報內容被傳遞。

tcp的連線建立和連線關閉,都是通過請求-響應的模式完成的。

概念補充-tcp三次握手:

tcp(transmission control protocol)傳輸控制協議

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:

位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)sequence number(順序號碼) acknowledge number(確認號碼)

第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,主機b由syn=1知道,a要求建立聯機;

第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包;

第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。

完成三次握手,主機a與主機b開始傳送資料。

幾種tcp連線中出現rst的情況

埠未開啟

請求超時

提前關閉

在乙個已關閉的socket上收到資料

tcp重置是乙個好的事情,如果沒有reset,我們將會遇到各種各樣的tcp網路連線問題。需要注意的是導致reset的原因是多種多樣的,不僅僅是兩端的節點還有可能是應用程式,追查問題時最重要的是檢視包的狀態以及其重傳。

wireshark抓包分析 tcp包長度

1 最近分析rtmp資料報的時候,用tcpdump抓到一段資料報,有一部分理解不了。tcp連線的時候,協商的mss是1460,為什麼這裡傳輸的時候是2920位元組?2 原因分析,tcpdump工作在資料鏈路層,linux系統在設定了tso iso的時候,通過網絡卡進行分tcp資料 組合tcp資料報以...

Wireshark抓包分析tcp連線的建立和斷開

1 建立連線 客戶端ip 192.168.101.129 伺服器ip 192.168.3.22 ip host 192.168.3.22 and tcp 第一次握手 客戶端主機a傳送標誌位位碼syn 1,隨機產生seq number x的資料報到伺服器,客戶端進入syn send狀態,等待伺服器的確...

從wireshark抓包看TCP頭部時間戳

不知道大家有沒有注意到,wireshark抓取tcp報文的時候,大部分時候的報文是如下圖所示的,其中帶了seq,win和len欄位,分別對應了報文序列號 滑動視窗和tcp報文長度。有時候,也會在報文中看到tsval 和 tsecr 這兩個引數,如下圖所示。那麼這個引數 於 呢?又有什麼作用呢?時間戳...