1. 程式人生 > >地址解析協議(ARP)

地址解析協議(ARP)

1.3 開始 linu 網絡 報文結構 自己的 不可 分析 png

地址解析協議(ARP)

1.作用

為什麽主機需要有各自的ipv4地址和mac地址才能通信呢?

ip屬於網絡層,mac地址屬於數據鏈路層。通過沿ip傳輸的路徑是邏輯路徑,由路由設備根據路由表進行轉發,而一條邏輯路徑包括多個數據鏈路。沿獨立的數據鏈路傳播的時候,就需要用到一種數據鏈路標識,以太網中的mac地址就起到這樣的作用。

通常,主機剛開始發送數據的時候知道對方的ip地址,而不知道對方的mac地址。這時候就需要用到arp協議獲悉到目的主機的mac地址,成功獲悉到後便能正常封裝數據包,並發送出去。

2.報文結構

技術分享圖片

3.代理ARP

代理arp被路由器作為向主機表明自身可用的一種手段。
當開啟代理ARP的路由器接口收到一個arp請求後,會查看目的ip,是否能根據本地的路由表到達,若可到達,則將自身收到arp請求的接口的mac地址回復給請求節點,告訴其去往目的網絡可往這裏發送。若不可達,則無視。

靜態路由與代理arp

技術分享圖片

R2的g0/2接口開啟代理arp功能並有返回192.168.1.0/24的靜態路由

當R1使用靜態路由
ip route 10.1.1.0 255.255.255.0 g0/0

技術分享圖片
pc0分別ping其他兩臺主機

技術分享圖片
R1的arp表

技術分享圖片
R2的g0/2口接口信息

分析:
PC0 ping PC1,R1轉發數據包的時候,自身arp表中沒有10.1.1.1地址對應的mac地址,於是發送一條arp廣播請求,R2的g0/2接口收到arp請求,由於開啟了代理arp,並且擁有到達目的網絡的ip,所以將自己g0/2的mac地址回復給R1(請求者)。當PC0 ping PC2的時候,依然重復此步驟。
故R1的arp表中,10.1.1.1與10.1.1.2所對應的mac地址都是R2的g0/2口的mac地址。(如果arp表中多個ip地址映射到單一的mac地址往往是開啟了代理arp)
使用跟出接口的靜態路由,轉發每一個報文都要發送arp查詢,在MA網絡中,如果ARP報文大量發送,易造成廣播風暴。

若將R1的路由改為
ip route 10.1.1.0 255.255.255.0 12.1.1.2

技術分享圖片

技術分享圖片

R1轉發數據包之前,會先發送arp請求查詢下一跳(12.1.1.2)的mac地址,之後這條路徑就無需每次都發送arp查詢。

4.無故(Gratuitous) ARP

主機偶爾會以自己的IPv4地址作為目標地址發送ARP請求,此為無故ARP,或稱為免費ARP。其主要有兩種作用:

  • 用來檢測網絡中是否有ipv4地址沖突
  • 用於通告一個新的數據鏈路標識符

技術分享圖片

將R1的ip地址先配置為192.168.1.1/24,再配置成192.168.1.3/24。

技術分享圖片

通過抓包分析可知:gratuitous arp是一個replay arp,操作碼值為2,其發送者和接受者皆為自身。 路由器每次更改接口ip地址的時候,都會發送一個gratuitous arp來避免ip沖突。另外,windows和linux啟動後都會發送無故arp。

若將R2的f0/0的ip地址也改為192.168.1.3,則會出現地址沖突錯誤。
技術分享圖片

技術分享圖片

如果不解決這個問題,路由器會繼續一直發送gratuitous arp......

5.反向ARP(RARP)

RARP作用是將數據鏈路標識符映射為ipv4地址,早期的無盤工作站中會使用到。不過RARP在很大程度上被DHCP和BOOTP的擴展協議所替代,他們能提供更多的信息。

6.

地址解析協議(ARP)