網絡設備有數據要發送給另一臺網絡設備時,必須要知道對方的網絡層地址 (即IP地址)。IP地址由網絡層來提供,但是僅有IP地址是不夠的,IP數據報文必須封裝成幀才能通過數據鏈路進行發送。數據幀必須要包含目的MAC地址,因此發送端還必須獲取到目的MAC地址。
通過目的IP地址而獲取目的MAC地址的過程是由ARP(Address Resolution Protocol)協議來實現的。
![12、90秒快速“讀懂”ARP協議及報文格式](http://p2.ttnews.xyz/loading.gif)
數據鏈路層在進行數據封裝時,需要目的MAC地址。
ARP報文格式
ARP報文不能穿越路由器,不能被轉發到其他廣播域。
![12、90秒快速“讀懂”ARP協議及報文格式](http://p2.ttnews.xyz/loading.gif)
網絡設備通過ARP報文來發現目的MAC地址。ARP報文中包含以下字段:
HardwareType表示硬件地址類型,一般為以太網;
Protocol Type表示三層協議地址類型,一般為IP;
Hardware Length和Protocol Length為MAC地址和IP地址的長度,單位是字節; Operation Code指定了ARP報文的類型,包括ARP Request和ARP Reply;
Source Hardware Address指的是發送ARP報文的設備MAC地址;
Source Protocol Address指的是發送ARP報文的設備IP地址;
Destination Hardware Address指的是接收者MAC地址,在ARP Request報文中,該字段值為0;
Destination Protocol Address指的是接收者的IP地址。
一、ARP請求(ARP Request)
本例中,主機A的ARP緩存表中不存在主機C的MAC地址,所以主機A會發送ARP Request 來獲取目的MAC地址。
二、ARP響應(ARP Reply)
所有的主機接收到該ARP Request報文後,都會檢查它的目的協議地址字段與自身的IP地址是否匹配。
如果不匹配,則該主機將不會響應該ARP Request報文。
如果匹配,則該主機會將ARP報文中的源MAC地址和源IP地址信息記錄到自己的ARP緩存表中,然後通過 ARP Reply報文進行響應。
主機C會向主機A回應ARP RepIy報文。ARP RepIy報文中的源協議地址是主機C自己的IP地址,目標協議地址是主機A的IP地址,目的MAC地址是主機A的MAC地址,源MAC地址是自己的MAC地址,同時Operation Code被設置為Reply。ARP Reply報文通過單播傳送。
三、ARP緩存
主機A收到ARP Reply以後會檢查ARP報文中目的MAC地址是否與自己的MAC匹配。如果匹配,ARP報文中的源MAC地址和源IP地址會被記錄到主機A的ARP緩存表中。
閱讀更多 ThunderMoon 的文章