arp協議屬於osi模型第二層(資料鏈路層)
那麼問題來了,傳送端能很簡單的獲取到傳送端的ip位址和mac位址,以及接收端的ip位址,而接收端的mac位址最開始是不知道的,而arp協議就是為了解決這個問題的,它能通過接收端的ip位址解析到mac位址。
然而,arp協議是屬於資料鏈路層的協議,如果傳送端和目標端的主機都在同乙個網段,我們則很好理解,其過程如下:
傳送端傳送資料幀前檢查是否擁有接收端的mac位址,如果沒有,則啟動arp,先檢查快取ip-mac表中是否有接收端的mac位址,如果有則直接拿來即用,如果沒有則在本網段(區域網)廣播arp包,本網段各計算機都收到arp請求,從傳送來的資料中檢查請求過來的ip位址與自己是否一致,如果不一致,則丟棄,如果ip一致,則單播返回mac位址給請求的計算機,傳送端便獲取到了接收端的mac位址,接收到接收端的mac位址它還會快取乙份,用於下次拿來即用。
那麼如果請求端和目標端的主機不在同乙個網段呢?arp廣播的資料是被路由阻斷的,不能跨到不同的網段進行廣播的,因為這樣廣播會導致廣播資料氾濫。
原文鏈結:
假設主機a(135.24.25.23)第一次和不同網段的主機c(135.24.52.123)通訊:
a封裝好要傳送的資訊,在要寫「收件位址」時,
a會用子網掩碼進行計算先判斷b和a自己在不在同乙個網段,這時候a知道了b和自己不在乙個網段,
這時候,a知道該用閘道器把自己的資料傳遞給c,所以a會傳送乙個arp包來獲取閘道器的mac位址,
閘道器收到arp包後,把自己的mac位址封裝在arp包中,傳送給a,
a封裝報文,目標mac位址寫閘道器的mac位址,
閘道器收到報文,發現是給自己發的,就開始解包,解開之後,發現是給另乙個網段的主機傳送的,
歷經千辛萬苦,報文終於到達c的主機的路由器,路由器傳送報文到c所在網段的閘道器,
c網段的閘道器解包之後發現不是給自己,而是給自己網段內的c主機,就傳送報給給c
總結:如果不在同乙個網段,則請求端拿到的目標端的mac位址其實是它閘道器的mac位址,將資料幀給到閘道器再進行下一跳**,下一跳同樣在自己的網段尋找到目標主機mac位址或再找到下一跳mac位址。
防止同網段ARP攻擊
arp攻擊是一種常見的網路問題,對此,需要恰當配置交換裝置。以下以h3c裝置為例,介紹典型的配置方法。一 對於阻止仿冒閘道器ip的arp攻擊 1 二層交換機防攻擊配置舉例 3552p是三層裝置,其中ip 100.1.1.1是所有pc的閘道器,3552p上的閘道器mac位址為000f e200 399...
ARP協議改mac位址
改變同一網段別人的mac位址 include include socket include htons include eth p all include close include include include sockaddr ll include struct ifreq include s...
網路層 ARP 找Mac位址協議
arp協議 傳送乙個arp請求分組,得到目的網路對應的mac位址,再存到主機的arp快取記憶體中,以供使用。正常傳送資料的時候需要在鏈路層新增目的主機和源主機的mac位址,但是一般目的主機的mac位址不能輕易獲得,因此需要在主機的arp快取記憶體中尋找對應的mac位址,要是找不到,就立即傳送arp協...