關於ARP的簡述
ARP:Address Resolution Protocol 位址解析通訊協定。
RARP:Reverse Address Resolution Protocol 逆向位址解析通訊協定。
不同的網路,如乙太網路,令牌網...,在資料連結層都有不同的定址機制。
在乙太網路的區域網路中,一台主機和另外一台主機通訊發包,是根據48bit的乙太網路地址來確定目的介面的,裝置驅動程式從不檢查IP資料報中的目的IP地址。
位址解析通訊協定(ARP)為這兩種不同的地址形式提供映射:32bit的IP地址和資料連結層48bit地址的轉換。RFC 826[Plummer1982]是ARP規範描述文檔。
ARP為IP地址到對應的硬體地址之間提供動態映射。RARP是被那些沒有磁碟機的系統使用(一般是無盤工作站或X終端),它需要系統管理員進行手工設定。
ARP通訊過程解析:
(1).比如在一個區域網路上,一台主機A(192.168.0.12)要訪問機器B(192.168.0.11)。他會發送一份稱作ARP請求的乙太網路資料幀給乙太網路上的每個主機(廣播包)。ARP請求資料幀中包含目的主機的IP地址,意思就是:“如果你是這個IP地址的擁有者,請回答你的硬體地址。”
(2).目的主機收到這份廣播報文後,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答。這個ARP應答包含IP地址及對應的硬體地址。(非廣播)
(3).收到ARP應答後,系統的ARP緩衝便會記錄MAC-IP的對應資訊(ARP攻擊點),在CMD裡打ARP -a便可查詢現在機器的ARP緩衝情況。現在IP資料報現在就可以傳送了。
在ARP背後有一個基本概念,那就是網路介面有一個硬體地址(一個48bit的值,標識不同的乙太網路或令牌環網路介面)。在硬體層次上進行的資料幀交換必須有正確的介面地址。但是,TCP/IP有自己的地址:32 bit的IP地址。
知道主機的IP地址並不能讓核心發送一幀資料給主機。核心(如乙太網路驅動程式)必須知道目的端的硬體地址才能發送資料。ARP的功能是在32bit的IP地址和採用不同網路技術的硬體地址之間提供動態映射。
值得注意:
ARP協議是不可靠和不需連線的,通常即使主機沒有發出ARP請求,也會接受發給它的 ARP回應,並將回應的mac和ip對應關係放入自己的ARP緩衝中。此外,核心為2.4.x的linux系統在ARP實現中,考慮到了ARP欺騙,不會接受未經請求的ARP回應,因此直接向這種系統發送ARP reply也是無效的,不過,有意思的是雖然它不會接受未經請求的ARP reply,但是只要接收到ARP的request,它就會更新自己的ARP緩衝。