【計算機網路實驗 ——wireshark抓包簡要分析TCP、UDP協議】
(1)分析 TCPheader:

Source Port:16bit源埠,資料發起者的埠號;
Destination Port:16bit目的埠,資料接收方的埠號;
Sequence Number:32bit的序列號,由發送方使用;
Acknowledgment Number:32bit的確認號,接收資料方回傳給發送方的通知,會在確認號的基礎上加1;
Data Length:4bit頭部長度,TCP頭部長度一般為20位元組,若TCP頭部的Options選項啟用,則會增加;
下面一部分為TCP的功能bit:
Reserved、Reserved、Nonce、CWR、ECN-Echo:共6bit的保留功能,留待以后開發新技術時使用;
URG:1bit緊急指標位,取值1代表這個資料是緊急資料需加速傳遞,取值0代表這是普通資料;
ACK:1bit確認位,取值1代表這是一個確認的TCP包,取值0則不是確認包;
PSH:1bit緊急位,取值1代表要求發送方馬上發送該分段,而接收方盡快的將報文交給應用層,不做佇列處理,取值0阿迪表這是普通資料;
RST:1bit重置位,當tcp收到一個不屬于該主機的任何一個連接的資料,則向對方發一個復位包,此時該位取值為1,若取值為0代表這個資料包是傳給自己的;
SYN:1bit請求位,取值1代表這是一個TCP三次握手的建立連接的包,取值為0就代表是其他包;
FIN:1bit完成位,取值1代表這是一個TCP斷開連接的包,取值為0就代表是其他包;
Window Size:16bit視窗大小,表示準備收到的每個TCP資料的大小;
Checksum:16bit的TCP頭部校驗,計算TCP頭部,從而證明資料的有效性;
Urgent Pointer:16bit緊急資料點,當功能bit中的URG取值為1時有效;(參考:TCP中URG和PSH以及Urgent Point的作用及區別)
Options:TCP的頭部最小20個位元組,如果這里有設定其他引數,會導致頭部增大;
Padding:當TCP頭部小于20位元組時會出現,不定長的空白填充欄位,填充內容都是0,但是填充長度一定會是32的倍數;
Data:被TCP封裝進去的資料,包含應用層協議頭部和用戶發出的資料,
wireshark抓包:

(2)分析TCP的建立程序(三次握手):
wireshark抓包:

第1次握手:
(Client) –> [SYN] –> (Server)
假如Client和Server通訊. 當Client要和Server通信時,Client首先向Server發一個SYN (Synchronize) 標記的包,告訴Server請求建立連接,
第2次握手:
(Client) <– [SYN/ACK] <–(Server)
接著,Server收到來自Client發來的SYN包后,會發一個對SYN包的確認包(SYN/ACK)給Client,表示對第一個SYN包的確認,并繼續握手操作,
第3次握手:
(Client) –> [ACK] –> (Server)
Client收到來自Server的SYN/ACK 包,Client會再向Server發一個確認包(ACK),通知Server連接已建立,至此,三次握手完成,一個TCP連接完成,
三次握手建立連接示圖:

(3)分析TCP的連接釋放程序:
wireshark抓包:

四次握手用來關閉已建立的TCP連接
1. (Client) –> ACK/FIN –> (Server)
2. (Client) <– ACK <– (Server)
3. (Client) <– ACK/FIN <– (Server)
4. (Client) –> ACK –> (Server)
四次關閉建立連接示圖:

*由于TCP連接是雙向連接, 因此關閉連接需要在兩個方向上做,ACK/FIN 包(ACK 和FIN 標記設為1)通常被認為是FIN(終結)包,然而, 由于連接還沒有關閉, FIN包總是打上ACK標記,
(4)跟蹤TCP資料傳輸程序中的seq、ack欄位
在Client端發送資料:

wireshark抓包:

·傳輸分析:
第一次Client端向服務端發送了一個len=3位元組資料(aaa一共3個位元組),且seq=1,即第一個資料在wireshark的相對表示中起始位置為1,因超時重傳該資料包;
Server端收到后,經歷一次丟包和重傳,回傳ack=4(表示資料1、2、3均成功收到);seq=1,表示自己即將傳輸資料的相對起始位置為1,接著Server端回傳3位元組內容,ack=4,(期待收到資料從4開始),同時seq=1,表示資料從序號1開始,
(5)分析TCP重傳、checksum等:
TCP重傳:
1.TCP Out_of_Order的原因分析:
一般來說是網路擁塞,導致順序包抵達時間不同,延時太長,或者包丟失,需要重新組合資料單元,
2.TCP Retransmission原因分析:
很明顯是上面的超時引發的資料重傳,
3.TCP dup ack XXX#X原因分析:
就是重復應答#前的表示報文到哪個序號丟失,#后面的是表示第幾次丟失,
4.checksum:
Checksum為16bit的TCP頭部校驗,計算TCP頭部,從而證明資料的有效性;
由上圖可知,重傳報文checksum為 0xb9fd,
(6)分析UDP header:

source port: 源埠號,占16位,2個位元組 ;
dest port: 目的埠號,占16位,2個位元組 ;
length: 此欄位標記了整個資料報(UDP的首部+UDP資料)的最大長度 ;
checksum: 檢驗和,此欄位用處是用來檢查收到地資料的對錯的,如果校驗和出錯,就會直接丟棄 ,
(7)TCP server端關閉,client發送報文:

Tcp Client發出syn報文,但由于Server端未開啟,目的埠發送RST報文通知源埠連接關閉;源埠會重復幾次嘗試連接直至源埠程式報錯,停止連接,
(8)UDP server端關閉,client發送報文:

UDPServer仍能發送報文,但由于UDPServer端已關閉,故無法得到回應;此時icmp協議會回傳訊息差錯通知,并告知源埠that目標埠無法到達,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281707.html
標籤:其他
