關於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緩存。