網絡設備有數據要發送給另一臺網絡設備時,必須要知道對方的網絡層地址(即IP地址)。IP地址由網絡層來提供,但是僅有IP地址是不夠的,IP數據報文必須封裝成幀才能通過數據鏈路進行發送。數據幀必須要包含目的mac地址,因此發送端還必須獲取到目的MAC地址。通過目的IP地址二獲取的MAC地址的過程是由ARP(Address Resolution Protocol)協議來實現的。

來歷
地址解析協議由互聯網工程任務組(IETF)在1982年11月發布的RFC 826中描述制定。 [1] 地址解析協議是IPv4中必不可少的協議,而IPv4是使用較為廣泛的互聯網協議版本(IPv6仍處在部署的初期)。
OSI模型把網絡工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網發送IP數據包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由于發送時只知道目標IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協議。使用地址解析協議,可根據網絡層IP數據包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。
目的MAC地址
一臺網絡設備要發送數據給另外一臺網絡設時,必須要知道對方的IP地址。但是,僅有IP地址是不夠的,因為IP數據報文必須封裝成幀才能通過數據鏈路層進行發送,而數據幀必須要包含目的MAC地址,因此發送端還必須獲取到目的MAC地址。每一個網絡設備在數據封裝前都需要獲取下一跳的MAC地址。IP地址由網絡層來提供,MAC地址通過ARP協議來獲取。ARP協議是TCP/IP協議簇中的重要組成部分,ARP能夠通過目的IP地址發現目標設備的MAC地址,從而實現數據鏈路層的可達性。
ARP數據包格式

網絡設備通過ARP報文來發現目的MAC地址。ARP報文中包含以下字段:
1)Hardware Type:硬件地址類型,一般為以太網;
2)Protocol Type:表示三層協議地址類型,一般為IP;
3)Hardware Length和Protocol Length為MAC地址和IP地址的長度,單位是字節; (這個理論上可以不要,因為前面已經確定了硬件類型和協議類型)
4)Operation Code指定了ARP報文的類型,包括ARP request和ARP reply;
5)Source Hardware Address 指的是發送ARP報文的設備MAC地址;
6)Source Protocol Address指的是發送ARP報文的設備IP地址;
7)Destination Hardware Address指的是接收者MAC地址,在ARP request報文中,該字段值為0;
8)Destination Protocol Address指的是接受者的IP地址。
ARP工作過程

圖片.png
通過ARP協議,網絡設備可以建立目標IP地址和MAC地址之間的映射。網絡設備通過網絡層獲取到目的IP地址之后,還要判斷目的MAC地址是否已知。
ARP緩存
