Networking

既然 IP 地址已經是唯一的,為什麼還要發送 ARP 來詢問 MAC 地址?

  • April 7, 2012

在通常的網路中,由於每個主機都有一個在網路中的站之間被辨識的唯一 IP 地址,為什麼還需要 MAC 地址呢?

假設A站要發送給B站。A站知道B站的IP地址。但是 A 站在發送前仍然會發出一個 ARP 請求 B 的 MAC 地址。然後在獲得 B 的 MAC 地址後,A 會以 B 的 MAC 地址作為目標地址發送數據。

為什麼 B 不能像響應 A 發出的 ARP 一樣接受數據包?這樣,站 A 就不必發送 ARP 來請求 MAC 地址,這也將消除對 MAC 地址的需要。而且,IP地址在網路站點之間是唯一的,為什麼需要另一個MAC地址來辨識站點呢?

因為如果您沒有 IP 地址,您需要在網卡中建構一個唯一標識符以進行站點辨識。或者,當沒有標識想要獲取 IP 地址的站點時,系統應該如何使用 DHCP 獲取有效 IP 地址?

由於 IP 不是您可以通過乙太網發送的唯一協議,因此乙太網本身必須提供唯一標識符以允許不同的協議。

首先,我可以贊同丹的回答嗎?對這個主題進行適當的研究比提出問題要好得多,每個問題都只照亮黑暗中的一盞燈。我推薦Steven 的 TCP/IP Illustrated,它是網路聖經;我的捲副本。1 因過度使用而在脊椎處幾乎斷裂。但是,既然你問了這個問題,而當 Dan 出現時,我已經輸入了一半的答案,讓我按“仍然發布”,戴上我的舊管理員帽子。

部分原因是歷史性的。MAC 地址是第 2 層的東西,而 IP 地址是第 3 層的(參見,例如,此 Wikipedia 頁面以獲取有關這些層的更多詳細資訊)。

為什麼要分開?嗯,當乙太網被發明時,IP 並不是唯一可以在乙太網上承載的網路技術。我本人在 80 年代中期廣泛使用在乙太網上執行的 DECnet,但它沒有 IP 地址。此外,完全有可能在沒有 MAC 地址的非乙太網網路技術上執行 IP;令牌環網路浮現在腦海中,SLIP 也是如此)。

如果按照您的建議將乙太網和 IP 焊接在一起,則上述任何事情都不可能發生。是的,回想起來很明顯,IP 是網際網路絡中的大贏家,但在 1981 年還不是很清楚,當時將兩層解耦絕對是正確的事情。

引用自:https://serverfault.com/questions/331489