Wireshark抓包分析TCP.IP.UDP.ICMP報文格式(移動互聯網方向)


TCP 報文格式分析:

TCP 報文段的報頭有 10 個必需的字段和 1 個可選字段。報頭至少為 20 字節。

 

1)源端口(16位):標識發送報文的計算機端口或進程。一個 TCP 報文段必須包括源端口號,使目的主機知道應該向何處發送確認報文。

2)目的端口(16位):標識接收報文的目的主機的端口或進程。

 

 

由抓包數據可得源端口號為12762,目的端口號為80

 

3) 序號(也叫序列號)(32位):用於標識每個報文段,使目的主機可確認已收到指定報文段中的數據。當源主機用於多個報文段發送一個報文時,即使這些報文到達目的主機的順序不一樣,序列號也可以使目的主機按順序排列它們。在建立連接時發送的第一個報文段中,雙方都提供一個初始序列號。TCP 標准推薦使用以 4ms 間隔遞增 1 的計數器值作為這個初始序列號的值。使用計數器可以防止連接關閉再重新連接時出現相同的序列號。序列號表達達到2^32 - 1后又從0開始, 當建立一個新的連接時,SYN標志為1,系列號將由主機隨機選擇一個順序號

 

由圖可得現序列號為25e4d8a8

 

4)確認號(32位):目的主機返回確認號,使源主機知道某個或幾個報文段已被接收。如果 ACK 控制位被設置為 1,則該字段有效。確認號等於順序接收到的最后一個報文段的序號加 1,這也是目的主機希望下次接收的報文段的序號值。返回確認號后,計算機認為已接收到小於該確認號的所有數據。

 

由圖可得現確認號為59eafa0c

 

5) 數據偏移(首部長度)(4位)

TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠,即首部長度。 由於 TCP 報頭的長度隨 TCP 選項字段內容的不同而變化,因此報頭中包含一個指定報頭字段的字段。該字段以 32 比特為單位,所以報頭長度一定是 32 比特的整數倍,有時需要在報頭末尾補 0 。由抓包圖有偏移量在0x50中,占4bit,0x50轉化為二進制數0101 0000 所以偏移量是 0101=5,所以TCP報文首部長度為5* 4 = 20字節。

 

 

6)保留位(6位):由跟在數據偏移字段后的 6 位構成

 

 

 

7)窗口(16位)

 

此字段用來進行流量控制,這個值是本機期望一次接收的字節數,即發送數據的窗口大小。告訴對方在不等待確認的情況下,可以發來多大的數據。

 

 

 

8)校驗和(16位):源主機和目的主機根據 TCP 報文段以及偽報頭的內容計算校驗和。在偽報頭中存放着來自 IP 報頭以及 TCP 報文段長度信息。與 UDP 一樣,偽報頭並不在網絡中傳輸,並且在校驗和中包含偽報頭的目的是為了防止目的主機錯誤地接收存在路由的錯誤數據報

 

 

 

9)緊急指針(16位):僅在 URG = 1 時才有意義,它指出本報文段中的緊急數據的字節數(緊急數據結束后就是普通數據),即指出了緊急數據的末尾在報文中的位置,注意:即使窗口為零時也可發送緊急數據。

 

 

UDP報文格式分析:

 

由圖可知源端口號為4242,目的端口號為4242,用戶數據報長度為283比特,校驗和為0xb4c6,數據大小為275bytes。

 

IP 報文格式分析:

 

 

版本:IP協議的版本,目前的IP協議版本號為4。

 

首部長度:IP報頭的長度。固定部分的長度(20字節)和可變部分的長度之和。共占4位。最大為1111,即10進制的15,代表IP報頭的最大長度可以為15個32bits(4字節),也就是最長可為15*4=60字節,除去固定部分的長度20字節,可變部分的長度最大為40字節。

總長度:IP報文的總長度。報頭的長度和數據部分的長度之和。

 

 

標識:唯一的標識主機發送的每一分數據報。通常每發送一個報文,它的值加一。當IP報文長度超過傳輸網絡的MTU(最大傳輸單元)時必須分片,這個標識字段的值被復制到所有數據分片的標識字段中,使得這些分片在達到最終目的地時可以依照標識字段的內容重新組成原先的數據。由圖得出這是第18958個分片。

 

 

標志:共3位。R、DF、MF三位。目前只有后兩位有效,DF位:為1表示不分片,為0表示分片。MF:為1表示“更多的片”,為0表示這是最后一片。

 

 

片位移:

 

 

生存時間:IP報文所允許通過的路由器的最大數量。每經過一個路由器,TTL減1,當為0時,路由器將該數據報丟棄。TTL 字段是由發送端初始設置一個 8 bit字段.推薦的初始值由分配數字 RFC 指定,當前值為 64。發送 ICMP 回顯應答時經常把 TTL 設為最大值 255。

 

 

協議:指出IP報文攜帶的數據使用的是那種協議,以便目的主機的IP層能知道要將數據報上交到哪個進程(不同的協議有專門不同的進程處理)。和端口號類似,此處采用協議號,TCP的協議號為6,UDP的協議號為17。ICMP的協議號為1,IGMP的協議號為2.

 

 

首部校驗和:計算IP頭部的校驗和,檢查IP報頭的完整性。

 

 

源IP地址:標識IP數據報的源端設備。

 

 

目的IP地址:標識IP數據報的目的地址。

 

 

ICMP 報文格式分析:

  • 類型:占一字節,標識ICMP報文的類型,目前已定義了14種,從類型值來看ICMP報文可以分為兩大類。第一類是取值為1~127的差錯報文,第2類是取值128以上的信息報文。
  •  

  • 代碼:占一字節,標識對應ICMP報文的代碼。它與類型字段一起共同標識了ICMP報文的詳細類型。
  •  

  • 校驗和:這是對包括ICMP報文數據部分在內的整個ICMP數據報的校驗和,以檢驗報文在傳輸過程中是否出現了差錯。其計算方法與在我們介紹IP報頭中的校驗和計算方法是一樣的。
  •  

  • 標識:占兩字節,用於標識本ICMP進程,但僅適用於回顯請求和應答ICMP報文,對於目標不可達ICMP報文和超時ICMP報文等,該字段的值為0。
  •  

TCP協議的連接管理

第一次握手:客戶端向服務器端發送連接請求包SYN(syn=j),等待服務器回應;

第二次握手:服務器端收到客戶端連接請求包SYN(syn=j)后,將客戶端的請求包SYN(syn=j)放入到自己的未連接隊列,此時服務器需要發送兩個包給客戶端;

  (1)向客戶端發送確認自己收到其連接請求的確認包ACK(ack=j+1),向客戶端表明已知道了其連接請求

  (2)向客戶端發送連接詢問請求包SYN(syn=k),詢問客戶端是否已經准備好建立連接,進行數據通信;

  即在第二次握手時服務器向客戶端發送ACK(ack=j+1)和SYN(syn=k)包,此時服務器進入SYN_RECV狀態。

第三次握手:客戶端收到服務器的ACK(ack=j+1)和SYN(syn=k)包后,知道了服務器同意建立連接,此時需要發送連接已建立的消息給服務器;

  向服務器發送連接建立的確認包ACK(ack=k+1),回應服務器的SYN(syn=k)告訴服務器,我們之間已經建立了連接,可以進行數據通信。

  ACK(ack=k+1)包發送完畢,服務器收到后,此時服務器與客戶端進入ESTABLISHED狀態,開始進行數據傳送。

 

總結:通過利用wireshark工具對互聯網進行抓包分析,我們小組對互聯網的連接有了更進一步的了解和認識,對課本上學的基礎知識也有更深一步 的理解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM