天天看點

通過ARP查詢目标路由器的MAC位址

什麼是ARP?

ARP(Address Resolution Protocol)即位址解析協定, 用于實作從 IP 位址到 MAC 位址的映射,即詢問目标IP對應的MAC位址。

ARP如何實作轉換?

這裡我們需要使用ARP,它其實非常簡單。

在以太網中,有一種叫作廣播的方法,可以把包發給連接配接在同一以太網中的所有裝置

。ARP就是利用廣播對所有裝置提問:“××這個IP位址是誰的?請把你的MAC位址告訴我。”然後就會有人回答:“這個IP位址是我的,我的MAC位址是××××。”(圖2.19)

通過ARP查詢目标路由器的MAC位址

如果對方和自己處于同一個子網中,那麼通過上面的操作就可以得到對方的MAC位址。然後,我們将這個MAC位址寫入MAC頭部,MAC頭部就完成了。

不過,如果每次發送包都要這樣查詢一次,網絡中就會增加很多ARP包,是以我們會将查詢結果放到一塊叫作ARP緩存的記憶體空間中留着以後用。也就是說,

在發送包時,先查詢一下ARP緩存,如果其中已經儲存了對方的MAC位址,就不需要發送ARP查詢

,直接使用ARP緩存中的位址,而當ARP緩存中不存在對方MAC位址時,則發送ARP查詢。顯示ARP緩存的方法和MAC位址的寫法如圖2.20和圖2.21所示,供大家參考。

通過ARP查詢目标路由器的MAC位址
通過ARP查詢目标路由器的MAC位址

有了ARP緩存,我們可以減少ARP包的數量,但如果總是使用ARP緩存中儲存的位址也會産生問題

。例如當IP位址發生變化時,ARP緩存的内容就會和現實發生差異。為了防止這種問題的發生,ARP緩存中的值在經過一段時間後會被删除,一般這個時間在幾分鐘左右。這個删除的操作非常簡單粗暴,不管ARP緩存中的内容是否有效,隻要經過幾分鐘就全部删掉,這樣就不會出問題了。當位址從ARP緩存中删除後,隻要重新執行一次ARP查詢就可以再次獲得位址了

上面這個政策能夠在幾分鐘後消除緩存和現實的差異,但IP位址剛剛發生改變的時候,ARP緩存中依然會保留老的位址,這時就會發生通信的異常。

将MAC頭部加在IP頭部的前面,整個包就完成了。到這裡為止,

整個打包的工作是由IP子產品負責的

。有人認為,MAC頭部是以太網需要的内容,并不屬于IP的職責範圍,但從現實來看,讓IP負責整個打包工作是有利的。如果在交給網卡之前,IP子產品能夠完成整個打包工作,那麼網卡隻要将打好的包發送出去就可以了。對于除IP以外的其他類型的包也是一樣,如果在交給網卡之前完成打包,那麼對于網卡來說,發送的操作和發送IP包是完全相同的。這樣一來,同一塊網卡就可以支援各種類型的包。

總結

  • 利用ARP可以通過IP找到mac位址
  • 通過ARP可以查詢目标路由器的MAC位址

問題

  • 為什麼讓IP子產品負責整個打包工作?

繼續閱讀