開發(fā)以太網(wǎng)的小伙伴,對ARP(Address Resolution Protocol,地址解析協(xié)議)已經(jīng)見怪不怪。在控制器剛啟動階段,總線上會看到一些ARP報文。那么,問題來了,為什么在控制器啟動階段,會有ARP報文呢?ARP報文到底扮演著什么樣的角色呢?本文,聊一聊ARP。
1、以太網(wǎng)通信基礎(chǔ)
我們知道,以太網(wǎng)是點對點(Point-to-Point)的通信方式。如果兩個以太網(wǎng)節(jié)點建立通信,發(fā)送節(jié)點首先需要知道和誰通信。發(fā)送節(jié)點如何知道和誰通信呢?
答:MAC地址(Media Access Control Address)。MAC地址也稱為網(wǎng)卡,每一個網(wǎng)卡分配唯一MAC地址(長度為6 Bytes)。所以,知道目標節(jié)點MAC地址,才能知道信息要發(fā)給誰。而在整車的網(wǎng)絡(luò)拓撲中,節(jié)點之間的數(shù)據(jù)交互由交換機(Switch)進行二層轉(zhuǎn)發(fā),示意如下:

(一)ARP幀格式
不管何種總線,為了確保信息有效交互,會根據(jù)軟、硬件層級,設(shè)計不同的通信協(xié)議。本文關(guān)注鏈路層的以太網(wǎng)幀和網(wǎng)絡(luò)層的ARP協(xié)議,ARP報文封裝在以太網(wǎng)幀的數(shù)據(jù)段傳輸,如下所示:

硬件類型(2 Byte):表示硬件地址類型,eg:以太網(wǎng)為1
協(xié)議類型(2 Byte):表示上層協(xié)議類型,eg:IPv4為0x0800
硬件地址長度(1Byte):表示硬件地址長度,eg:以太網(wǎng)為6
協(xié)議地址長度(1Byte):表示協(xié)議地址長度,eg:IPv4為4
操作碼(Option,2 Byte):表示ARP請求或響應(yīng)的操作類型,eg:請求(Request)為1,響應(yīng)(Replay)為2
源MAC地址(6 Byte):發(fā)送ARP請求的主機的MAC地址
源IP地址(4Byte):發(fā)送ARP請求的主機的IP地址
目標MAC地址(6Byte):目標主機的MAC地址(在ARP請求中通常為空,即:全0x00)
目標IP地址(4Byte):目標主機的IP地址
通過ARP報文格式可以看出,ARP記錄著IP與MAC的對應(yīng)關(guān)系,即:通過IP關(guān)聯(lián)的MAC地址,最終找到通信的目標節(jié)點。
而在TCP/IP的分層結(jié)構(gòu)中,ARP屬于網(wǎng)絡(luò)層,因此,網(wǎng)絡(luò)層的源節(jié)點實體、目標節(jié)點實體之間通過IP地址識別彼此。但是,ARP報文封裝在以太網(wǎng)幀中,依賴以太網(wǎng)鏈路層傳輸,而以太網(wǎng)鏈路層的尋址方式為MAC地址,因此,需要把IP地址轉(zhuǎn)換成MAC地址才能將上層待發(fā)送的信息發(fā)送給目標節(jié)點,所以,這就是ARP出現(xiàn)的意義。
首先,同一局域網(wǎng)內(nèi)的每個以太網(wǎng)節(jié)點,網(wǎng)絡(luò)層會分配一個或者多個IP,數(shù)據(jù)鏈路層固化一個唯一MAC地址,由

其次,通過ARP報文獲取目標節(jié)點的MAC,形成目標節(jié)點的

(二)交換機如何轉(zhuǎn)發(fā)
ARP Table形成以后,解決了發(fā)送節(jié)點知道發(fā)送給誰的問題,但是,還有一個問題需要解決:交換機(Switch)如何知道信息轉(zhuǎn)發(fā)給誰呢?
答:路由表(Route Table),示意如下:

當交換機某個端口(Port #n)收到以太網(wǎng)幀以后,會通過目標節(jié)點的MAC地址查找Route Table,如果找到目標節(jié)點端口號,則將信息轉(zhuǎn)發(fā)出去,實現(xiàn)路由的目的。同時,也會檢查發(fā)送節(jié)點的MAC地址是否已經(jīng)緩存,如果Route Table中沒有緩存發(fā)送節(jié)點的MAC,則將發(fā)送節(jié)點的MAC地址和入口Port緩存到Route Table。
2、ARP通信原理
(一)
控制器初始啟動階段,ARP緩存表為空,即:ARP Table沒有目標節(jié)點的

發(fā)送節(jié)點(MCU2)發(fā)送的ARP報文信息如下所示:

解析:
發(fā)送節(jié)點發(fā)送ARP報文時,會包含發(fā)送節(jié)點的IP(192.168.0.2)、發(fā)送節(jié)點MAC(020000:02)、目標節(jié)點的IP(192.168.0.1);
由于不知道目標節(jié)點的MAC,所以,在ARP報文中,目標節(jié)點的MAC地址(上圖中的Target Protocol Address)用全0x00表示;
由于發(fā)送節(jié)點不知道目標節(jié)點在哪個位置,所以,發(fā)送節(jié)點發(fā)送ARP請求時,使用廣播的方式發(fā)送,即:Destination為全0xFF。
(二)
當交換機收到MCU2的ARP請求報文以后,發(fā)現(xiàn):路由表中找不到目標節(jié)點的Port(初始階段為空),于是,交換機向所有端口廣播ARP報文(不包含接收端口),同時,緩存MCU2的MAC2和Port2,如下所示:

(三)
當目標節(jié)點(MCU1)收到ARP請求報文以后,發(fā)現(xiàn)MAC地址與自身匹配,則接收該ARP報文,同時將發(fā)送節(jié)點的MAC2緩存下來。MCU1之后給出ARP響應(yīng),由于知道了發(fā)送節(jié)點的MAC地址,所以,MCU1響應(yīng)ARP報文時,單播發(fā)送ARP報文。當交換機收到MCU1的ARP響應(yīng)以后,發(fā)現(xiàn)目標節(jié)點是MCU2,而且MCU2的MAC2已經(jīng)關(guān)聯(lián)Port2,則直接將ARP報文發(fā)送給MCU2,同時,交換機緩存

提示:非目標節(jié)點收到ARP報文以后,直接丟棄。
響應(yīng)節(jié)點(MCU1)發(fā)送的ARP報文信息如下所示:

解析: ARP響應(yīng)報文屬于單播。
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
114文章
17791瀏覽量
193209 -
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5998瀏覽量
180854 -
交換機
+關(guān)注
關(guān)注
23文章
2904瀏覽量
104470 -
ARP
+關(guān)注
關(guān)注
0文章
51瀏覽量
15354
發(fā)布評論請先 登錄
以太網(wǎng)通信基礎(chǔ)知識
ARP地址解析協(xié)議簡介和基本原理
STM32F429能否通過設(shè)置源地址濾過將非業(yè)務(wù)主機的arp廣播報文濾掉?
淺談如何防治ARP病毒
【AC620 FPGA試用體驗】以太網(wǎng)ARP幀發(fā)包實例(手動CRC)
掌握LwIP中ARP的實現(xiàn)原理與作用
ARP報文及其在Lwip的實現(xiàn)
STM32F429能否通過設(shè)置源地址濾過將非業(yè)務(wù)主機的arp廣播報文濾掉?
ARP協(xié)議攻擊及其解決方案
地址解析協(xié)議ARP
地址解析協(xié)議(ARP),地址解析協(xié)議(ARP)是什么意思
arp協(xié)議的作用是什么?arp協(xié)議的工作原理介紹
ARP是什么意思?ARP是什么協(xié)議?ARP協(xié)議用于什么地方
arp攻擊原理_arp攻擊怎么解決
靜態(tài) ARP 表項的潛在問題
為什么在控制器啟動階段會有ARP報文呢?ARP報文扮演什么角色?
評論