如果封包傳送到公用 IP 位址,路由器如何知道它應該接收封包?

如果封包傳送到公用 IP 位址,路由器如何知道它應該接收封包?

假設我有一台路由器,它的一個介面上有一個公用 IP 位址,而另一個介面上有一個私人位址,例如 192.168.1.1/24。然後有一台電腦連接到第二個接口,該接口也具有專用 IP 位址 (192.168.1.2/24)。現在,電腦想要將封包傳送到某個公用 IP 位址,比方說 11.12.13.14,所以我認為它會將這個公用位址放在 IP 封包的目標欄位中,不是嗎?

但現在,如果路由器的本機 IP(以及電腦的預設閘道)是 192.168.1.1,那麼該封包該如何傳送到路由器?

這似乎是一個非常簡單的問題,但我真的很難理解它是如何運作的。

答案1

具有 Internet 和本地的網路設定如下。

您的網路透過數據機連接到網際網路。數據機可以在互聯網上與一台設備交換資訊。

您的網路中通常有不只一台裝置。為了允許這些設備相互通信,您需要具有多個網路連接埠的設備和一些軟體來管理它。過去,這裡是一個網路樞紐。集線器基本上將傳入流量複製到所有端口,並且無論誰監聽都會做出回應。

研究使這些設備變得智能,這就是交換器的創建方式。交換器與集線器略有不同。它將嘗試透過向所有連接埠傳輸新連線並查看誰回覆來確定目的地是誰。當它在端口上收到回复時,它將使用初始請求中給出的 IP 位址標記該端口,並將該 IP 位址的所有流量路由到該端口,而不將其廣播到所有其他端口。

數據機和交換器不能一起使用來將本地電腦連接到互聯網,因此創建了一種新設備,稱為路由器。路由器位於數據機和交換器之間。路由器通常包含額外的功能,例如 DHCP 伺服器,允許管理本地網路。路由器將有一個查找表,可協助確定 IP 位址是本機位址還是網際網路位址。它還將有一個包含連接埠映射的表,以便您可以從互聯網打開連接埠並將其流量轉發到本地設備。

所以。假設 IP 為 192.168.1.2 的 PC1 向 192.168.1.3 發送了一個封包。資料包透過其連接的電纜從網路卡傳輸出去。資料包到達交換器上的連接埠。

交換器啟用了 3 個連接埠:WAN 端口,連接到路由器,連接埠 1 為 192.168.1.2(本身),連接埠 2 為 192.168.1.3。路由器會將其傳輸到 WAN 連接埠和連接埠 2,除非它已經確定 192.168.1.3 屬於該連接埠並將資料包直接傳送到該連接埠。

假設您的電腦現在會向 11.22.33.44 發送資料包。資料包經過網路卡並再次到達交換器。它沒有收集到該 IP 位址,因此將其發送到所有連接埠。路由器接收資料包並將其轉發到調變解調器,調變解調器再將其傳輸到網際網路。

過了一會兒,網路做出回應,一個資料包從數據機傳來。這些訊息被轉發到路由器,路由器識別出這是對先前資料包(透過 uPNP)的回應,並將其轉發到交換器。交換器將其轉送回您的連接埠。

簡而言之,這就是路由器的工作原理。

我希望這是有道理的。 :)

另外,如果您的問題是 2 個裝置具有相同的 IP,則您不能讓 2 個裝置具有相同的 IP 位址。您遇到 IP 衝突且網路將無法正常運作。

答案2

為了補充之前的答案,您問:

那麼,路由器會收到發送至 11.22.33.44 的封包,即使該本地 (LAN) 連接埠(封包透過其傳入)上的位址是 192.168.1.1?

是的,因為您的電腦透過乙太網路連結或 Wi-Fi 連結實體連接到路由器。這是您發送所有網路流量的實體連結(所有 IP 封包都透過相同的實體 MAC 位址到達路由器設備)。正如您所說,您的路由器連結有一個 IP 位址 192.168.1.1,這是您的預設閘道 IP,因此來自該位址的任何傳入流量都將被識別為透過路由器來自網路。

但是,不要忘記,您是透過 Wi-Fi 或乙太網路連結實體發送每個網路封包,而這些連結的層級低於 IP,因此所有封包都會透過實體連接傳送到路由器,無論其 TCP/ IP協定內容(來源IP、目的IP、來源連接埠、目的連接埠)。

因此,無論封包的來源 IP 或目標 IP 是什麼,所有 IP 封包都會透過有線連接或無線連接到達路由器,從那裡,路由器或任何此類裝置決定如何處理它們,是否檢查封包的來源IP 和連接埠以將與您的PC IP 和連接埠相符的任何響應流量發送回它(路由器),或將所有響應流量發送到連接到路由器的每個設備以探測回复,例如交換器或集線器。區別,就像第一個答案所說的那樣,集線器總是將所有流量發送到與其連接的所有設備,以探測答复,而交換機僅在收到一個答復之前這樣做,然後將該設備標記到該連接,不再進一步需要進行探測。

相關內容