1. 程式人生 > >ARP協議工作原理[同網段及跨網段]

ARP協議工作原理[同網段及跨網段]

一、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地址