我试图了解当具有两个不同公共 IP 地址的两个 NAT 后面的两个对等点尝试使用同时打开建立 TCP 连接时 NAT 的行为。我做了一些研究,发现两个对等点都将通过 ICE 服务器获得他们的公共映射,然后在尝试建立同时打开的 TCP 之前通过集合服务器交换他们的映射。
我想了解对等方如何保证获得与其与其他对等方共享的端口映射相同的端口映射?
例如:
在图中,主机 A 向集合服务器询问主机 B 的 Nat 映射,然后主机 B 执行相同的操作。之后,他们尝试同时打开 TCP(假设他们在完整锥体地图后面)。同步映射的步骤 1) 主机 A 向 IP Y 端口 100 发送 SYN 数据包 2) 同时 B 将向 IP X 端口 55 发送 SYN 数据包
我的问题是:主机 A 如何保证获得相同的外部端口映射,即:它通过集合点服务器与主机 B 共享的端口 55,以及主机 B 如何保证获得相同的外部端口映射,即:端口 100。换句话说,NAT 是否总是将相同的端口映射分配给相同的(IP、端口)唯一元组?
当然,假设 NAT 支持同时打开 TCP,我说的是动态 NAT,而不是具有静态映射的 NAT。
编辑:
我需要澄清的是,当这种类型的 TCP 同时打开时,我只对 NAT 的行为感兴趣。“NAT”将如何尽最大努力确保其背后的 HOST 获得它期望获得的相同映射。
附加说明:RFC 5382 https://tools.ietf.org/rfc/rfc5382.txt 中描述了 TCP 同时打开