有一个答案以简单的方式解释了路由器如何将请求从本地网络转换到外部网络并返回(https://superuser.com/questions/105838/how-does-router-know-where-to-forward-packet)什么不清楚 - NAT 中的记录保留多长时间?
例如,如果我向 25.34.11.56:3874 发送 UDP 请求,而我的本地端点是 192.168.1.21:54389,则路由器会重写请求数据包并向 NAT 添加一条记录。假设外部端点为 68.55.32.89:34535。然后收到我请求的计算机根据NAT记录响应68.55.32.89:34535并将数据包转发到本地192.168.1.21:54389。之后记录会发生什么?
如果 25.34.11.56:3874 决定在 10 或 100 分钟后向我的外部端点 68.55.32.89:34535 发送请求怎么办?还会被路由器转发到192.168.1.21:54389吗?
假设有另一台远程计算机,其端点为 55.43.77.98:8765。如果这台计算机向我的外部端点 68.55.32.89:34535 发送请求,会发生什么?它会被转发到本地 192.168.1.21:54389 还是会被路由器过滤掉,因为远程端点与最初用于第一个请求和 NAT 记录的 25.34.11.56:3874 不匹配?
这取决于。
根据第 4.3 节RFC 4787,NAT 的 UDP 超时不应小于 2 分钟(120 秒),选定的知名端口除外。但实际上,路由器倾向于使用较小的超时。例如,OpenWRT 14.07 使用的超时时间仅为 60 秒。
对于 TCP,超时可能要大得多,因为 TCP 连接通常由显式 FIN/FIN-ACK 交换终止。对于已建立的 TCP 连接,第 5 节RFC 5382指定超时不少于2小时4分钟(7204秒),OpenWRT使用7440秒。
关于第二个问题,大多数 NAT 维护特定于一对端点(套接字地址)的映射。如果 NAT 内的主机 A 向套接字地址 B 发送数据报,则映射将仅适用于 A 和 B 之间的通信 - NAT 外的其他主机 C 将无法使用该特定映射向 A 发送数据。 (一些所谓的实心锥体NAT 允许这样做,但这种情况相当罕见。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)