天天看點

Wireshark抓包工具--TCP資料包seq ack等解讀

1、Wireshark的資料包詳情視窗,如果是用中括号[]括起來的,表示注釋,在資料包中不占位元組

2、在二進制視窗中,如“DD 3D”,表示兩個位元組,一個位元組8位

3、TCP資料包中,seq表示這個包的序号,注意,這個序号不是按1遞增的,而是按tcp包内資料位元組長度加上,如包内資料是21位元組,而目前IP1發到IP2的包的seq是10的話,那下個IP1發到IP2的包的seq就是10+21=31

4、注意我們分析tcp包時,要以一個會話做為一個完整對象,即通訊隻發生在兩個IP之間,兩個固定的端口之間,如果端口變化了,那連結就不是同一條了,不同的連結之間的seq是沒有關聯的

5、tcp包分為標頭的内容,tcp的標頭長度是32位元組,整個資料包的標頭是66位元組(不一定的),如果整個資料包是66位元組的話,那内容長度就是0

6、每個tcp包都帶有win、ack,這些是告訴對方,我還可以接收資料的滑動視窗是多少,如果A發到B的包的win為0,就是A告訴B說我現在滑動視窗為0了,飽了,你不要再發給我了,就說明A端環境有壓力(如帶寬滿了等)

7、ack可以了解為應答。A發給B的ack是告訴B,我已收到你發的資料包,收到ack号這裡了,你下次要發seq為ack号的給我

8、在網絡不堵即滑動視窗一點都不堵的情況下,第一個包的ack号就是第二個包的seq号,如果堵了,由于是滑動視窗緩存處理隊列,是以這個值會錯開

9、如果A發到B連續幾個包,seq号不變,ack号一直在變大,說明A一直在收B的資料,一直在給B應答

10、如果A發到B連續幾個包,seq号一直變大,ack号一直沒變,說明A一直在向B發資料,不用給B應答,而是在等B的應答

11、可以接收多個資料包後,一次性給一個應答,不用每個資料包一一對應給應答

12、發了一個包,很久沒有收到應答後,會重發包,在Wireshark抓包工具提示“[TCP Retransmission]”,在資料包詳情視窗點開可以看到是對哪個資料包的重傳

13、“[TCP Dup ACK ?#?]”應答包的重傳

14、如果出現這個錯誤“[TCP Previous segment not captured]”,說明亂序了,前一個包沒有收到,收到後面的包了,這時也會重傳包

繼續閱讀