没有开放端口时NAT表如何响应?

网络工程 路由器 纳特 网络
2021-07-24 00:39:14

如果路由器没有开放端口,我会很高兴听到真正会发生什么,例如,如果有一个大网络,每台计算机都发送了大量请求,而服务器很慢,因此表的端口正在等待响应获得释放了,但它没有发生。是否有任何救援队列(端口或其他东西)?如果发生这种情况,表/路由器正在做的任何工作?

2个回答

如果路由器中的 NAT 表已满(内存不足、特定协议的所有可用条目都在使用中等),则任何后续转换都将失败(数据包将被丢弃)。路由器可能(也可能不会)向源主机发送 ICMP 错误消息。

这种情况可能不会出现,因为您可能会在填充 NAT 表之前遇到带宽限制。


请记住,网络工程是关于企业级设备的问题,它应该可以优雅地处理这种情况,但消费级设备(这里是题外话)可能会完全失败。

尽管大多数 NAT 路由器不这样做,但每个端口(对于每个协议)都可以用于多个目的地 - 每个套接字由源 IP:源端口目标 IP:目的地端口定义。

如果许多客户端连接到相同的服务器和服务 = 目标 IP:目标端口相同,则每个套接字需要不同的源端口 - 或者,不同的源 IP 也可以区分套接字。这就是大型网络通常使用源 IP 池进行 NAT 的原因。

但是,如果端口或源 IP 耗尽,则路由器除了丢弃或拒绝连接之外别无选择。

感谢上帝,这个 NAT kludge 以 IPv6 结束了......