問題:假設我的家庭網路路由器啟用了 PAT,當我的路由器從網路接收封包時,它如何知道將封包解復用到哪些主機?
範例:我的 LAN 上有 2 台主機。每個伺服器都向同一台伺服器發送相同資訊的請求。每個主機都使用相同的連接埠。路由器如何知道哪些資料包應該發送到哪裡?每個資料包應具有相同的來源位址和目標位址。端口應該是相同的,除非有一些我不知道的端口魔法。
我的猜測:我猜測有一些我不知道的元資料附加到資料包中,這些資料包以某種方式識別專用網路上的每個單獨的主機。但這在下一個例子中似乎不起作用。
範例:不同網路上的某些主機(其他)想要將封包傳送到我的 LAN 上的主機(我的)。另一台主機將封包傳送到我網路的公共 IP 位址。但由於我的主機不期待該資料包,因此它無法向我的路由器提供有關如何解復用該資料包的任何元資料。而另一台主機除了我的網路的公共 IP 位址之外不知道元資料。
答案1
執行網路位址轉換的裝置會維護一個轉換表,其中包括有關來源和目標 IP 位址以及連接埠號碼的資訊。來源 IP 位址和連接埠號碼以及目標 IP 位址和連接埠號碼的組合為每個會話建立唯一的識別碼。
答案2
來源連接埠。
NAT 內的每個用戶端都會分配一個隨機的高編號連接埠作為其與伺服器連接的來源連接埠。
當路由器轉換請求時,它還會設定來源端口,並追蹤分配給哪個連接的來源端口。因此,Web 伺服器會傳回來源連接埠 80 和目標連接埠 35201(或其他連接埠)的內容,路由器會尋找它指派為 35201 的網路用戶端連線。
請注意,這意味著 Web 伺服器可能會不是知道原始客戶端請求的來源連接埠是什麼,以及路由器將其轉換到的來源連接埠。 (請求上的來源連接埠成為回應上的目標連接埠。)
答案3
我只想繼續上面的答案,關於您提到的有關外部設備試圖到達您的內部主機的示例,因此根據上述內容,默認情況下您的路由器將丟棄從互聯網發起的流量,因為它不知道哪個區域網中的內部主機應該接收流量,因為在路由器的NAT 表中尚未為此建立條目。
允許流量從互聯網傳入您的區域網路的方法是定義特定的連接埠轉送規則,也稱為靜態 nat,以便您告訴路由器何時有流量從互聯網到達連接埠 80,例如,請轉送此流量例如,我的網絡伺服器位於LAN 上,IP 和連接埠為192.168.1.5:80。