
在通常的網路中,既然網路中的每台主機都有一個唯一的IP位址,那為什麼還需要MAC位址呢?
假設站點A想要傳送給站點B。但A站在發送之前仍然會發出ARP請求B的MAC位址。然後A取得B的MAC位址後,就會以B的MAC位址為目的位址傳送資料。
為什麼B不能像回應A發出的ARP那樣直接接受這個封包呢?這樣,A站就不必發送ARP請求MAC位址,也就不需要MAC位址了。而且,IP位址在網路站點之間是唯一的,為什麼需要另一個MAC位址來識別站點呢?
答案1
因為您需要在網路卡中內建一個唯一標識符,以便在您沒有 IP 位址的情況下進行站識別。或者,當無法識別想要取得 IP 位址的站點時,系統應如何使用 DHCP 取得有效的 IP 位址?
由於 IP 不是唯一可以透過乙太網路發送的協議,因此乙太網路本身必須提供唯一的識別碼以允許不同的協定。
答案2
首先,我可以贊同丹的回答嗎?對這個主題進行適當的研究比提出問題要好得多,每個問題都只能照亮黑暗。我會推薦史蒂文的 TCP/IP 插圖,這是網路聖經;我的捲副本。 1 由於過度使用,脊椎幾乎斷裂。但既然你問了這個問題,而當丹的問題出現時我已經輸入了一半的答案,讓我戴著我的老管理員帽子按“無論如何發布”。
部分原因是它是歷史性的。 MAC 位址是第 2 層的東西,而 IP 位址是第 3 層的東西(參見,例如,這個維基百科頁面有關圖層的更多詳細資訊)。
為什麼要分開?好吧,當乙太網路發明時,IP 並不是乙太網路上可以承載的唯一網路技術。我自己在 80 年代中期廣泛使用了透過乙太網路運行的 DECnet,而且它沒有 IP 位址。此外,完全可以在沒有 MAC 位址的非乙太網路技術上運行 IP;我想到了令牌環網絡,就像 SLIP 一樣)。
如果乙太網路和 IP 按照您的建議焊接在一起,那麼上述兩件事都不可能實現。是的,回想起來很明顯,IP 是網路互聯的大勝利,但在 1981 年,情況還不是那麼明顯,而當時將兩層解耦絕對是正確的事情。
答案3
xENOn,這是我過去多次問自己的問題。事實上,它有點任意,因為正如 MadHatter 善意提到的那樣,有些 IP 網路類型無需實體位址即可運作良好。也就是說,理論上不需要額外的位址類型。然而,當 IP 位址自動分配時(例如透過 DHCP),MAC 位址會派上用場,因為 DHCP 伺服器需要明確地知道哪個主機接收了哪個 IP,或者沒有單一主機被授予未經請求的附加 IP 位址。如果沒有 MAC 位址,您需要為每個主機手動設定 IP 位址,即當您擁有大量主機時不太實用,並且對於 IT 管理員來說簡直就是一場噩夢。當涉及乙太網路本地鏈路時,您沒有太多選擇,因為乙太網路子系統僅識別乙太網路幀,即每個乙太網路介面電路都會過濾掉所有不帶有自己的或廣播/多播MAC 位址的乙太網路幀作為目的地位址。只有那些通過前端過濾的幀才真正將其 IP 有效負載傳送到 IP 層。希望它能對您解開謎團有所幫助。