4-2 ARP 協定與分析
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)。 重點說明如下:
圖 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 封包,再擷取它即可。清除命令如下:
但 Packet Tracer 並沒有模擬 ARP Catch 的功能,我們只要執行 ping 命令,對一個不知 Ethernet 位址的電腦 (IP = 120,118.165.191),讓他自動產生 ARP 查詢訊息即可。 (B) 網路規劃 吾人利用 Packet Tracer 設計一個簡單網路,包含有三個 PC 電腦,期望網路環境如下:
因此,我們需要在 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 ->)
(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。
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|