第二章 背景知識
2.4 地址解析協議(ARP)
ARP(Address Resolution Protocol) [12] [13] 中文叫地址解析協定,其基本功能 為透過目標設備的 IP 位址,查詢目標設備的 MAC 地址,以確保通信的順利進行。
在同一區域網路中要讓不同類型的網路硬體進行溝通,就需要建立一些標準協定讓 大家共同參考,而乙太網(Ethernet)就是目前最常用的協定,其在邏輯上的傳送是使用 了 CSMA/CD(Carrier Sense Multiple Access/Collision Detect 即帶衝突檢測的載波 監聽多路存取)技術,此技術會將封包在整個區域網路中進行廣播,就像廣播節目一樣,
一個人說,大家都聽得到,所以每個節點都會收到封包,只有目的位址符合自己實體位 址(Media Access Control, MAC) 的封包才會被接收下來。而在不同區域網路中,如 Internet,則是使用 TCP/IP(Transmission Control Protocol/Internet Protocol)進 行封包傳送,此協定是透過硬體的 IP 位址進行溝通。
問題來了,在同一區域網路中,乙太網路協定是利用 MAC 位址進行溝通,而在不同 區域網路中,TCP/IP 協定則是利用 IP 位址進行溝通,這兩者應如何轉換?這就是 ARP 要做的事,將目標 IP 位址轉換成目標 MAC 地址。在 Internet 進行資料傳送時,其封包 只包含了目的主機的 IP 位址,一旦封包進入到區域網路內,就需透過 ARP 根據目的主 機的 IP 位址,獲得其 MAC 位址,這樣才能將資料傳送至日的地。
在 FreeBSD 或 Linux 中,可使用 ifconfig 指令查看自己的 IP 位址與 MAC 位址,而 在 WindowsXP 中,則可使用 ipconfig /all 指令取得,畫面如圖 2-3:
圖 2 - 3 ipconfig 查看 IP 位址畫面
ARP 是利用乙太網的廣播性質,設計出來的位址解析協定。它的主要特性和優點是 它的位址對應關係是動態的,所以必須使用查詢的方式來獲得 IP 位址和實體位址的對 應。在每部電腦或路由器裡都有一個 ARP Table 存在 ARP 快取緩衝區 (ARP Cache)中,
此 ARP Table 裡的 IP 位址與 MAC 位址是對應的,如下表 2-5 所示。
主機名稱 IP 位址 MAC 位址
pc001 192.168.0.194 00-11-D8-8B-1A-F2 pc002 192.168.0.195 00-22-C7-7A-2B-A4 pc003 192.168.0.196 00-33-B6-6D-3C-C5
... ... ...
表 2 - 5 ARP Table 裡的 IP 位址與 MAC 位址表
以主機 pc001(192.168.0.194)向主機 pc002(192.168.0.195)傳送資料為例,
說明其工作原理[14]: 址,如果找到了,也就知道主機 pc002 的 MAC 位址為「00-22-C7-7A-2B-A4」, 就直接使用此 MAC 位址來傳送資料。
3、如果主機 pc001 的 ARP 快取緩衝區中沒有主機 pc002 的 MAC 位址時,主機 pc001 就會發送一個目的 MAC 位址是「FF-FF-FF-FF-FF-FF」的 ARP Request 廣播封包,
查詢目的主機 pc002 的 MAC 位址,這表示主機 pc001 向同一區域網路內的所有 原來的,然後才會向主機 pc001 送出回應(ARP Reply):「192.168.0.195 的 MAC 位址是 00-22-C7-7A-2B-A4」如圖 2-5。
5、這樣,主機 pc001 就知道了主機 pc002 的 MAC 位址,就可以向主機 pc002 發送 資料了。同時,主機 pc001 也更新了自己的 ARP 快取緩衝區,如果下次要再送 資料給主機 pc002 時,就可以直接從自己的 ARP 快取緩衝區中找到主機 pc002 的 MAC 位址進行傳送了。
6、如果主機 pc001 沒有收到 ARP Reply,則宣告查詢失敗,無法傳送資料。
圖 2 - 4 ARP Request
圖 2 - 5 ARP Reply
在 FreeBSD,Linux 或 WindowsXP 中,都可以使用 arp -a 指令查看自己的 ARP 快取 緩衝區,如圖 2-6 為 FreeBSD 中所查看到的:
圖 2 - 6 查看自己的 ARP 快取緩衝區
一般來說,MAC 位址是跟隨著硬體設備的不能更改,但 IP 位址可以任意更改。因 為網路服務所使用的都是以 IP 位址為主,所以管理者一定要知道某個 IP 位址是被哪部 電腦所使用,亦希望使用者不要私自更改 IP 位址,我們可以為每部電腦的 IP 位址與 MAC 位址做靜態的綁定。
2.4.1 使用 DHCP 伺服器綁定 IP 與 MAC
為了使 Client 電腦的 IP 位址能夠固定,可以使用 DHCP Server 進行 IP 位址和 MAC 位址綁定。一般 DHCP Server 可以設手動分配(manual allocation)固定 IP 位址給 Client 電腦使用,在設定檔中設定每部電腦的 MAC 位址及其固定的 IP 位址,這樣 Client 電腦在向 DHCP Server 取得 IP 位址時,就會依設定檔的設定來給固定的 IP 位址。然而,
此種方法無法真正將 IP 位址和 MAC 位址進行綁定,因為 Client 電腦取得 IP 位址後,
如果使用者私自將其 IP 位址更改時,此部電腦依然可以正常使用網路,不受此機制的 管控。
2.4.2 使用 Switch 或無線基地台綁定 IP 與 MAC
為了使 Client 電腦的 IP 位址能夠固定,可以使用 Layer 3 Switch (交換器)[15]
或 AP(Access Point)進行 IP 位址和 MAC 位址綁定(binding)。各家的 Switch 或 AP(無 線基地台)設定不同,有的只支援使用指令的 SNMP 協定,有的則可以使用較親和力的瀏 覽器介面進行設定,如將 Client 電腦的 IP 位址和 MAC 位址進行綁定後,IP 位址和 MAC 位址一定要符合才可能通行,如果使用者亂改 IP 位址,則無法進行連線,當然,改回 原先的 IP 位址時,就恢復通行,因此可達成電腦固定 IP 位址的管控機制。此種方式亦 是將 IP 位址和 MAC 位址寫入 ARP Table 中,讓此表資料成為靜態固定的。