網(wǎng)絡(luò)設(shè)備有數(shù)據(jù)要發(fā)送給另一臺網(wǎng)絡(luò)設(shè)備時,必須要知道對方的網(wǎng)絡(luò)層地址(即IP地址)。IP地址由網(wǎng)絡(luò)層來提供,但是僅有IP地址是不夠的,IP數(shù)據(jù)報文必須封裝成幀才能通過數(shù)據(jù)鏈路進行發(fā)送。數(shù)據(jù)幀必須要包含目的mac地址,因此發(fā)送端還必須獲取到目的MAC地址。通過目的IP地址二獲取的MAC地址的過程是由ARP(Address Resolution Protocol)協(xié)議來實現(xiàn)的。
來歷
地址解析協(xié)議由互聯(lián)網(wǎng)工程任務(wù)組(IETF)在1982年11月發(fā)布的RFC 826中描述制定。 [1] 地址解析協(xié)議是IPv4中必不可少的協(xié)議,而IPv4是使用較為廣泛的互聯(lián)網(wǎng)協(xié)議版本(IPv6仍處在部署的初期)。
OSI模型把網(wǎng)絡(luò)工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網(wǎng)發(fā)送IP數(shù)據(jù)包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由于發(fā)送時只知道目標IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協(xié)議。使用地址解析協(xié)議,可根據(jù)網(wǎng)絡(luò)層IP數(shù)據(jù)包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。
目的MAC地址
一臺網(wǎng)絡(luò)設(shè)備要發(fā)送數(shù)據(jù)給另外一臺網(wǎng)絡(luò)設(shè)時,必須要知道對方的IP地址。但是,僅有IP地址是不夠的,因為IP數(shù)據(jù)報文必須封裝成幀才能通過數(shù)據(jù)鏈路層進行發(fā)送,而數(shù)據(jù)幀必須要包含目的MAC地址,因此發(fā)送端還必須獲取到目的MAC地址。每一個網(wǎng)絡(luò)設(shè)備在數(shù)據(jù)封裝前都需要獲取下一跳的MAC地址。IP地址由網(wǎng)絡(luò)層來提供,MAC地址通過ARP協(xié)議來獲取。ARP協(xié)議是TCP/IP協(xié)議簇中的重要組成部分,ARP能夠通過目的IP地址發(fā)現(xiàn)目標設(shè)備的MAC地址,從而實現(xiàn)數(shù)據(jù)鏈路層的可達性。
ARP數(shù)據(jù)包格式
網(wǎng)絡(luò)設(shè)備通過ARP報文來發(fā)現(xiàn)目的MAC地址。ARP報文中包含以下字段:
1)Hardware Type:硬件地址類型,一般為以太網(wǎng);
2)Protocol Type:表示三層協(xié)議地址類型,一般為IP;
3)Hardware Length和Protocol Length為MAC地址和IP地址的長度,單位是字節(jié); (這個理論上可以不要,因為前面已經(jīng)確定了硬件類型和協(xié)議類型)
4)Operation Code指定了ARP報文的類型,包括ARP request和ARP reply;
5)Source Hardware Address 指的是發(fā)送ARP報文的設(shè)備MAC地址;
6)Source Protocol Address指的是發(fā)送ARP報文的設(shè)備IP地址;
7)Destination Hardware Address指的是接收者MAC地址,在ARP request報文中,該字段值為0;
8)Destination Protocol Address指的是接受者的IP地址。
ARP工作過程
圖片.png
通過ARP協(xié)議,網(wǎng)絡(luò)設(shè)備可以建立目標IP地址和MAC地址之間的映射。網(wǎng)絡(luò)設(shè)備通過網(wǎng)絡(luò)層獲取到目的IP地址之后,還要判斷目的MAC地址是否已知。
ARP緩存