ARP協議工作原理

轉自:https://blog.csdn.net/wangzhen209/article/details/78249955

一、ARP在同個網段下的工作原理

        首先,每臺主機都會在自己的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地址,需要先進行查詢;


2、主機將數據包先放到緩存中,然後發送ARP查詢報文:封裝自己的mac地址爲源mac,目標mac地址寫全F的廣播地址,請求網關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、判斷地址是否同一網段
2、查詢目的IP地址的mac(發送arp請求)

此外需注意點:
1、ARP請求以廣播發送、以單播迴應
2、路由器隔離廣播。每一個網段都是獨立的廣播域
3、跨越網段通信需要使用網關的mac地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章