当前位置: 首页 > 知识库问答 >
问题:

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

锺玺
2024-01-20

如题,我在一个博客里面看到了下表,里面标定双方都是端口限制锥形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:802. B给S:80发送请求,建立映射 B:9000 - S:803. 但是这两个NAT公网地址都只有S:80能发送请求,S没有办法让A和B直接和对方通信

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

共有1个答案

濮冠宇
2024-01-20

你说的第一步和第二步属于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 设备中都存在表项之后,链路就通了。

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

 类似资料:
  • 我正在做一个移动项目,需要用两个设备进行P2P通信。 和我面临的问题。(因为智能手机很少有公共ip) 我找到了一些答案。它是'UDP打孔‘。 我想我对'UDP打孔‘有100%的概念上的理解,并且写了一些代码。但不管用。 这是我的情况。 但不管用。(实际上是断断续续地工作。也许10次就有一次?我不知道为什么成功和失败。没有任何微小的共同关系。) 我认为这不是NAT类型的问题。我测试了韩国,韩国90%

  • 前言 加密货币都是去中心化的应用,去中心化的基础就是P2P网络,其作用和地位不言而喻,无可替代。当然,对于一个不开源的所谓私链(私有区块链),是否必要,尚无定论。 事实上,P2P网络不是什么新技术。但是,使用Node.js开发的P2P网络,确实值得围观。这一篇,我们就来看看Ebookcoin的点对点网络是如何实现的。 源码 主要源码地址: peer.js: https://github.com/E

  • 问题内容: 一般来说,是否可以限制可以实现接口的类? 更具体地说,通用接口可以将其实现限制为的后代吗? 上下文是对象应以类型安全的方式强制转换为对象。 在用尽所有其他信息源之后,我已经很强烈地预感这是不可能的,但是如果有人可以证明我不满意,我将感到非常高兴! 问题答案: 如果强制转换的能力不是严格必需的,则可以在界面中添加这样的其他方法就足够了: 如果大多数实现实际上都可以扩展,它们可以简单地作为

  • 本文向大家介绍Docker端口映射实现网络访问的方法,包括了Docker端口映射实现网络访问的方法的使用技巧和注意事项,需要的朋友参考一下 Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢? 下面我来介绍下docker通过端口映射来实现网络访问 一、从外部访问容器应用 在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 当容器中运行一些网

  • 网络浏览接口启动限制 限制网络浏览接口的使用。设定为[开]后,需于启动浏览接口前输入密码。 提示 使用网络浏览接口时,会自动限制恶质网站或不适切网站的服务(需收费)。详细请参阅(网络) > [利用网络过滤服务]。唯有在日本地区贩卖的PSP™可设定此项机能。

  • 1 P2P网络介绍 ​ 对等网络(P2P网络)是分布式系统和计算机网络相结合的产物。可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力,存储能力,网络连接能力,打印机等),这些共享资源通过 网络提供服务和内容,能被其他对等节点直接访问而无需经过中间实体。在此网络中的参与者即是资源,服务和内容的提供者,又是资源,服务和内容的获取者。 ​ 在HPB主网网络中,是由运行HPB公链程序的计算