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

Posted

技术标签:

【中文标题】UDP打孔是不是发生在同一网络内的主机之间?【英文标题】:Does UDP hole punching occur in between hosts inside the same network?UDP打孔是否发生在同一网络内的主机之间? 【发布时间】:2014-01-04 01:56:01 【问题描述】:

假设我有一个 IP 为 42.98.1.70 的路由器,有 2 个网卡连接到它,其 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 之间不起作用。它仅适用于网络外部的来源和网络内部的来源。是这样吗?

【问题讨论】:

【参考方案1】:

在阅读了这个 RFC - https://www.rfc-editor.org/rfc/rfc5128 之后,看起来我想要做的就是所谓的“头发固定”。尽管有些路由器支持它,但并非所有路由器都支持。显然我的就是其中之一。

【讨论】:

以上是关于UDP打孔是不是发生在同一网络内的主机之间?的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中将 UDP 套接字绑定到通配符主机

关闭同一网络内的windows主机

UDP打孔可能吗?

UDP 打孔在非对称 NAT 上失败

如何使用UDP进行跨网段广播

TCP/IP||UDP广播和多播