WireShark——ARP 協議包分析


 1. 什么是ARP

   ARPAddress Resolution Protocol)協議,即地址解析協議。該協議的功能就是將 IP 地 址解析成 MAC 地址。

   ARPAddress Resolution Protocol,地址解析協議)是根據 IP 地址獲取物理地址的一個 TCP/IP 協議。由於 OSI 模型把網絡工作分為七層,IP 地址在 OSI 模型的第三層,MAC 地 址在第二層,彼此不直接通信。在通過以太網發送 IP 數據包時,需要先封裝第三層(32 IP 地址)、第二層(48 MAC 地址)的報頭。但由於發送數據包時只知道目標 IP 地址, 不知道其 MAC 地址,而又不能跨越第二、三層,所以需要使用地址解析協議。 使用地址解析協議后,計算機可根據網絡層 IP 數據包包頭中的 IP 地址信息對應目標硬 件地址(MAC 地址)信息,以保證通信的順利進行。ARP 的基本功能就是負責將一個已知 的 IP 地址解析成 MAC 地址,以便主機間能正常進行通信。

2. ARP工作流程

   ARP 工作過程分為兩個階段,一個是 ARP 請求過程,一個是 ARP 響應過程。

 

 

 

 

 

 

   在圖2.22.3中,主機PC1IP地址為192.168.1.1;主機PC2IP地址為192.168.1.2。 當主機 PC1 和主機 PC2 通信時,地址解析協議可以將主機 PC2 IP 地址(192.168.1.2)解 析成主機 PC2 MAC 地址。PC1 PC2 的詳細通信過程如下所示:

1)當主機 PC1 想發送數據給主機 PC2 時,首先在自己的本地 ARP 緩存表中檢查主 機 PC2 匹配的 MAC 地址。

2)如果主機 PC1 在緩存中沒有找到相應的條目,它將詢問主機 PC2 MAC 地址, 從而將ARP請求幀廣播到本地網絡上的所有主機。該幀中包括源主機PC1IP地址和MAC 地址。本地網絡上的每台主機都接收到 ARP 請求並且檢查是否與自己的 IP 地址匹配。如果 主機發現請求的 IP 地址與自己的 IP 地址不匹配,它將會丟棄 ARP 請求。

3)主機 PC2 確定 ARP 請求中的 IP 地址與自己的 IP 地址匹配,則將主機 PC1 的地 址和 MAC 地址添加到本地緩存表。

4)主機 PC2 將包含其 MAC 地址的 ARP 回復消息直接發送回主機 PC1(這個數據幀 是單播)。

5)當主機 PC1 收到從主機 PC2 發來的 ARP 回復消息時,會將主機 PC2 IP MAC 地址添加的自己的ARP緩存表。本機緩存是有生存期的,默認ARP緩存表的有效期是120s。 當超過該有效期后,將再次重復上面的過程。主機 PC2 MAC 地址一旦確定,主機 PC1 將能向主機 PC2 發送 IP 通信了。

3. ARP緩存表

1)緩存表由來

   ARP 緩存中包含一個或多個表,它們用於存儲 IP 地址及其經過解析的 MAC 地址。在 ARP 緩存中的每個表又被稱為 ARP 緩存表。

2ARP 緩存表維護工具——arp 命令

   在計算機中,提供了一個 ARP 命令。該命令用於查詢本機ARP 緩存中的 IP 地址和 MAC 地址的對應關系、添加或刪除靜態對應關系等。用戶也可以通過使用 arp 命令驗證 ARP 緩 存條目的生命周期。ARP 命令的語法格式如下所示:

arp [-s inet_addr eth_addr [if_addr]] [-d inet_addr [if_addr]] [-a [inet_addr] [-N if_addr]] [-g] [-v]

以上參數含義如下所示:

① -s inet_addr eth_addr [if_addr]:向 ARP 緩存表中添加可將 IP 地址 inet_addr 解析成 物理地址 eth_addr 的靜態條目。要向指定接口的表添加靜態 ARP 緩存條目,使用 if_addr 參數,此處的 if_addr 代表指派給該接口的 IP 地址。

② -d inet_addr if_addr:刪除指定的 IP 條目,此處的 inet_addr 代表 IP 地址。對於指定 的接口,要刪除表中的某項,使用 if_addr,此處的 if_addr 代表指派給該接口的 IP 地址。要刪除所有條目,使用星號(*)通配符代替 inet_addr

③ -a inet_addr [-N if_addr]:顯示所有接口的當前 ARP 緩存表。要顯示特定 IP 地址的 ARP 緩存項,使用帶有 inet_addr 參數的 arp -a,此處的 inet_addr 代表 IP 地址。如 果未指定 inet_addr,則使用第一個適用的接口。要顯示特定接口的 ARP 緩存表, 將-N if_addr -a 參數一起使用,此處的 if_addr 代表指派給該接口的 IP 地址。-N 參數區分大小寫。

④ -g:與-a 相同。

⑤ -v:查看幫助信息。

  詳細的arp使用命令,可參考我的另一篇博客。

4. 捕獲 ARP 協議包

 

PC>ping 192.168.1.3

   執行以上命令后,將輸出如下所示的信息:

Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break

From 192.168.1.3: bytes=32 seq=1 ttl=128 time=31 ms

From 192.168.1.3: bytes=32 seq=2 ttl=128 time=31 ms

From 192.168.1.3: bytes=32 seq=3 ttl=128 time=47 ms

From 192.168.1.3: bytes=32 seq=4 ttl=128 time=31 ms

From 192.168.1.3: bytes=32 seq=5 ttl=128 time=47 ms

--- 192.168.1.3 ping statistics ---

  5 packet(s) transmitted

  5 packet(s) received

  0.00% packet loss

  round-trip min/avg/max = 31/37/47 ms

   從輸出的信息中,可以看到主機 PC2(192.168.5.2)向主機 PC1(192.168.5.4)發送了 四個數據包。這時候,Wireshark 就捕獲到 ARP 數據包了

 

   從該界面的 Protocol 列,可以看到捕獲到的數據包都是 ARP 協議包。其中,22 幀是 ARP 請求包;23幀是響應包。由於使用 arp 過濾器,可以僅過濾出 ARP 包。

5. 分析ARP協議包

   在分析 ARP 協議包之前,先介紹一下它的報文格式,以幫助用戶更清楚的理解每個包。

1) ARP報文格式

 

 

     該圖中每行長度為 4 個字節,即 32 位。其中圖中藍色的部分是以太網(指 Ethernet II 類型)的幀頭部。這里共三個字段,分別如下所示:

第一個字段是廣播類型的 MAC 地址:0XFF-FF-FF-FF-FF-FF,其目標是網絡上的 所有主機。

   · 第二個字段是源 MAC 地址,即請求地址解析的的主機 MAC 地址。

   · 第三個字段是協議類型,這里用 0X0806 代表封裝的上層協議是 ARP 協議。

 接下來是 ARP 協議報文部分其中各個字段的含義如下:

   · 硬件類型:表明 ARP 協議實現在哪種類型的網絡上。

   · 協議類型:表示解析協議(上層協議)。這里一般是 0800,即 IP

   · 硬件地址長度:MAC 地址長度,此處為 6 個字節。

   · 協議地址長度:IP 地址長度,此處為 4 個字節。

   · 操作類型:表示 ARP 協議數據包類型。1 表示 ARP 協議請求數據包,2 表示 ARP 協議應答數據包。

   · MAC 地址:發送端 MAC 地址。

   · IP 地址:表示發送端協議地址(IP 地址)。

   · 目標 MAC 地址:目標端 MAC 地址。

   · 目標 IP 地址:表示目的端協議地址(IP 地址)。

   ARP 協議應答協議報文和 ARP 協議請求協議報文類似。不同的是,此時以太網幀頭部 的目標 MAC 地址為發送 ARP 協議地址解析請求的 MAC 地址,而源 MAC 地址為被解析的 主機的 MAC 地址。同時,操作類型字段為 2,表示 ARP 協議應答數據包,目標 MAC 地址 字段被填充為目標 MAC 地址。ARP 應答協議報文格式如表 2-2 所示。

 

 

 

2)ARP請求包

 

 

    從圖中可以看到,第一個數據包是一個 ARP 請求包。用戶可以通過在 Wireshark Packet Details 面板中,檢查以太網頭部來確定該包是否是一個真的廣播數據包。下面將詳細 介紹 Packet Details 面板中的每行信息。如下所示:

Frame 22: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0

   以上內容表示這是第 1 幀數據包的詳細信息。其中,該包的大小為 60 個字節。

Ethernet II, Src: 54:89:98:34:15:33 (54:89:98:34:15:33), Dst: Broadcast (ff:ff:ff:ff:ff:ff)

   以上內容表示以太網幀頭部信息。其中源 MAC 地址為 54:89:98:34:15:33,目標 MAC 地 址為 ff:ff:ff:ff:ff:ff(廣播地址)。這里的目標地址為廣播地址,是因為主機 PC2 不知道 PC1 主機的 MAC 地址。這樣,局域網中所以設備都會收到該數據包。

Address Resolution Protocol (request)

   以上內容表示地址解析協議內容,request 表示該包是一個請求包。在該包中包括有 ARP 更詳細的字段信息,如下所示:

Address Resolution Protocol (request)      #ARP 請求包     

   Hardware type: Ethernet (1)                                                            #硬件類型     

   Protocol type: IP (0x0800)                                                               #協議類型     

   Hardware size: 6                                                                             #硬件地址     

   Protocol size: 4                                                                               #協議長度     

   Opcode: request (1)                                                                       #操作碼。該值為 1,表示是個 ARP 請求包     

   Sender MAC address: 54:89:98:34:15:33 (54:89:98:34:15:33)     #發送端 MAC 地址     

   Sender IP address: 192.168.1.2 (192.168.1.2)                              #發送端 IP 地址     

   Target MAC address: Broadcast (ff:ff:ff:ff:ff:ff)                                #目標 MAC 地址    

   Target IP address: 192.168.1.3 (192.168.1.3)                               #目標 IP 地址

2-3  ARP請求報文格式

Ethernet(1)

IP(0x0800)

6

4

request(1)

54:89:98:34:

15:33

192.168.

1.2

ff:ff:

ff:ff:ff:ff

192.168.1.3

3) ARP響應包

 

   在圖中的 Packet Details 面板中,可以看到第二個數據包是一個 ARP 響應包。該包中的信息與 ARP 請求包的信息類似。但是也有幾處不同。下面將詳細介紹,如下所示:

Frame 23: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface 0

   以上信息表示這是第二個數據包的詳細信息。其中,該包的大小為 60 個字節。

Ethernet II, Src: 54:89:98:5b:22:9b (54:89:98:5b:22:9b), Dst: 54:89:98:34:15:33 (54:89:98:34:15:33)

   以上內容是以太網幀頭部的信息。其中,源 MAC 地址為 54:89:98:5b:22:9b ,目標 MAC 地址為 54:89:98:34:15:33。從該行信息中,可以知道 PC2 獲取到了 PC1 主機的 MAC 地址。 這樣就可以正常通行了。

Address Resolution Protocol (reply)

   以上內容表示這里一個 ARP 響應包。該包中詳細內容如下所示:

Address Resolution Protocol (reply)

   Hardware type: Ethernet (1)                                                                     #硬件類型

   Protocol type: IP (0x0800)                                                                        #協議類型

   Hardware size: 6                                                                                      #硬件長度

   Protocol size: 4                                                                                        #協議長度

   Opcode: reply (2)                                                                                     #操作碼為2,表示該包是ARP響應包

   Sender MAC address: 54:89:98:5b:22:9b (54:89:98:5b:22:9b)              #發送發MAC地址

   Sender IP address: 192.168.1.3 (192.168.1.3)                                       #發送發IP地址

   Target MAC address: 54:89:98:34:15:33 (54:89:98:34:15:33)                #目標MAC地址

   Target IP address: 192.168.1.2 (192.168.1.2)                                         #目標IP地址

2-4  ARP響應報文格式

Ethernet(1)

IP(0x0800)

6

4

request(2)

54:89:98:5b:

22:9b

192.168.

1.3

54:89:

98:34:15:33

192.168.1.2


免責聲明!

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



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