首先,每台主機都會在自己的arp緩衝區中建立乙個 arp列表,以表示ip位址和mac位址的對應關係。當源主機需要將乙個資料報要傳送到目的主機時,會首先檢查自己 arp列表中是否存在該 ip位址對應的mac位址,如果有,就直接將資料報傳送到這個mac位址;如果沒有,就向本地網段發起乙個arp請求的廣播包,查詢此目的主機對應的mac位址。此arp請求資料報裡包括源主機的ip位址、硬體位址、以及目的主機的ip位址。網路中所有的主機收到這個arp請求後,會檢查資料報中的目的ip是否和自己的ip位址一致。如果不相同就忽略此資料報;如果相同,該主機首先將傳送端的mac位址和ip位址新增到自己的arp列表中,如果arp表中已經存在該ip的資訊,則將其覆蓋,然後給源主機傳送乙個 arp響應資料報,告訴對方自己是它需要查詢的mac位址;源主機收到這個arp響應資料報後,將得到的目的主機的ip位址和mac位址新增到自己的arp列表中,並利用此資訊開始資料的傳輸。如果源主機一直沒有收到arp響應資料報,表示arp查詢失敗。
例如:
a的位址為:ip:192.168.10.1 mac: aa-aa-aa-aa-aa-aa根據上面的所講的原理,b的位址為:ip:192.168.10.2 mac: bb-bb-bb-bb-bb-bb
我們簡單說明這個過程:a要和b通訊,a就需要知道b的乙太網位址,於是a傳送乙個arp請求廣播(誰是192.168.10.2 ,請告訴192.168.10.1),當b收到該廣播,就檢查自己,結果發現和自己的一致,然後就向a傳送乙個arp單播應答(192.168.10.2 在bb-bb-bb-bb-bb-bb)。不同網段的主機通訊時,主機會封裝閘道器(通常是路由器)的mac位址,然後主機將資料傳送給路由器,後續路由進行路由**,通過arp解析目標位址的mac位址,然後將資料報送達目的地。具體過程分析如下:
如上圖,主機a、b通過路由器連線,屬於兩個不同的網段子網掩碼24(255.255.255.0)
1、主機a有資料發往主機b,資料封裝ip之後發現沒有主機b的mac位址;然後查詢arp,arp回應:「我在192.168.3.0/24網段,目標位址在192.168.4.0/24,不屬於同一網段,需要使用預設閘道器」;arp發現預設閘道器是192.168.3.2,但是沒有閘道器mac位址,需要先進行查詢;
3、路由器收到廣播資料報,首先將原192.168.3.1新增到自己的mac位址表中,對應mac位址為0800.0222.2222。路由發現是請求自己的mac位址,然後路由回覆乙個arp應答:封裝自己的ip位址為源ip自己的mac位址為源mac,主機a的ip為目的ip主機a的mac為目的mac,傳送乙個單播應答「我是192.168.3.2.我的mac位址為0800.0333.2222」;
4、主機收到應答後,將閘道器mac位址對應192.168.4.2(跨閘道器通訊,其他網段ip位址的mac位址均為閘道器mac),然後將快取中的資料報,封裝閘道器mac位址進行傳送;
5、路由收到資料報,檢查目的ip位址,發現不是給自己的,決定要進行路由,然後查詢路由表,需要發往192.168.4.0網段中的192.168.4.2位址。路由準備從相應介面上發出去,然後查詢mac位址表,發現沒有主機b的對映。路由器傳送arp請求查詢主機b的mac位址(原理同2、3步,主機b收到請求後首先會新增閘道器的mac位址,然後單播回覆arp請求);
6、路由器收到主機b的mac位址後,將其新增到路由mac位址表中,然後將快取中的資料2層幀頭去掉,封裝自己的mac位址為源mac,主機b的mac位址為目的mac(源和目的ip位址不變),加上二層幀頭及校驗,傳送給主機b;
7、主機b收到資料之後,進行處理,傳送過程結束;
8、如果主機b收到資料後進行回覆,主機b會進行位址判斷,不在同一網段,然後決定將資料傳送給閘道器,主機b查詢mac位址表獲得閘道器mac位址,將資料封裝後傳送(arp位址解析的過程不再需要了,mac位址表條目有一定的有效時間),閘道器收到資料後直接查詢mac表,將二層幀mac位址更改為a的mac傳送出去。如此,主機a收到主機b的回覆;
1、arp請求以廣播傳送、以單播回應
2、路由器隔離廣播。每乙個網段都是獨立的廣播域
3、跨越網段通訊需要使用閘道器的mac位址
網段間通訊簡述:**: &在網段通訊時,資料報中的位址就是源ip,目標ip,源mac,目標mac,根本用不到閘道器,而當檢測到需要把資料報發到遠端網路時,
這時,目標mac就必須改變了,在還沒有出內網時,目標mac必須寫成閘道器的mac位址發出去。
當閘道器收到時,再把目標mac位址改成下一跳的mac位址發出去,同時源mac位址要始終保持為發出埠的mac位址(回應報文可以依靠它路由回去)。
而源ip及目標ip不曾改變(用於判斷收到資料報的本機ip和資料報ip是否一致,若一致不**),就算到達了公網上,目標mac仍然在不斷改變著,
直到最後,這個資料報到達目標ip的網路,最終通訊結束。
防止同網段ARP攻擊
arp攻擊是一種常見的網路問題,對此,需要恰當配置交換裝置。以下以h3c裝置為例,介紹典型的配置方法。一 對於阻止仿冒閘道器ip的arp攻擊 1 二層交換機防攻擊配置舉例 3552p是三層裝置,其中ip 100.1.1.1是所有pc的閘道器,3552p上的閘道器mac位址為000f e200 399...
arp協議獲取mac位址,同網段和不同網段。
arp協議屬於osi模型第二層 資料鏈路層 那麼問題來了,傳送端能很簡單的獲取到傳送端的ip位址和mac位址,以及接收端的ip位址,而接收端的mac位址最開始是不知道的,而arp協議就是為了解決這個問題的,它能通過接收端的ip位址解析到mac位址。然而,arp協議是屬於資料鏈路層的協議,如果傳送端和...
linux跨網段實現通訊
主機a 路由1 路由2 主機b nat vmnet8 nat vmnet8 nat vmnet8 172.16.0.0 16 10.0.0.0 24 192.168.10.0 24 第一步 配置主機a b和路由器1 2 主機a ip 172.16.0.200 mask 255.255.0.0 gw ...