1. 程式人生 > >理解ARP協議以及IP與MAC地址的關係

理解ARP協議以及IP與MAC地址的關係

簡介

ARP協議位於TCP協議棧中的資料鏈路層,稱為地址解析協議,ARP協議實現任意網路層地址到任意實體地址的轉換,例如IP地址轉換為MAC地址。

工作原理

主機想自己所在的網路廣播一個ARP請求,該請求包含目標機器的網路地址,此網路上的其他機器都將收到這個請求,但只有被請求的目標機器會迴應一個ARP應答,其中包含自己的實體地址。

ARP報文結構

ARP報文

·

硬體型別欄位定義實體地址的型別,他的值為1表示MAC地址;

·

協議型別欄位表示要對映的協議地址型別,它的值為0x800,表示IP地址;

·

硬體地址長度欄位和協議地址長度欄位,其單位是位元組。對MAC地址來說,其長度為6,對IP(v4)來說,其長度為4;

·

操作欄位指出4種操作型別:ARP請求(值為1)、ARP應答(值為2)、RARP(值為3)、RARP(值為4)。

·

最後四個欄位指定通訊雙方的乙太網地址和IP地址。傳送端填充除目的端乙太網地址的其他三個欄位,以構建ARP請求併發送之。接收端發現該請求的目的端IP地址是自己,就把自己的乙太網地址填進去,然後交換兩個目的端地址和兩個傳送端的地址,以構建ARP應答並返回之(當然,如前所示,操作欄位需要改為2)。

IP與MAC地址

我們知道每臺計算機都有一個MAC地址,準確的來說每臺可以連線到乙太網的裝置都有一個唯一的MAC地址,這個地址就是為了當別的裝置向這個裝置傳送資料包的時候可以指定地址。當兩臺裝置連線起來就可以使用鏈路層的PPP協議收發資料了,這個時候每個資料包都會直接使用兩臺裝置的MAC地址。此時我們沒有用到IP地址就實現了裝置之間的資料交換。
而當我們要實現長距離之間的裝置互聯就需要用到IP協議,例如我們中國的一臺裝置要與美國的一臺裝置進行資料收發,不可能再簡單的拉一根網線直接把兩臺裝置相連。此時在中國與美國之間需要眾多的中轉路由器,資料包要經過這些路由器才能正確的到達,所以這個時候的PPP協議就沒有辦法使用,因為兩臺裝置不是直連的。

簡單說就是一個在子網裡面,MAC地址可以在這個子網路裡面定位到不同的網路裝置,IP可以在整個因特網中定位到不同的子網。

下面我來描述一下ARP協議以及IP地址和MAC地址在資料傳輸的過程中的作用

當你把你的電腦A連上路由器的時候,路由器會給你的電腦分配一個IP地址,你自己也會擁有一個MAC地址,當你需要給其他子網上的機器B傳送資料包的時候,都會經過路由器,但是隻知道路由器的IP地址不知道它的MAC地址是沒有辦法做到資料的傳輸的,因為鏈路層的傳輸協議要求知道目的端的MAC地址。

所以電腦A需要找到路由器的MAC地址,即通過路由器使用ARP協議向電腦A所在子網傳送ARP廣播,這個廣播就是在問:請IP地址是xxxxxxx的機器告訴我你的MAC地址。

路由器收到這個請求就會給電腦A傳送一個ARP響應,在裡面包含自己的MAC地址,這下就可以向路由器傳送資料包了,接下來路由器會把資料包傳給你的ISP,方式和上面很像,而ISP和ISP之間則需要根據資料包中指定的目標IP和路由器存的路由表來確定把資料包傳給接下來的哪個路由器。直到資料包被傳到電腦B。