1. 程式人生 > >為什麼同時需要IP地址和MAC地址

為什麼同時需要IP地址和MAC地址

每個乙太網裝置在出廠時都有一個唯一的MAC地址,為什麼還需要為每臺主機再分配一個IP地址?或者說每臺主機都分配唯一的IP地址,為什麼還要在網路裝置(如網絡卡,集線器,路由器等)生產時內嵌一個唯一的MAC地址呢?

主要原因有以下幾點:

(1)IP地址的分配是根據網路的拓樸結構,而不是根據誰製造了網路設定。若將高效的路由選擇方案建立在裝置製造商的基礎上而不是網路所處的拓撲位置基礎上,這種方案是不可行的。

(2)當存在一個附加層的地址定址時,裝置更易於移動和維修。例如,如果一個乙太網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網絡卡。

(3)方便資料傳輸。無論是區域網,還是廣域網中的計算機之間的通訊,最終都表現為將資料包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。資料包在這些節點之間的移動都是由ARP協議負責將IP地址對映到MAC地址上來完成的。

IP地址和MAC地址結合起來傳送資料包的例子:

假設網路上要將一個數據包(名為PAC)由北京的一臺主機(名稱為A,IP地址為IP_A,MAC地址為MAC_A)傳送到華盛頓的一臺主機(名稱為B,IP地址為IP_B,MAC地址為MAC_B)。這兩臺主機之間不可能是直接連線起來的,因而資料包在傳遞時必然要經過許多中間節點(如路由器,伺服器等等),我們假定在傳輸過程中要經過C1、C2、C3(其MAC地址分別為M1,M2,M3)三個節點。

A在將PAC發出之前,先發送一個ARP請求,找到其要到達IP_B所必須經歷的第一個中間節點C1的MAC地址M1,然後在其資料包中封裝(Encapsulation)這些地址:IP_A、IP_B,MAC_A和M1。

當PAC傳到C1後,再由ARP根據其目的IP地址IP_B,找到其要經歷的第二個中間節點C2的MAC地址M2,然後再將帶有M2的資料包傳送到C2。

如此類推,直到最後找到帶有IP地址為IP_B的B主機的地址MAC_B,最終傳送給主機B。

在傳輸過程中,IP_A、IP_B和MAC_A不變,而中間節點的MAC地址通過ARP在不斷改變(M1,M2,M3),直至目的地址MAC_B。