Related Posts with Thumbnails

2013年7月3日 星期三

[網路]淺談ARP(Address Resolution Protocol)運作原理

 用途


  在乙太網路上,資料的傳遞必須要有實體位址(MAC Address),Layer 2設備會驗證Frame的實體位址,不是找它的一律捨棄,但設備一開機總不可能就有所有設備的實體位址吧?所以就需要ARP協定來協助取得各個設備的實體位址。

介紹


  ARP是利用乙太網路的廣播功能所設計出來的位址解析協定,它的主要特性是它的位址對應關係是動態的,以查詢的方式來獲得IP位址(IP Address)和實體位址(MAC Address / Physical Address)的對應關係。

  只要是Layer 3的設備都一定會有ARP Cache,並且會在ARP快取內建立APR表格(ARP Table)用來記錄IP位址和實體位址的對應關係。這個Table會依據自身的存活時間遞減而消失,以確保資料的正確性。

原理


  當發送主機有一個封包要傳送給目標主機時,並且已獲得目標主機的 IP 位址,那發送主機會先檢查自己的 ARP 表格中有沒有該 IP 位址的實體位址對應。

如果有,就直接將此IP所對應的MAC Address填入Layer 2表頭。
如果沒有,則向網路發出一個 ARP Request 的廣播封包,查詢目標主機的實體位址。


例:PC0要Ping PC1,且該網段還有一台PC2


綠色為ARP Request 的廣播封包,L2表頭內的目標實體位址全為FFFF
黃綠色為ICMP(Ping)封包,等待填入L2表頭內的目標實體位址

ARP Request封包
當初我看到這張圖時心裡就想,沒有IP位址的話L3不是沒辦法辨認嗎?
後來才發現,原來ARP和IP同屬於Layer 3的 Protocol,拆開後發現是給ARP的封包就丟給ARP處理囉!


由於是廣播封包,所以L2會移除表頭後交給L3做處理,PC2的ARP接收後發現目標IP並不是找他,故丟棄之。

PC1在收到ARP Request封包後發現是找自己的,便將PC0的IP位址及MAC位址對應寫到ARP表格裡以及回傳一個ARP Reply封包給PC0。

ARP Reply封包內包含Source MAC/IP及Target MAC/IP。(ARP Request沒有目標MAC Address)

PC0收到ARP Reply後,將目標MAC Address填入ICMP(Ping)封包的L2表頭之後就開始執行Ping PC1的動作。(註:綠色為ARP Reply、橘色為ICMP)

那PC2會不會將PC0的對應關係寫進去ARP表格啊?


上面也提到了,雖然L2會往上送,但L3會捨棄此封包,所以ARP表格內不會有PC0的記錄。



1 則留言: