【发布时间】:2021-01-21 16:15:26
【问题描述】:
让我们考虑客户端 A 在 NAT A 后面而客户端 B 在 NAT B 后面的场景。TCP 打孔会在双方打开一个端口进行通信。客户端 A 可以在开放端口上托管 http/https 服务器吗?
【问题讨论】:
标签: http web tcp p2p hole-punching
让我们考虑客户端 A 在 NAT A 后面而客户端 B 在 NAT B 后面的场景。TCP 打孔会在双方打开一个端口进行通信。客户端 A 可以在开放端口上托管 http/https 服务器吗?
【问题讨论】:
标签: http web tcp p2p hole-punching
TCP 打洞仅适用于可以建立的特定 TCP 连接,因为 a) 双方以某种方式预先知道对等方的源端口,并且 b) 同时开始与对等方的 TCP 握手。只有这样才能建立一个 NAT 状态,该状态也只对这个特定的连接(源 IP、端口和目标 IP、端口)有效。
外部客户端将不匹配现有的 NAT 状态,因为源 IP、端口与现有状态不匹配。也不会因为有一些 Web 服务器列表而从内部创建新状态。因此,虽然网络服务器可以托管在 NAT 后面,但它无法从 NAT 外部访问。
【讨论】: