TCP over IPv6 克服 NAT 问题

TCP over IPv6 to overcome NAT issues

当使用 TCP/IP 套接字 (IPv4) 将数据从一个设备发送到另一个设备时,我只能访问设备他们的 私人 IP 地址在我自己的 WiFi 中。我无法将 TCP 发送到 public IP 地址,因为 NAT(网络地址转换)拒绝它们或难以转换为私有 IP。

但是使用 IPv6 每个设备都有自己的 public IP。我想 没有私有 IP 那么,是吗?所以 NAT 应该不会有问题,例如对称 NAT,因为 不需要 NAT

假设两台设备都支持 IPv6 并且知道它们的 IPv6 地址:我可以直接从一台设备向另一台设备发送数据吗?

But with IPv6 every device gets it's own public IP. I suppose there are no private IPs then, are there?

并非所有 IPv6 地址都是 public。有环回地址,link-本地地址,本地地址... - 见IPv6 - Special Addresses。设备通常有多个 IPv6 地址(即环回、link-local、...),但不能保证它们有一个全球 IPv6 地址。这在很大程度上取决于网络设置。

can I send data directly from one to the other device?

如果两台设备都有一个 public IP,您可以将数据从一个发送到另一个。只是,它可能不会被其他设备接收,因为防火墙拒绝此类流量。 SoHo 路由器实际上很常见,至少在默认情况下不允许从外部启动 IPv6 连接。公司防火墙通常也否认这一点。设备本身也可能有防火墙。等等。