轉(zhuǎn)載自:http://blog.csdn.net/wang7dao/article/details/16805337
1、Wireshark的數(shù)據(jù)包詳情窗口,如果是用中括號[]括起來的,表示注釋,在數(shù)據(jù)包中不占字節(jié)
2、在二進(jìn)制窗口中,如“DD 3D”,表示兩個(gè)字節(jié),一個(gè)字節(jié)8位
3、TCP數(shù)據(jù)包中,seq表示這個(gè)包的序號,注意,這個(gè)序號不是按1遞增的,而是按tcp包內(nèi)數(shù)據(jù)字節(jié)長度加上,如包內(nèi)數(shù)據(jù)是21字節(jié),而當(dāng)前IP1發(fā)到IP2的包的seq是10的話,那下個(gè)IP1發(fā)到IP2的包的seq就是10+21=31
4、注意我們分析tcp包時(shí),要以一個(gè)會(huì)話做為一個(gè)完整對象,即通訊只發(fā)生在兩個(gè)IP之間,兩個(gè)固定的端口之間,如果端口變化了,那鏈接就不是同一條了,不同的鏈接之間的seq是沒有關(guān)聯(lián)的
5、tcp包分為包頭的內(nèi)容,tcp的包頭長度是32字節(jié),整個(gè)數(shù)據(jù)包的包頭是66字節(jié)(不一定的),如果整個(gè)數(shù)據(jù)包是66字節(jié)的話,那內(nèi)容長度就是0
6、每個(gè)tcp包都帶有win、ack,這些是告訴對方,我還可以接收數(shù)據(jù)的滑動(dòng)窗口是多少,如果A發(fā)到B的包的win為0,就是A告訴B說我現(xiàn)在滑動(dòng)窗口為0了,飽了,你不要再發(fā)給我了,就說明A端環(huán)境有壓力(如帶寬滿了等)
7、ack可以理解為應(yīng)答。A發(fā)給B的ack是告訴B,我已收到你發(fā)的數(shù)據(jù)包,收到ack號這里了,你下次要發(fā)seq為ack號的給我
8、在網(wǎng)絡(luò)不堵即滑動(dòng)窗口一點(diǎn)都不堵的情況下,第一個(gè)包的ack號就是第二個(gè)包的seq號,如果堵了,由于是滑動(dòng)窗口緩存處理隊(duì)列,所以這個(gè)值會(huì)錯(cuò)開
9、如果A發(fā)到B連續(xù)幾個(gè)包,seq號不變,ack號一直在變大,說明A一直在收B的數(shù)據(jù),一直在給B應(yīng)答
10、如果A發(fā)到B連續(xù)幾個(gè)包,seq號一直變大,ack號一直沒變,說明A一直在向B發(fā)數(shù)據(jù),不用給B應(yīng)答,而是在等B的應(yīng)答
11、可以接收多個(gè)數(shù)據(jù)包后,一次性給一個(gè)應(yīng)答,不用每個(gè)數(shù)據(jù)包一一對應(yīng)給應(yīng)答
12、發(fā)了一個(gè)包,很久沒有收到應(yīng)答后,會(huì)重發(fā)包,在Wireshark抓包工具提示“[TCP Retransmission]”,在數(shù)據(jù)包詳情窗口點(diǎn)開可以看到是對哪個(gè)數(shù)據(jù)包的重傳
13、“[TCP Dup ACK ?#?]”應(yīng)答包的重傳
14、如果出現(xiàn)這個(gè)錯(cuò)誤“[TCP Previous segment not captured]”,說明亂序了,前一個(gè)包沒有收到,收到后面的包了,這時(shí)也會(huì)重傳包