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 浏览器可以同时打开多个 TCP 连接,连接到多个不同的外部 Web 服务器。对于每个连接,源端口会有所不同(随机选择),但目标端口和目标 IP 地址对于多个连接可能相同。设计用于满足家庭中两三台计算机需求的路由器可能无法应对(例如)学校中可能需要的数百台非常繁忙的计算机的并发连接数量。路由器的大小必须根据预期负载进行调整。

如果你看看TCP 客户端的 C 源代码示例描述于如何,您会发现“套接字”API 没有提供任何方法让客户端发起连接来指定源端口。

相关内容