双方都是端口限制NAT能实现P2P打洞吗?

如题,我在一个博客里面看到了下表,里面标定双方都是端口限制锥形NAT的时候依旧可以打通P2P。但是我没有想明白是怎么实现的。

image.png

首先确认一下我的概念没有理解错误,端口限制锥形NAT在打通后,对应的NAT公网IP:PORT只有客户端请求的服务器IP:PORT才能访问,其他IP和该服务器的其他端口都不能访问该NAT公网IP:PORT

假设A和B都是端口限制锥形NAT,为了简单起见我直接用客户端的名字来代指最后映射的NAT公网IP地址

1. A给S:80发送请求,建立映射 A:8000 - S:80
2. B给S:80发送请求,建立映射 B:9000 - S:80
3. 但是这两个NAT公网地址都只有S:80能发送请求,S没有办法让A和B直接和对方通信

所以双方都是端口限制锥形的NAT是以什么方式打通P2P的呢,还是说不能打通?求大佬解惑!

阅读 1.1k
1 个回答

你说的第一步和第二步属于NAT探测阶段,还有打洞阶段。第一、二步之后,A 可以通过 S (我理解你指的是STUN服务器)拿到 B 的公网地址和公网端口。打洞阶段:

  1. A 需要使用和访问S时同样的内网 IP 地址和端口发送打洞请求给 B, 请求到达 A 前面的 NAT 设备上时,生成一个 A 到 B 的表项,NAT 设备允许了 B 到 A 的请求。
  2. A 到 B 的请求报文到达 B 前面的 NAT 设备时,由于 B 前面的NAT设备中没有A、B的会话表项,这个请求会被丢弃。
  3. 所以需要 B 同时也用相同的方式给 A 发送打洞请求,在 B 前面的 NAT 设备中生成表项。等两边的 NAT 设备中都存在表项之后,链路就通了。

这是我的理解,希望对你有帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏