Networking 找出/预测路由器正在/将要用于给定连接的端口

Networking 找出/预测路由器正在/将要用于给定连接的端口,networking,nat,hole-punching,Networking,Nat,Hole Punching,我知道这会告诉你你的路由器的ip地址和它用于连接的端口。但这些信息能否“在当地”获得?(不依赖网站) 我想要的是在两个随机主机之间建立连接……中间没有一个“专用服务器”。我的问题是通过NAT。我认为最好的选择是一种TCP打孔,两台主机在某个地方连接,然后告诉对方(可以通过电话、聊天或类似方式)当前的ip地址和路由器使用的端口号。它应该诱使路由器将数据包转发到主机,尽管数据包来自不同于它们最初连接的源 有没有可能找到你的路由器用来给你打补丁的端口号,这种方式比以前更为本地? 对于解决这个问题的其他

我知道这会告诉你你的路由器的ip地址和它用于连接的端口。但这些信息能否“在当地”获得?(不依赖网站)

我想要的是在两个随机主机之间建立连接……中间没有一个“专用服务器”。我的问题是通过NAT。我认为最好的选择是一种TCP打孔,两台主机在某个地方连接,然后告诉对方(可以通过电话、聊天或类似方式)当前的ip地址和路由器使用的端口号。它应该诱使路由器将数据包转发到主机,尽管数据包来自不同于它们最初连接的源

有没有可能找到你的路由器用来给你打补丁的端口号,这种方式比以前更为本地? 对于解决这个问题的其他可能方法有什么想法吗


编辑:在路由器上设置端口转发在这种情况下不是一个选项,因为许多人(包括我)对他们的路由器没有管理权限,我不想把这样的任务强加给我的应用程序的“用户”

路由器将为每个传出连接使用不同的源端口,因此,基于传出连接的检查将不适用于您的用例

对于传入连接,也就是说,如果您想要到达NAT设备(如家庭路由器)后面的特定机器,则必须显式打开路由器上的一些端口并设置转发规则。然后,路由器将侦听该端口上的传入连接,并根据配置的规则将其转发到机器:端口

如何做到这一点取决于具体的路由器品牌/型号。搜索网页或登录到管理界面,环顾四周,应该很容易找到。但是,请确保您了解在路由器上打开端口的安全含义

根据编辑的问题更新:


如果没有端口转发,并且两个设备都支持NAT,那么唯一的解决方案就是使用中间服务器!如果其中只有一个在NAT后面,您可以让该机器启动连接

路由器将为每个传出连接使用不同的源端口,因此基于传出连接的检查不适用于您的用例

对于传入连接,也就是说,如果您想要到达NAT设备(如家庭路由器)后面的特定机器,则必须显式打开路由器上的一些端口并设置转发规则。然后,路由器将侦听该端口上的传入连接,并根据配置的规则将其转发到机器:端口

如何做到这一点取决于具体的路由器品牌/型号。搜索网页或登录到管理界面,环顾四周,应该很容易找到。但是,请确保您了解在路由器上打开端口的安全含义

根据编辑的问题更新:


如果没有端口转发,并且两个设备都支持NAT,那么唯一的解决方案就是使用中间服务器!如果其中只有一个在NAT后面,您可以让该机器启动连接

您可以使用Stun服务器作为外部全局可访问服务器。

您可以使用Stun服务器作为外部全局可访问服务器。

谢谢您的回答。我忘了提到它,但端口转发是我试图避免的(见编辑)。谢谢你的回答。我忘了提到它,但端口转发是我试图避免的(请参见编辑)。您推荐Stun服务器的原因尚未详细说明,您的用户名是Stun。我要坦率地说。我认为这是垃圾邮件。如果不是,并且Stun服务器实际上具有解决此问题的有用功能,请编辑此答案进行解释。您推荐Stun服务器的原因尚未详细说明,您的用户名为Stun。我要坦率地说。我认为这是垃圾邮件。如果不是,而且Stun服务器实际上具有解决此问题的有用功能,请编辑此答案以进行解释。