ARP工作原理

2021-07-22 13:46:58 字數 2803 閱讀 5990

人們最熟悉的網路可以說是乙太網,而且人們都知道,每塊網絡卡都有乙個編號,也就是網絡卡位址(稱為mac位址),代表計算機的實體地址。另外,網路中的每一台計算機都分配了乙個ip位址,這樣,每台計算機上都有兩個位址,ip位址和mac位址。

ip位址並不能代替mac位址,前者是在大網中為了方便定位主機所採用的方式,如果網路規模不大,完全可以不使用ip位址。但是,無論什麼網路環境實體地址都是要使用的。因為實體地址對應於網絡卡的介面,只有找到它才算真正到達了目的地。而ip位址是為了方便定址人為劃分的位址格式,因此ip位址也被稱為邏輯位址,又因為這種結構化位址是在osi的第3層定義的,也被稱為3層位址。相應地,實體地址是在第2層定義的,被稱為2層位址。ip位址是一種通用格式,無論其下一層的實體地址是什麼型別,都可以被統一到一致的ip位址形式上,因此ip位址遮蔽了下層實體地址的差異。

既然ip位址並不能代替實體地址,它只是在邏輯上表示一台主機,實體地址才對應於網絡卡的介面,只有找到它才能將資料送達到目的地。那麼如何把二者對應起來就是要解決的首要問題,因為二者代表的是同一臺機器。為此人們開發了位址解析協議(address revolution protocol,arp),位址解析協議負責把ip位址對映到實體地址。

下面分兩種情況解釋arp的工作過程:同一子網內的arp和不同子網間的arp。

(1)同一子網內的arp。

主機a (172.16.20.20/24)與主機b通訊。假設在a上ping主機b的ip位址172.16.20.5/24。

為了把測試資訊傳送到主機b和a,將構造關於ping的ip資料報。可以確定,這個包頭中的源ip位址是172.16.20.20,目的位址172.16.20.5。ip資料報構造完成以後,需要將它從網絡卡傳送出去,在這之前必須要封裝2層的幀頭,本例中2層是乙太網環境,因此需要構建乙太網幀頭。分析幀頭中的mac位址情況,它的源位址應該是00-0c-04-18-19-aa,這個位址很容易獲得,主機a直接從自己的網絡卡中獲取即可,幀頭中的目的mac位址應該是00-0c-04-38-39-bb,它對應於主機b的mac位址。主機a如何得知主機b的mac位址呢?這是主機a在封裝2層幀頭時必須解決的問題,否則無法傳送這個幀出去。主機a唯一的辦法是向主機b發出詢問,請主機b回答它自己的mac位址是什麼。arp協議正是負責完成這一工作的,即已知目的節點的ip位址來獲取它相應的實體地址。

arp的操作過程如下。

①主機a發出arp請求,請求幀中的資料部分包括傳送者mac位址00-0c-04-18-19-aa、傳送者ip位址172.16.20.20和目標mac位址,這裡全部填充0,因為它未知(這正是arp要詢問的),目標ip位址是172.16.20.5。

② 在請求幀的幀頭部分,目的mac位址是廣播位址,因此所有收到的站點(其中就包括主機b)都開啟這個幀檢視其資料部分的內容。

③ 只有符合目標ip位址172.16.20.5的主機(主機b)回答這個arp請求,其他站點則忽略這個請求。

④ 主機b把自己的mac位址寫入「目標位址」欄位中,送給主機a。

主機a通過arp的操作得到了主機b的mac位址,可以繼續完成它的封裝過程,從而最終執行了ping的操作。

arp請求者收到應答後,會在自己的快取中構建乙個arp表,將得到的位址資訊快取起來,以備將來和同一目的節點通訊時直接在arp表中查詢,避免了多次的廣播請求。

實際上,完整的操作過程是:主機a在準備構造2層幀頭時,首先根據目的ip去查詢arp表,如果找到對應項,則直接得到目的mac位址,如果沒有查到才執行上面所說的arp廣播請求。這樣做是為了最大限度地減少廣播。

(2)不同子網間arp

假設在主機a(172.16.10.10/24)上ping主機b的ip位址172.16.20.5/24,隨後主機a將構造關於ping的ip資料報,這一過程與前面相同,只是目的位址在另外乙個子網中。主機a仍然面臨如何確定2層幀頭中的目的mac位址的問題。

如果仍然依照目的節點和源節點位於同一子網中的思路,這個目的mac應該是主機b網絡卡的mac位址。順著這個思路走下去,看看會發生什麼情況。

由於主機b位於路由器的另外一側,因此主機b要想收到主機a發出的乙太網幀必須通過路由器**,那麼路由器是否會**呢?答案是否定的。路由器在收到某個乙太網幀後首先檢查其目的mac,而這裡假設a發出的幀中的目的mac是b的網絡卡位址,路由器從ethernet 0介面收到該幀後,檢視目的mac位址,發現它不是自己的mac位址,從而將其丟棄掉。由此看來,位於不同子網的主機之間在通訊時,目的mac位址不能是目標主機的實體地址。

實際上,不同子網之間的主機通訊要經過路由過程,這裡就是需要路由器a進行**。因此,主機a發現目標主機與自己不在同乙個子網中時就要借助於路由器。它需要把資料幀送到路由器上,然後路由器會繼續**至目標節點。在該例中,主機a發現主機b位於不同子網時,它必須將資料幀送到路由器上,這就需要在幀頭的「目的位址」欄位上寫入路由器介面ethernet 0的mac位址。因此,主機a需要通過arp詢問路由器ethernet 0介面的mac位址。

這裡仍然是兩個操作過程,乙個是arp請求;另乙個是arp應答。不過在arp的請求幀中,目標ip位址將是路由器ethernet 0介面的ip位址,這個位址實際上就是子網172.16.10.0/24中主機的預設閘道器。路由器收到arp請求後回答自己ethernet 0介面的mac位址,這樣主機a就獲得了其預設閘道器的mac位址。主機a構建完整的資料幀並將其傳送給到路由器。路由器收到主機a的資料後,根據路由表的指示將從另一介面ethernet 1把資料傳送給主機b。同樣,在傳送前路由器也要封裝2層幀頭,也需要知道主機b的mac位址,路由器也是通過arp協議來獲得b的mac位址的。

綜合以上兩種情況,主機a的完整操作過程如下:

主機a首先比較目的ip位址與自己的ip位址是否在同一子網中,如果在同一子網,則向本網傳送arp廣播,獲得目標ip所對應的mac位址;如果不在同一子網,就通過arp詢問預設閘道器對應的mac位址。

ARP 工作原理

arp address resolution protocol,位址解析協議 是乙個位於tcp ip協議棧中的低層協議,負責將某個ip位址解析成對應的mac位址.arp的工作原理。在每台主機中都有一張arp表,它記錄著主機的ip位址和mac位址的對應關係 1 如果主機a想傳送資料給主機b,主機a首先...

ARP工作原理

arp工作原理 每台主機都會在自己的arp緩衝區中建立乙個 arp列表,以表示ip位址和mac位址的對應關係。當源主機需要將乙個資料報要傳送到目的主機時,會首先檢查自己 arp列表中是否存在該 ip位址對應的mac位址。如果有,就直接將資料報傳送到這個mac位址 如果沒有,就向本地網段發起乙個arp...

ARP工作原理

arp工作原理 arp 協議是將目的ip位址解析成目的mac位址,arp的功能將已知的ip位址解析成mac位址。工作流程 主機a 給主機b傳送資料幀,a 檢查自己的arp 快取表,是否有主機的目標ip位址。如果找到了,也就知道了目標mac位址,直接把目標mac位址寫入資料幀裡面傳送就可以了,主機a ...