草庐IT

nat-traversal

全部标签

sockets - 如何编写没有任何绑定(bind)端口的用户态NAT?

我想制作自己的用户模式​​NAT应用程序。我有以下方案:VM2[192.168.8.2]------[192.168.8.1]Win2003[192.168.9.1]------[192.168.9.2]VM1VM3[192.168.8.3]_/VM4[192.168.8.4]_/我正在8.1和9.1接口(interface)上捕获RAWIP数据包。一些来自8.1的数据包以这种方式传输到9.1接口(interface):8.2->9.2替换为9.1->9.2一些来自9.1的数据包以这种方式传输到8.1接口(interface):9.2->9.1替换为9.2->8.2我的应用程序根本没有

c++ - 通过C++绕过NAT和开放端口实现低延迟

我的目的是:不要求用户打开其路由器上的端口使用我的应用程序通过代码完成所有工作这有可能吗?考虑到这个应用程序应该只能与安装了相同应用程序的其他机器一起工作,我可以从头开始编写某种协议(protocol)来做到这一点吗?我的总体想法是尽可能快地建立连接,我还必须交换小数据包,降低延迟对我来说比仅仅拥有高吞吐量更重要。 最佳答案 不要弄乱NAT。无论如何,这对延迟没有多大帮助。您使用的是TCP/IP,这是一种相当高级的协议(protocol),而且速度相对较慢。也就是说-该协议(protocol)为您做了很多很棒的工作-但以延迟为代价。

java - 如何识别NAT后面的Server Socket端口

我的PC_1中有一个服务器套接字等待接受。PC_2想要连接那个服务器套接字。但是PC_1和PC_2在NAT后面。所以PC_2不知道PC_1监听的真实端口是什么。我想要一种机制来识别此服务器套接字外部端口。我不想在路由器(NAT)上转发​​我的端口。我知道这可以通过TCP打洞来完成。但是我没有找到从服务器套接字发送数据包的方法。那么我可以这样做的方法是什么。谢谢! 最佳答案 我看到没有转发,但我不知道你的意思是手动还是通过编程。如果您不介意进行一些编程,那么您应该看看Cling. 关于ja

tcp - ZeroMQ REP/REQ 在公共(public) IP 和 NAT 后面的 IP 之间不起作用

我想使用两台不同的机器运行zmqREP/REQHelloWrold示例。源代码在这里:客户:http://zguide.zeromq.org/cpp:hwclient服务器:http://zguide.zeromq.org/cpp:hwserver我在具有公共(public)IP地址的云计算机上运行服务器,在NAT后面的笔记本电脑上运行客户端。我已验证该地址可访问(pingIP)并且端口已打开(使用netcat)。因此客户端发送消息,服务器接收它并使用相同的套接字发回回复消息,但客户端没有收到它。如果我在本地或位于不同地理区域(具有公共(public)ip)的两台云计算机之间运行此示例

.net - TCP NAT-Traversal/- 使用 .NET 打洞

我编写了一个应用程序,其中必须将客户端直接相互连接并保持连接。在使用高级技术(google)进行一些研究后,我发现我需要的东西可以通过NAT-Punching或NAT-Traversal来实现。大多数人似乎通过UDP使用NAT-Punching,但就我而言,我需要使用TCP(这是事实,在有人问“为什么不使用UDP?”之前),但我找不到任何这个或至少一个适当的教程的示例代码。所有我能找到的理论附件在哪里,但没有关于套接字或TCPClient的东西(我更喜欢套接字。)。有人可以给我链接一些示例代码,我可以使用这些示例代码连接两个位于NAT后面的客户端,或者可以将我链接到带有示例代码的完整教

node.js - 进程之间的通信 : tcp vs unix sockets, ipc vs nats

我将一个大型应用程序分成几个进程,我希望每个进程能够相互通信。现在它将在同一台服务器上,但稍后同一本地网络上的多台服务器将有多个进程需要相互通信。(表示在一台服务器上提供服务,在同一vpc上的其他服务器上提供服务)所以..我的原始选项是tcp或unixsockets。我知道只有在同一台服务器上时,Unix套接字才有用。但我们正在考虑编写我们自己的实现,在同一服务器上,进程将在unix套接字上进行通信,并且在将使用tcp进行通信的服务器之间进行通信。值得吗?当然tcp套接字比unix套接字慢..因为它不通过网络并且不被tcp相关数据包裹。问题是多少?我找不到tcp和unix套接字之间基准

unix - 如何在 2 个 nats 后面执行 p2p?

我正在尝试向2个客户端发送“你好”,每个客户端都在防火墙NAT后面,但没有成功。目前,UDP或TCP打洞都一样好。客户端A期望收到“你好p”:set--$(wget-qO-http://www.pschmidt.it/screenshooter/ss3.php|awk'{print$1,$2}');echo$1$2$3$4;`nc-l-v$2`&sudohping3-2-c30-s$2-p$4$3客户端B发送问候p:set--$(wget-qO-http://www.pschmidt.it/screenshooter/ss3.php|awk'{print$1,$2}');echo$1$

c# - 游戏如何处理 NAT 路由器问题?

在过去的几天里,我一直在研究一个在线游戏,一个2人游戏,其中一个启动服务器(在特定端口上监听),另一个通过输入他的IP连接到他。这种方法有两个问题:输入对方IP很不舒服。服务器不能位于路由器后面,因为NAT会阻止它工作。第一个问题可以通过匹配服务来解决,该服务可以在用户不关心的情况下处理IP地址。但是我不确定如何解决第二个问题。我读过“TCPholepunching”,但根据我读到的内容,当两个玩家都在路由器后面时,不可能执行此操作。如果这是真的,那么像Halo3这样由其中一名玩家担任主持人的匹配服务游戏如何运作?提前致谢。 最佳答案

带有 NAT 和动态 DNS 的 Java 服务器套接字

我正在尝试用Java为数据收集项目开发服务器端程序。架构如下:我有一个远程电子设备,它定期收集数据并将其发送回服务器。该设备配备了一张已激活GPRS连接的SIM卡,因此可以将其视为一台可以上网的电脑。在将数据发送回服务器之前,它必须知道服务器的IP地址。因为通过我的ISP获得静态IP太贵了,所以我决定尝试动态DNS(DDNS)。我已经在我的PC上安装了DDNS客户端,并在我的路由器中配置了端口转发,如下所示:ExternalPortStart:33333ExternalPortEnd:33333Protocol:TCPInternalPortStart:33333InternalPor

tcp - 具有 CoAP 和 NAT Traversal 的物联网设备

上下文:每个客户可以在NAT后面拥有100-1000个物联网设备。我们有多个客户。目的是从外部管理这些设备。设备使用CoAP协议(protocol),默认使用udp。限制很少。无法激活端口转发。无法打开VPN连接。无法对IoT设备的本地网络进行任何更改。问题我们想随时从外部打开与设备的连接。但是有NAT阻止它。选项据我了解,设备必须打开初始请求才能进行通信。关于可扩展性和效率,以下哪个选项是最好的?每个节点发送udpping以保持NAT连接打开。每个节点使用TCP并发送keepalive以保持NAT连接打开。每个节点都使用udp与NAT后面的本地代理进行通信。代理执行从coap到htt