
基本上,ARP 廣播發生在 LAN 內部,請求另一台主機的 MAC 位址以獲得特定的 IP 位址。
如果主機位於不同的網路中,來源電腦如何知道另一台主機的 MAC 位址?另外,如果來源電腦想要向另一台主機發送封包,在 ARP 廣播之後,如果它得知該 IP 位址的 MAC 位址不在其 LAN 中,那麼它如何請求另一台主機的 MAC 位址呢?
答案1
如果 A 嘗試透過 ARP 尋找 B IP 的 MAC,但失敗,則 B 不在其子網路中。然後就需要路由器,因為路由器的功能就是在子網路之間轉送流量。
住宅或簡單辦公室設定中的典型情況是 A 將流量移交給預設網關,該網關將是該子網路路由器的 IP。預設閘道之前已由 DHCP 指派給 A。
但,由於 A 知道它所在的子網路(因為它知道自己的 IP 和子網路遮罩),因此它通常不需要進行 ARP 查找,除非它試圖存取同一子網路上的另一台主機。如果您嘗試存取所在子網路上的某些內容,將流量交給路由器將不會有任何好處。因此,如果來源主機對相同子網路中的目標主機進行 ARP 查找失敗,則來源主機將假定目標主機不存在。它甚至不會在不同子網路上的主機上嘗試 ARP 查找,它只會將它們交給路由器。
儘管如此,還是有代理ARP。
答案2
....如果主機位於不同的網路中,來源電腦如何知道另一台主機的 MAC 位址?
誰說對方主機有 MAC 位址? MAC 位址是乙太網路事物,而不是網路事物。主人不必知道任何事物關於 IP 位址之外的其他網路上的主機。將最終的乙太網路封包尋址到終端設備是將該乙太網路封包放在線路上的任何設備的責任,該設備肯定不是該主機(因為它甚至不在該網路上)。
另外,如果來源電腦想要向另一台主機發送封包,在 ARP 廣播之後,如果它得知該 IP 位址的 MAC 位址不在其 LAN 中,那麼它如何請求另一台主機的 MAC 位址呢?
這沒有道理。該 MAC 位址顯然位於 LAN 上,因為該 MAC 位址剛剛回應其 ARP 廣播。如果不是的話,它怎麼能把乙太網路封包放到本地區域網路上呢?在本地區域網路?
ARP 查詢和 MAC 位址是一種嚴格的本機網路協議,用於必須將本機資料包傳輸到彼此線路的裝置之間。典型的主機使用此協定來了解如何將封包尋址到其預設閘道和 LAN 上的其他主機,而這些是它必須將封包傳輸到線路上的唯一裝置。顯然,路由器必須知道如何將封包傳送到其他網路的線路。
答案3
如果主機位於另一個網路中,來源將不知道該主機的 MAC。為了進行通信,來源將資料包發送到其預設網關以進行傳遞。
這是透過發送帶有網關(位於其 LAN 上)的 MAC 位址和目標主機的 IP 位址的封包來完成的。網關將決定如何路由封包並重新傳送,保留 IP 位址,但將 MAC 位址切換為網路上下一跳的 MAC。重複此過程直到資料包到達目的地。