開發以太網的小伙伴,對ARP(Address Resolution Protocol,地址解析協議)已經見怪不怪。在控制器剛啟動階段,總線上會看到一些ARP報文。那么,問題來了,為什么在控制器啟動階段,會有ARP報文呢?ARP報文到底扮演著什么樣的角色呢?本文,聊一聊ARP。
1、以太網通信基礎
我們知道,以太網是點對點(Point-to-Point)的通信方式。如果兩個以太網節點建立通信,發送節點首先需要知道和誰通信。發送節點如何知道和誰通信呢?答:MAC地址(Media Access Control Address)。MAC地址也稱為網卡,每一個網卡分配唯一MAC地址(長度為6 Bytes)。所以,知道目標節點MAC地址,才能知道信息要發給誰。而在整車的網絡拓撲中,節點之間的數據交互由交換機(Switch)進行二層轉發,示意如下:
(一)ARP幀格式
不管何種總線,為了確保信息有效交互,會根據軟、硬件層級,設計不同的通信協議。本文關注鏈路層的以太網幀和網絡層的ARP協議,ARP報文封裝在以太網幀的數據段傳輸,如下所示:
硬件類型(2 Byte):表示硬件地址類型,eg:以太網為1
協議類型(2 Byte):表示上層協議類型,eg:IPv4為0x0800
硬件地址長度(1Byte):表示硬件地址長度,eg:以太網為6
協議地址長度(1Byte):表示協議地址長度,eg:IPv4為4
操作碼(Option,2 Byte):表示ARP請求或響應的操作類型,eg:請求(Request)為1,響應(Replay)為2
源MAC地址(6 Byte):發送ARP請求的主機的MAC地址
源IP地址(4Byte):發送ARP請求的主機的IP地址
目標MAC地址(6Byte):目標主機的MAC地址(在ARP請求中通常為空,即:全0x00)
目標IP地址(4Byte):目標主機的IP地址
通過ARP報文格式可以看出,ARP記錄著IP與MAC的對應關系,即:通過IP關聯的MAC地址,最終找到通信的目標節點。而在TCP/IP的分層結構中,ARP屬于網絡層,因此,網絡層的源節點實體、目標節點實體之間通過IP地址識別彼此。但是,ARP報文封裝在以太網幀中,依賴以太網鏈路層傳輸,而以太網鏈路層的尋址方式為MAC地址,因此,需要把IP地址轉換成MAC地址才能將上層待發送的信息發送給目標節點,所以,這就是ARP出現的意義。 首先,同一局域網內的每個以太網節點,網絡層會分配一個或者多個IP,數據鏈路層固化一個唯一MAC地址,由
其次,通過ARP報文獲取目標節點的MAC,形成目標節點的
(二)交換機如何轉發 ARP Table形成以后,解決了發送節點知道發送給誰的問題,但是,還有一個問題需要解決:交換機(Switch)如何知道信息轉發給誰呢?答:路由表(Route Table),示意如下:
當交換機某個端口(Port #n)收到以太網幀以后,會通過目標節點的MAC地址查找Route Table,如果找到目標節點端口號,則將信息轉發出去,實現路由的目的。同時,也會檢查發送節點的MAC地址是否已經緩存,如果Route Table中沒有緩存發送節點的MAC,則將發送節點的MAC地址和入口Port緩存到Route Table。
2、ARP通信原理
(一)
控制器初始啟動階段,ARP緩存表為空,即:ARP Table沒有目標節點的
發送節點(MCU2)發送的ARP報文信息如下所示:
解析:
發送節點發送ARP報文時,會包含發送節點的IP(192.168.0.2)、發送節點MAC(020000:02)、目標節點的IP(192.168.0.1);
由于不知道目標節點的MAC,所以,在ARP報文中,目標節點的MAC地址(上圖中的Target Protocol Address)用全0x00表示;
由于發送節點不知道目標節點在哪個位置,所以,發送節點發送ARP請求時,使用廣播的方式發送,即:Destination為全0xFF。
(二)
當交換機收到MCU2的ARP請求報文以后,發現:路由表中找不到目標節點的Port(初始階段為空),于是,交換機向所有端口廣播ARP報文(不包含接收端口),同時,緩存MCU2的MAC2和Port2,如下所示:
(三)
當目標節點(MCU1)收到ARP請求報文以后,發現MAC地址與自身匹配,則接收該ARP報文,同時將發送節點的MAC2緩存下來。MCU1之后給出ARP響應,由于知道了發送節點的MAC地址,所以,MCU1響應ARP報文時,單播發送ARP報文。當交換機收到MCU1的ARP響應以后,發現目標節點是MCU2,而且MCU2的MAC2已經關聯Port2,則直接將ARP報文發送給MCU2,同時,交換機緩存
提示:非目標節點收到ARP報文以后,直接丟棄。
響應節點(MCU1)發送的ARP報文信息如下所示:
解析: ARP響應報文屬于單播。
審核編輯:湯梓紅
-
控制器
+關注
關注
112文章
16365瀏覽量
178075 -
以太網
+關注
關注
40文章
5426瀏覽量
171733 -
通信
+關注
關注
18文章
6032瀏覽量
135995 -
Mac
+關注
關注
0文章
1106瀏覽量
51479 -
ARP
+關注
關注
0文章
50瀏覽量
14755
原文標題:以太網基礎:為什么需要ARP?
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論