既然每個以太網設備在出廠時都有一個唯一的mac地址了,那為什么還需要為每臺主機再分配一個IP地址呢?或者說為什么每臺主機都分配唯一的IP地址了,為什么還要在網絡設備(如網卡,集線器,路由器等)生產時內嵌一個唯一的MAC地址呢?
主要原因有以下幾點:
(1)IP地址的分配是根據網絡的拓撲結構,而不是根據誰制造了網絡設置。若將高效的路由選擇方案建立在設備制造商的基礎上而不是網絡所處的拓撲位置基礎上,這種方案是不可行的。
(2)當存在一個附加層的地址尋址時,設備更易于移動和維修。例如,如果一個以太網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網絡移到另一個網絡,可以給它一個新的IP地址,而無須換一個新的網卡。
(3)無論是局域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。數據包在這些節點之間的移動都是由ARP(Address Resolution Protocol:地址解析協議)負責將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。
IP66在線查IP地址位置:https://www.ip66.NET/?utm-source=LJ&utm-keyword=?1146
綜合上面所述,我們可以歸納出IP地址和MAC地址相同點是它們都唯一,不同的特點主要有:
1. 對于網絡上的某一設備,如一臺計算機或一臺路由器,其IP地址可變(但必須唯一),而MAC地址不可變。我們可以根據需要給一臺主機指定任意的IP地址,如我們可以給局域網上的某臺計算機分配IP地址為192.168.0.112 ,也可以將它改成192.168.0.200。而任一網絡設備(如網卡,路由器)一旦生產出來以后,其MAC地址永遠唯一且不能由用戶改變。
2. 長度不同。IP地址為32位,MAC地址為48位。
3. 分配依據不同。IP地址的分配是基于網絡拓撲,MAC地址的分配是基于制造商。
4. 尋址協議層不同。IP地址應用于OSI第三層,即網絡層,而MAC地址應用在OSI第二層,即數據鏈路層。 數據鏈路層協議可以使數據從一個節點傳遞到相同鏈路的另一個節點上(通過MAC地址),而網絡層協議使數據可以從一個網絡傳遞到另一個網絡上(ARP根據目的IP地址,找到中間節點的MAC地址,通過中間節點傳送,從而最終到達目的網絡)。