Network programming 通过防火墙的点对点网络连接

Network programming 通过防火墙的点对点网络连接,network-programming,ip,rtp,nat,Network Programming,Ip,Rtp,Nat,我想在不同位置的两台计算机之间建立网络连接(RTP或UDP),每台计算机位于NAT调制解调器/防火墙后面。我不想修改防火墙 我的工作假设是,我需要一个两台计算机都能到达的机器人(如internet服务器上的外壳帐户)。每台计算机都连接到bot,bot允许两台计算机更新和查询状态以及交换数据 这就可以了,但这意味着所有数据都是通过机器人传输的。有没有一种方法可以在不使用bot的情况下连接这两台计算机,或者如果没有,允许bot在建立连接后退出数据交换?我的感觉是没有办法做到这一点,但是我的TCP/I

我想在不同位置的两台计算机之间建立网络连接(RTP或UDP),每台计算机位于NAT调制解调器/防火墙后面。我不想修改防火墙

我的工作假设是,我需要一个两台计算机都能到达的机器人(如internet服务器上的外壳帐户)。每台计算机都连接到bot,bot允许两台计算机更新和查询状态以及交换数据


这就可以了,但这意味着所有数据都是通过机器人传输的。有没有一种方法可以在不使用bot的情况下连接这两台计算机,或者如果没有,允许bot在建立连接后退出数据交换?我的感觉是没有办法做到这一点,但是我的TCP/IP有点生锈了…

如果你认为NAT/防火墙上没有任何东西是正确的

例如,据我所知,打孔无法处理过载的NAT(PAT),因为源端口由NAT设备随机化,并且它映射/匹配目标公共地址和选择的拾取源端口

UPnP可以工作,但您需要再次假设它存在并在NAT设备上启用

在我看来,如果你想成为普通人,你只有两个选择: 1.配置NAT。 2.使用代理(您提到的bot)。
例如,Skype使用第二个,但它是以分布式方式使用每个Skype客户端作为潜在代理的(可能只有当它检测到它不在NAT后面或不受NAT限制时)。

可能重复或@Adam Liss:正确,抱歉:-(谢谢,我来看看打孔)(虽然你表示它不起作用,但我应该知道更多).UPnP是否不用于专用网络内的服务发现?我的场景是在公用网络上。如果我理解正确,UPnP用于专用网络中,以允许元素之间的协商。在这种情况下,允许客户端在需要打开的端口上更新路由器/防火墙以进行通信(在实践中,自动修改路由器或防火墙),如果这样做,两个客户端都可以交换可以访问它们的端口(交换可能通过代理进行)。