我正在尝试一些p2p网络。在做了一些研究后,我学到的最大的障碍之一是“如果客户端在NAT/防火墙后面怎么办”,后来我发现了穿孔,但它并不总是能保证工作。
就我所知,我不明白它为什么会失败,这是我目前所知道的:
ip:port
存储在目录ip:port
ip:port
。(3)ip:port
发送数据,这是她从服务器获得的。(5)ip:port
到其本地ip:port
的映射,NAT只需将在Bob的公共ip:port
上接收到的任何数据转发到其计算机。一个问题是,Alice的NAT服务器中的NAT映射会超时,或者在固定时间之后,或者在一段时间不活动之后。
第二个潜在问题是,NAT服务器可能会限制Alice的NAT映射仅对Alice建立的TCP连接或Alice与所连接的初始IP“SHE”之间的连接“良好”。(换句话说,爱丽丝和鲍勃之间的直接交流可能会被阻断。)
等等。
不。这只是意味着它不会一直奏效。
null
我正在尝试在Delphi中做TCP打孔。我只有一个端口打开-10000(用于测试目的)。 下面是我的代码片段(完整源代码): 之后,我尝试连接到客户端的内部端口,但我得到错误“连接超时”。 我认为问题是远程客户端找不到要连接的服务器,因为客户端已经与重定向服务器建立了连接。
我对NAT表的理解是 NAT表仅映射(专用IP:端口)->(公用IP:端口) 它不关心协议或套接字连接 主机A关闭套接字并在同一本地端口(100)上打开新监听套接字 但这没用!我发现了其他复杂的实现,但我很好奇这种方式有什么问题。
我目前正在C中使用“打孔”方法实现一个(UDP)p2p应用程序。我发现了J.Selbie以前的文章,他解释了基本原理,并相应地进行了操作(post1,post2),但可能我遗漏了一些东西,只有一个对等体接收到数据,而另一个没有。 以下是我正在采取的步骤: > 设置:其中一个对等体连接到4G蜂窝加密狗(NAT a),另一个连接到通往ISP提供商(NAT B)的路由器。这些是针对两个NAT的stunc
我正在研究TCP打孔技术,从这篇文章中得到了一些知识:TCP_HOLE_PUNCHING。但我不明白下面的部分: 这里有几个问题,谁能帮忙解释一下吗?如有任何帮助或建议,我们将不胜感激!! 假设我们有一个客户端应用程序运行在NAT1后面,一个服务器应用程序运行在NAT2后面。他们将有消息传递和文件传输通信。模式将是服务器监听并接受来自客户端的连接。他们需要使用TCP打孔来保持TCP连接工作吗? Q
我已经尝试TCP打孔一段时间了,论坛似乎对基于TCP的方法和C编程语言没有多大帮助。主要参考文献如下, 我的设置是 客户端A--NAT-A--Internet--NAT-B--Client B。 假设客户机A知道B的公共endpoint和私有endpoint,而B知道A的endpoint(我已经编写了一个服务器'S',用于在对等点之间交换endpoint信息),并且两个NAT都不对称,如果两个客户