什么是地址解析協(xié)議(ARP)?

ARP 角色
地址解析協(xié)議 (ARP) 是計(jì)算機(jī)網(wǎng)絡(luò)中非常基礎(chǔ)的協(xié)議。當(dāng) PC 想要通過(guò)網(wǎng)絡(luò)發(fā)送消息時(shí),它必須將數(shù)據(jù)封裝到 OSI 模型的各個(gè)層中。在每一層,它必須在第 4 層報(bào)頭中填寫 TCP/UDP 端口等所有報(bào)頭信息,在第 3 層報(bào)頭中填寫源和目標(biāo) IP 地址,在第 2 層報(bào)頭中填寫源和目標(biāo) MAC 地址。如果您考慮一下,除了目標(biāo) MAC 地址之外,所有這些信息都可供最終客戶端使用。?已引入?地址解析協(xié)議 (ARP) ,以根據(jù)本地網(wǎng)絡(luò)中的給定 IP 地址解析 MAC 地址。
讓我們看一下圖 1 所示的示例。

圖 1. 什么是地址解析協(xié)議 (ARP)?
PC1 嘗試 ping PC3,它在同一個(gè)局域網(wǎng)和同一個(gè)子網(wǎng) 10.1.1.0/24。當(dāng)用戶執(zhí)行命令ping 10.1.1.3時(shí),PC1 開始將 ICMP 請(qǐng)求 (ping) 封裝到以太網(wǎng)幀中,然后通過(guò)網(wǎng)絡(luò)發(fā)送。讓我們看看PC是如何構(gòu)造協(xié)議數(shù)據(jù)單元(PDU)的:
在第 4 層- PC1 通過(guò)發(fā)送 ICMP Echo Request 知道 ping 工作并等待 ICMP Echo Response。因此它將第 4 層的協(xié)議設(shè)置為 ICMP,并設(shè)置了 Echo Request 標(biāo)志。?因此,這一層所需的一切都是可用的。
在第 3 層- PC1 知道目標(biāo) IP 地址,用戶在 ping 10.1.1.3 命令中明確提及,因此將其放入目標(biāo) IP 字段。PC1 知道自己配置的 IP 地址 10.1.1.1 并將其放在源字段中。因此,這一層所需的一切都是可用的。
稍后 2?- PC1 知道自己配置的 MAC 地址并放入源字段。但是 PC1 無(wú)法知道 LAN 中的哪個(gè)終端客戶端配置了 10.1.1.3 以及它的 MAC 地址是什么。因此目標(biāo) MAC 地址對(duì) PC1 不可用,它必須使用ARP才能獲得它。?
ARP 的工作原理
ARP 使用廣播通信(一對(duì)多)來(lái)詢問(wèn) LAN 內(nèi)的所有終端客戶端,給定 IP 的物理地址是什么。?
ARP 消息
ARP操作中有兩種主要類型的數(shù)據(jù)包:
ARP 請(qǐng)求
ARP回復(fù)

圖 2 顯示了這兩種類型的示例??梢钥吹紸RP頭中有四個(gè)字段:
源硬件地址 (MAC)
源協(xié)議地址 (IP)
目標(biāo)硬件地址 (MAC)
目標(biāo)協(xié)議地址 (IP)
圖 2. ARP 消息
注意,在ARP 請(qǐng)求消息中,目的 MAC 地址是眾所周知的廣播地址FFFF-FFFF-FFFF。這向 LAN 中的交換機(jī)發(fā)出信號(hào),表明這是廣播通信,并且 LAN 中的所有連接設(shè)備都必須接收幀的副本。另一個(gè)需要注意的重要值是目標(biāo) MAC是0000-0000-0000。這向目標(biāo) IP 的所有者發(fā)出信號(hào),表明發(fā)送者正在嘗試解析此 IP 的物理地址。
請(qǐng)注意,在?ARP 回復(fù)消息中,源 MAC 地址和目標(biāo) MAC 地址都是單播的。?

圖 3. 使用 ARP 的典型案例
出現(xiàn)這種情況有四種典型情況:
1.??? 主機(jī)想要向同一網(wǎng)絡(luò)中的另一臺(tái)主機(jī)發(fā)送數(shù)據(jù)。例如,PC2 向 PC3 發(fā)送消息。
o?? PC2 發(fā)送關(guān)于 PC3 的 IP 地址 192.168.1.3 的 ARP 請(qǐng)求。
o?? LAN 上的每個(gè)人都會(huì)收到一份 ARP 幀的副本。?
o?? PC3 回復(fù)其物理地址 BBBB-BBBB-BBBB。所有其他主機(jī)都會(huì)丟棄 ARP 請(qǐng)求。
2.??? 主機(jī)想要將數(shù)據(jù)發(fā)送到另一個(gè)網(wǎng)絡(luò)中的另一個(gè)主機(jī)。?例如,PC2 向 google.com 發(fā)送一條消息。
o?? PC2 查看它的路由表。
o?? 查找其默認(rèn)網(wǎng)關(guān) 192.168.1.1 的 IP 地址。
o?? 發(fā)送關(guān)于默認(rèn)網(wǎng)關(guān) IP 地址 192.168.1.1 的 ARP 請(qǐng)求。
o?? LAN 上的每個(gè)人都會(huì)收到一份 ARP 幀的副本,包括 Router1。?
o?? Router1 回復(fù)其物理地址 DDDD-DDDD-DDDD。
3.??? 路由器接收發(fā)往本地連接網(wǎng)絡(luò)中主機(jī)的數(shù)據(jù)。Router1 接收發(fā)往 PC2 的數(shù)據(jù)。
o?? 路由器 1 發(fā)送關(guān)于目標(biāo) IP 地址 192.168.1.2 的 ARP 請(qǐng)求。
o?? LAN 上的每個(gè)人都會(huì)收到一份 ARP 幀的副本。?
o?? PC2 用它的物理地址回復(fù)。所有其他主機(jī)都會(huì)丟棄 ARP 請(qǐng)求。
4.??? 路由器接收發(fā)往另一個(gè)網(wǎng)絡(luò)上的主機(jī)的數(shù)據(jù)。Router2 接收發(fā)往 PC2 的數(shù)據(jù)。
o?? Router2 檢查其路由表。
o?? 發(fā)現(xiàn)到 PC2 的下一跳地址是 34.43.12.1。
o?? 發(fā)送關(guān)于下一跳 IP 地址 34.43.12.1 的 ARP 請(qǐng)求。
o?? Router1 收到 ARP 請(qǐng)求的副本。
o?? Router1 回復(fù)其物理地址 AD12-43AB-F432。
ARP 表(ARP 緩存)?
當(dāng)設(shè)備成功解析給定 IP 的 MAC 地址時(shí),它將 IP 到 MAC 綁定存儲(chǔ)在稱為ARP 表的表中。后續(xù)通信使用此緩存綁定,而不是再次發(fā)送 ARP 請(qǐng)求。讓我們看一下 Cisco 路由器的 ARP 表。?

默認(rèn)情況下,表中的每個(gè)條目都會(huì)保留 240 分鐘(4 小時(shí))。此值稱為ARP 超時(shí),可以為每個(gè)接口設(shè)置不同的值。您可以通過(guò)查看show interface的輸出來(lái)檢查它。

運(yùn)行 Windows 或 Unix 的主機(jī)的 ARP Cache 可以通過(guò)在命令提示符窗口中執(zhí)行arp -a來(lái)檢查

概括
地址解析協(xié)議 (ARP) 是一種解析LAN 中給定邏輯地址 (?IP ) 的物理地址 (?MAC ) 的機(jī)制:?IP 到 MAC 綁定。
一個(gè)ARP 請(qǐng)求被封裝在一個(gè)廣播幀中。因此,這是一對(duì)多的通信,局域網(wǎng)中的每個(gè)主機(jī)都會(huì)收到一份 ARP 請(qǐng)求的副本。只有目標(biāo) IP 的所有者才會(huì)回復(fù)。
一個(gè)ARP 應(yīng)答?被封裝在一個(gè)單播幀中。因此,它是?請(qǐng)求者和答復(fù)者之間的一對(duì)一通信。
當(dāng)設(shè)備接收到 IP 的物理地址時(shí),它會(huì)在其ARP 表(ARP 緩存)中創(chuàng)建一個(gè)條目。任何后續(xù)通信都使用緩存的條目。
ARP 表中的每個(gè)條目默認(rèn)保留 4 小時(shí)。這稱為ARP 超時(shí)。