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

每个NAT下的P2P网络

金钧
2023-03-14

我正在做一个移动项目,需要用两个设备进行P2P通信。
和我面临的问题。(因为智能手机很少有公共ip)

我找到了一些答案。它是'UDP打孔‘。

我想我对'UDP打孔‘有100%的概念上的理解,并且写了一些代码。但不管用。

这是我的情况。

Device A connected NAT(A) for Wi-Fi.  
Device B connected NAT(B) for Wi-Fi.  
NAT(A) and NAT(B) is different one.  

Relay Server S bind socket and waiting for devices. (S is WebServer but Network Status is good.)  

At the first, A and B send dummy packet to S. Then S save UniqueID(to tell A and B), Public IP, Port.  

And S send information to each device A and B.   

Like this:  
 - IP Address and Port Number about A. -> send to B  
 - IP Address and Port Number about B. -> send to A  

Now A and B send UDP packet to other device based on information(IP Address and Port Number) from S.  
(15 per second. using same socket that used server-device session)  

但不管用。(实际上是断断续续地工作。也许10次就有一次?我不知道为什么成功和失败。没有任何微小的共同关系。)

我认为这不是NAT类型的问题。我测试了韩国,韩国90%的NAT不是对称锥。

共有1个答案

林德辉
2023-03-14

>

  • 根据NAT的实现,它可能根本不起作用。NAT漏洞穿孔需要某种特殊形式的NAT实现:a)如果NAT识别出UDP流量,它可能(但有时不能)通过将发送方端口号更改为某个随机端口号(并将发送方IP更改为公共IP地址)进行NAT转换,然后在一段有限的时间内将该端口上的传入UDP流量重定向回NAT后面的主机(将端口号更改为接收方IP)。那就是它的工作地点。b)另一种可能是,NAT确实只将通信量从特殊主机重定向到NAT后面的主机的打开端口。在那里它将不起作用。c)“刷新”传入通信量超时规则不是标准化的。传入通信量可能会延长超时。但可能需要将传出通信量发送到同一主机(服务器)才能延长超时。

    对于某些实现,UDP状态似乎会很快过期(某些情况下在100 ms内)。这意味着,您要么需要继续向您的服务器发送保持活动的数据包,要么至少需要在短于100毫秒的时间内发送UDP数据包(例如,每50毫秒或20毫秒发送一次)。

  •  类似资料:
    • NAT网关能够为公有云VPC网络中虚拟机提供IP地址转换功能,使虚拟机可以访问外网或提供互联网服务。 NAT网关能够为公有云VPC网络中虚拟机提供IP地址转换功能,使虚拟机可以共享弹性公网IP访问Internet或使虚拟机提供互联网服务。目前支持纳管阿里云和华为云平台的NAT网关。 NAT网关提供SNAT(Source Network Address Translation,源网络地址转换)、DN

    • 如题,我在一个博客里面看到了下表,里面标定双方都是端口限制锥形NAT的时候依旧可以打通P2P。但是我没有想明白是怎么实现的。 首先确认一下我的概念没有理解错误,端口限制锥形NAT在打通后,对应的NAT公网IP:PORT只有客户端请求的服务器IP:PORT才能访问,其他IP和该服务器的其他端口都不能访问该NAT公网IP:PORT。 假设A和B都是端口限制锥形NAT,为了简单起见我直接用客户端的名字来

    • 本文向大家介绍VirtualBox下Host Only+NAT方式的网络配置,包括了VirtualBox下Host Only+NAT方式的网络配置的使用技巧和注意事项,需要的朋友参考一下 VirtualBox下Host Only+NAT方式的网络配置,供大家参考,具体内容如下 环境 宿主机Win8虚拟机Ubuntu有线连接(无线可以选择桥接模式) 需求 主机和虚拟机能互相ping通虚拟机能访问外网

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

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