ARP協議(Address Resolution Protocol),或稱地址解析協議。ARP協議的基本功能就是通過目標設備的IP位址,查詢目標設備的MAC地址,以保證通信的順利進行。他是IPv4中網路層必不可少的協議,不過在IPv6中已不再適用,並被icmp v6所替代。
在乙太網協議中規定,同一區域網中的一台主機要和另一台主機進行直接通信,必須要知道目標主機的MAC地址。而在TCP/IP協議棧中,網路層和傳輸層只關心目標主機的IP位址。這就導致在乙太網中使用IP協議時,數據鏈路層的乙太網協議接到上層IP協議提供的數據中,只包含目的主機的IP位址。於是需要一種方法,根據目的主機的IP位址,獲得其MAC地址。這就是ARP協議要做的事情。所謂地址解析(address resolution)就是主機在發送幀前將目標IP位址轉換成目標MAC地址的過程。
另外,當發送主機和目的主機不在同一個區域網中時,即便知道目的主機的MAC地址,兩者也不能直接通信,必須經過路由轉發才可以。所以此時,發送主機通過ARP協議獲得的將不是目的主機的真實MAC地址,而是一台可以通往區域網外的路由器的MAC地址。於是此後發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送。這種情況稱為ARP代理(ARP Proxy)。
在每台安裝有TCP/IP協議的電腦或路由器裡都有一個ARP緩存表,表裡的IP位址與MAC地址是一對應的。以主機A(192.168.38.10)向主機B(192.168.38.11)發送數據為例。當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP位址。如果找到了,也就知道了目標MAC地址為(00-BB-00-62-C2-02), 直接把目標MAC地址寫入幀裡面發送就可以了;如果在ARP緩存表中沒有找到相對應的IP位址,主機A就會在網路上發送一個廣播(ARP request),目標MAC地址是「FF.FF.FF.FF.FF.FF」,這表示向同一網段內的所有主機發出這樣的詢 問:「192.168.38.11的MAC地址是什麼?」網路上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的回應(ARP response):「192.168.38.11的MAC地址是(00-BB-00-62-C2-02)」。 這樣,主機A就知道了主機B的MAC地址,它就可以向主機B發送信息了。同時它還更新了自己的ARP緩存表,下次再向主機B發送信息時,直接從ARP緩存 表裡查找就可以了。ARP緩存表採用了老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。
A wealth of knowledge and intelligence to assist you.
Follow Knowledge Academy