網路規劃與管理技術:第四章 TCP/IP 協定與分析  上一頁    下一頁

4-2 ARP 協定與分析

內容:

  • 4-2-1 ARP 協定概述

  • 4-2-2 ARP 協定分析 - Wireshark

  • 4-2-3 ARP 協定分析 - Packet Tracer

4-2-1 ARP 協定概述

基本上,在 Ethernet 網路上傳送訊息,都必須以 Ethernet 封包格式封裝,來源位址與目的位址也都必須是 Ethernet Address 格式(48 bits)。但在 TCP/IP 網路上傳送訊息又都以 IP Address格式(32 bits),那 Ethernet 與 IP 位址之間的轉換機制,則須仰賴 ARP 協定來達成。

『位址解析協定』(Address Resolution Protocol, ARP)是被用來以 IP 位址查詢其相對應的 Ethernet 位址,其運作方式如下圖所示。首先主機 A(163.15.2.1)欲透過 Ethernet 網路傳送訊息給 IP = 163.15.2.4 主機,則發送出 ARP Request(查問 163.15.2.4)廣播到所屬網路區段內。所有主機都會接收到該 ARP Request 封包,並分解是否詢問自己,如果不是就不予理會而拋棄。主機 C(163.15.2.4)收到 ARP Request 後,發現詢問自己則回應 ARP Reply(包含 Ethernet 位址)給發問者(163.15.2.1)。 重點說明如下:

    • Ethernet Address:主機在實體網路間識別。

    • IP Address:主機在網際網路間識別。

    • ARP Request:廣播方式。主機利用對方的 IP Address 詢問它的 Ethernet Address。

    • ARP Reply:被詢問者回應 IP 與 Ethernet Address 對應給詢問者。

    • ARP Cache:主機將詢問過的 Ethernet Address 與 IP Address 對應結果儲存,下次不用再問。

圖 4-5 ARP 運作方式

在 TCP/IP 規範裡還有『反向位址解析協定』(Reverse Address Resolution Protocol, RARP),功能是由自己的 Ethernet Address 詢問自己應有的 IP Address,大多應用在動態 IP 設定使用,回應者是 RARP Server。但目前網路上大多使用 DHCP 與 Bootp 協定取代,已甚少使用RARP 協定,因此本書不再敘述。但會另外介紹 DHCP 協定與服務。

ARP Request 與 ARP Reply 封包 (如圖 4-6) 大致相同,各欄位功能如下:

● Hardware Type:表示發送主機使用之網路實體介面種類,如 1 表示 Ethernet 網路介面。

● Protocol Type:表示所使用的通訊協定,如 0x0800 表示 IP 協定,其它通訊協定模式如表 5-1 所示。

● Operation Type:表示此封包的工作模式:

1 → ARP 要求(ARP Request)

2 → ARP 回應(ARP Reply)

3 → RARP 要求(RARP Request)。

4 → RARP 回應(RARP Reply)

● HLEN:網路介面卡硬體位址長度。若 Ethernet 位址的長度為 6。

● PLEN:網路協定位址長度。因為 IP 位址長 4 個位元組,此值為 4。

● Sender HW:發送端的硬體位址。如果是 Ethernet 網路的話,此為 6 個位元組長的地址,如 0x8823AA112233。

● Target HW:目的地的硬體位址。

● Sender IP:發送端的 IP 位址,如 163.15.2.1。

● Target IP:目的地主機的 IP 位址,如163.15.2.4。

圖 4-6 ARP 封包格式

4-2-2 ARP 擷取與分析 - Wireshark

(A) 系統分析

ARP 封包是當工作站欲詢問某一 IP 位址是屬於哪一個工作站所有,並請它回應相對應的 Ethernet 位址,因此它是屬於廣播訊息。查詢後工作站會將查詢結果存放於主機的 ARP 佇列(ARP Cache) 內,就不須重複查詢了。因此,我們擷取之前先將 ARP Cache 清除掉,再隨意發送一個封包給某一主機,便會發生 ARP 封包,再擷取它即可。

吾人利用本機(120.118.165.107) 執行 ping 命令,對一個不知 Ethernet 位址的電腦 (IP = 120,118.165.191),讓他自動產生 ARP 查詢訊息,如圖 4-7 所示。

圖 4-7 ARP 封包攫取

(C) 擷取封包工具

我們需要用到下列工具:

█ Wireshark 網路封包分析器(安裝於 Windows 7)。

█ Windows 命令提示字元:ipconfig、arp、ping 等命令。

(D) 擷取封包步驟

(1) 開啟Windows 命令提示字元(利用管理員身分開啟),首先利用 ipconfig 命令查詢本電腦的 IP 位址(查出為 120.118.165.107),再執行 arp –d 與 arp –a 等命令,清除電腦內記憶的ARP 訊息。

(2) 開啟Wireshark

(2) 開啟Windows 命令提示字元(利用管理員身分開啟),首先利用 ipconfig 命令查詢本電腦的 IP 位址(查出為 120.118.165.107),再執行 arp –d 與 arp –a 等命令,清除電腦內記憶的ARP 訊息。

(2) 選擇 Wireshark 擷取篩選項目(host 120.118.165.107)與 eth.type = 0x0806 表過濾 ARP 封包,再選擇介面卡,如下:

(3) 此時 Wireshark 已開始擷取封包,吾人立即在Windows 命令提示字元上執行:ping 某一主機位址(ping 120.118.165.191)使它產生 ARP 封包(ARP cache 已清除),如下:

(4) 在 Wireshark 視窗按暫停,並在顯示篩選器上選擇 arp,如下:

(E) ARP 協定分析

在 Wireshark 視窗按暫停,分析 ARP Request 與 ARP Reply 封包如下:

(1) ARP Request 封包分析

由上圖中第 141 封包是主機發送出去 ARP request 封包,點選該封包由協定視窗上可以看出各個封包標頭的內容。

█ Ethernet II 封包標頭,如下:

● DA:目的位址。廣播位址(broadcast)

● SA(Source):來源位址。00:25:b3:0a:c1:17(48 bits)

● Type:0x0806 表 ARP 封包。

█ ARP request 封包標頭,如下:

 

● Hardware type:Ethernet (I)。

● Protocol type:IPv4。

● Hardware size:6。

● Protocol type:4。

● Opcode:Request (1)。

● Source MAC address:00:25:b3:0a:c1:17。

● Source IP address:120.118.165.107。

● Target MAC address:00:00:00:00:00:00。

● Target IP address:120.118.165.191

(2) ARP Reply 封包分析

由上圖中第 142 封包是 120.118.165.191主機回覆的 ARP respond 封包,點選該封包由協定視窗上可以看出各個封包標頭的內容。

█ Ethernet II 封包標頭,如下:

● Destination:00:25:b3:0a:c1:17。

● Source:00:0c:29:a2:ad:3e

● Type:0x0806 表 ARP 封包。

█ ARP reply 封包標頭,如下:

● Hardware type:Ethernet (I)。

● Protocol type:IPv4。

● Hardware size:6。

● Protocol type:4。

● Opcode:reply (2)。

● Source MAC address:00:0c:29:a2:ad:3e。

● Source IP address:120.118.165.191。

● Target MAC address:00:25:b3:0a:c1:17。

● Target IP address:120.118.165.107。

4-2-3 ARP 擷取與分析 – Packet Tracer

(A) 系統分析

ARP 封包是當工作站欲詢問某一 IP 位址是屬於哪一個工作站所有,並請它回應相對應的 Ethernet 位址,因此它是屬於廣播訊息。查詢後工作站會將查詢結果存放於主機的 ARP 佇列(ARP Cache) 內,就不須重複查詢了。因此,我們擷取之前先將 ARP Cache 清除掉,再隨意發送一個封包給某一主機,便會發生 ARP 封包,再擷取它即可。清除命令如下:

C:\>arp -a  [顯示 ARP Queue]

Internet Address Physical Address Type

192.168.0.2 0001.9636.969a dynamic

 

C:\>arp -d    [刪除 ARP Queue]

但 Packet Tracer 並沒有模擬 ARP Catch 的功能,我們只要執行 ping 命令,對一個不知 Ethernet 位址的電腦 (IP = 120,118.165.191),讓他自動產生 ARP 查詢訊息即可。

 (B) 網路規劃

吾人利用 Packet Tracer 設計一個簡單網路,包含有三個 PC 電腦,期望網路環境如下:

網路區段

Gateway/DNS

  名稱

  IP 位址

   連接埠口

192.168.0.0/

255.255.255.0

192.168.0.254/

168.95.1.1

PC0

192.168.0.1

HUB(Fa0)

PC1

192.168.0.2

HUB(Fa1)

PC2

192.168.0.3

HUB(Fa2)

因此,我們需要在 Packet Tracer 上選擇下列裝置:

(1) Hub-PT:模擬集線器 (Hub) 一只。提供 PC 電腦之間連線。

(2) PC-PT:模擬 PC 主機三只。PC0 ~ PC2 主機使用。

(3) 規劃網路如下:(請下載 ARP 封包擷取.pkt)

 (C) 網路設定

█ 集線器 Hub 不需任何設定。

█ PC0 ~ PC3 須設定相關網路參數,如下(如 PC0):Gateway = 192.168.0.254、DBS Server = 168.95.1.1、IP Address = 192.168.0.1、Subnet Mask = 255.255.255.0。

(D) 擷取封包步驟

(1) 步驟 1:Packet Tracer 採用 Simulation 模式,編輯 Edit Filters ,點選 ARP,表示只擷取 ARP 封包。

 

(2) 步驟 2:再由 PC0 上 ping 發送給 PC2 如下:(點選 PC0 -> Desktop -> Command Prompt ->)

Packet Tracer PC Command Line 1.0

C:\>ping 192.168.0.2   

Pinging 192.168.0.2 with 32 bytes of data:

(3) 步驟 3:在 packet Tracer 上按『Auto Capture/Play』暫停。

(D) ARP 協定分析

(1) 步驟 1:在 Packet Tracer 按 『Auto Capture/Play』,則可觀察到擷取到 ARP 的封包,其中包含 ARP Request 與 ARP Reply 兩封包。

(2) 步驟 2:分析 ARP Request 封包標頭,如下:

● Hardware Type:0x0001、Protocol Type:0x0800、Opcode:0x0001。

● Source MAC 與 Source IP。

● Target MAC: 0、Target IP = 192.168.0.2。

(3) 步驟 3:分析 ARP Reply 封包標頭,如下:

● Hardware Type:0x0001、Protocol Type:0x0800、Opcode:0x0002。

● Source MAC = 0001.9636.969A 與 Source IP = 192.168.0.2。

● Target MAC:000B.BE1D.2DB9、Target IP = 192.168.0.1。

 

 

翻轉工作室:粘添壽

 

網路規劃與管理技術:

 

 

翻轉電子書系列: