Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets UDP打孔是否发生在同一网络内的主机之间?_Sockets_Networking_Router_Hole Punching - Fatal编程技术网

Sockets UDP打孔是否发生在同一网络内的主机之间?

Sockets UDP打孔是否发生在同一网络内的主机之间?,sockets,networking,router,hole-punching,Sockets,Networking,Router,Hole Punching,假设我有一个IP为42.98.1.70的路由器,有两个NIC连接到它,IP为192.168.1.200和192.168.1.300。路由器在端口10433上进行端口转发,以将数据包重定向到192.168.1.200。路由器内部网络IP为192.168.1.100 当NIC 192.168.1.300向套接字42.98.1.70:10433发送数据包时。主机192.168.1.200从套接字192.168.1.100:48900获取一个数据包,据我所知,它看起来像是路由器设置的穿孔套接字 因此,从

假设我有一个IP为42.98.1.70的路由器,有两个NIC连接到它,IP为192.168.1.200和192.168.1.300。路由器在端口10433上进行端口转发,以将数据包重定向到192.168.1.200。路由器内部网络IP为192.168.1.100

当NIC 192.168.1.300向套接字42.98.1.70:10433发送数据包时。主机192.168.1.200从套接字192.168.1.100:48900获取一个数据包,据我所知,它看起来像是路由器设置的穿孔套接字

因此,从理论上讲,如果主机192.168.1.200向套接字192.168.1.100:48900回复一个数据包,该数据包最终应返回主机192.168.1.300,因为路由器应通过其内部表映射(也称为“UDP打孔”)桥接两者

但是,从192.168.1.200发送回192.168.1.100:48900的数据包从未到达192.168.1.300

我怀疑可能发生的是UDP打孔在同一网络上的NIC之间不起作用。它只在网络外部的源和网络内部的源之间工作。是这样吗?

读完这篇RFC-,看起来我想做的就是所谓的头发固定。虽然有些路由器支持它,但并非所有路由器都支持。显然我的就是其中之一