NAT 和 P2P 路由器崩潰

NAT 和 P2P 路由器崩潰

所以……我和我的網路老師發生了這個爭論。他說,有些人抱怨由於路由器上的 NAT 表上有很多條目而導致路由器崩潰。

我不明白,我問:「如果應用程式使用相同的端口,為什麼路由器會崩潰?它應該只有一個條目(pc-ip,pcport;public-ip,public-port)」。他說:「使用相同的連接埠並不重要」。

我的想法是 NAT 為通過它的每個資料包創建一個條目。正如您可能已經猜到的那樣,我假設 NAT 過載。

所以問題是:

  1. nat條目是如何創建的?基於數據包還是基於連接?我的意思是:假設我發送一個 udp 封包..路由器是否建立一個條目?

  2. 當我啟動 TCP 連線時,路由器是否會建立持久的 nat 條目直到連線關閉?

  3. 我的老師說得對嗎?假設應用程式在同一連接埠上傳送封包,NAT 表可能會過載?

提前致謝。

答案1

  1. 每個連接(或每個 UDP 流)
  2. 是的
  3. 是的。例如,一台內部 PC 上的 Web 瀏覽器可以同時向多個不同的外部 Web 伺服器中的每一個開啟多個並發 TCP 連線。對於每個連接,來源連接埠會有所不同(隨機選擇),但多個連接的目標連接埠和目標 IP 位址可能相同。設計用於滿足家庭中兩台或三台電腦需求的路由器可能無法應對(例如)擁有數百台非常繁忙的電腦的學校所需的同時連接數量。路由器的大小必須適合預期的負載。

如果你看TCP 用戶端的範例 C 原始碼描述於如何,您將看到「sockets」API 沒有為客戶端啟動連線來指定來源連接埠提供任何方法。

相關內容