關於ARP報文封裝在哪裏的歸屬問題

作題時,發現一個問題,如今終於明白怎麼回事了。緩存

題目:ARP協議的做用是(1),ARP報文封裝在(2)中傳送。網絡

(1)天然是由IP地址查找對應的MAC地址。tcp

(2)我原先寫的是,IP數據包,我當時的理解是ARP在tcp/ip的互聯網層,也就是對應OSI的網絡層,網絡層的設備是路由器,是基於IP地址轉發數據包的,ARP應該是封裝在IP數據包裏的。但正確答案是以太幀,也就是發生在數據鏈路層的。ide

有點不太明白。今天抓了個包發現確實在數據鏈路層進行的,在網上也找到了一篇文章,證明了答案是正確的。spa


問題:ARP報文到底屬於哪一層協議?或者說它工做在那一層?3d

分析:ARP的運行原理   A計算機要訪問B計算機 blog

A首先須要知道B的MAC接口

A會根據IP和子網掩碼先判斷B是否和本身處在同一網段。ip

在同一網段:路由

而且A的ARP緩存裏沒有B的MAC,A就會直接發送一個ARP廣播包,同網段的計算機都會收到,A就問誰是B,你的MAC地址是多少請告訴我,B收到廣播後返回本身MAC告訴A,A更新緩存,之後就都用這個MAC地址封裝和B通訊。


不一樣網段:

A也會發送一個ARP廣播包,不過它是問網關(路由器的接口地址),路由器返回本身的MAC告訴A,而後在走下一跳,直到路由器的目標MAC地址正好是B的MAC,A就能夠和B通訊了。


這個過程沒有問題,可是仔細想一想ARP發廣播報,既然是廣播,那麼就是不用通過路由,由於路由器是隔絕廣播的,不能隔絕廣播的是交換機,交換機是基於MAC地址轉發數據包的,是第二層設備。因此ARP的報文也就應該是在數據鏈路層進行的,抓包後就更直觀了。

\


這是一個完整的ARP報文,它被封裝在數據鏈路層裏面,它發送一個廣播地址FFFFFFFFFFFF,發送者的MAC地址000C2994CC2E,廣播以後將收到的MAC地址寫入緩存並封裝至數據幀,整個過程都是在數據鏈路層進行的。那麼它屬於數據鏈路層實至名歸。

相關文章
相關標籤/搜索