我有一些关于 UDP 打洞的问题。基于维基百科http://en.wikipedia.org/wiki/UDP_hole_punching http://en.wikipedia.org/wiki/UDP_hole_punching
1)要在两方(NAT 后面的客户端,非 NAT 的服务器)之间建立 UDP 会话,客户端只需向服务器发送一个数据包,然后允许双向会话(发送和接收) )通过防火墙?这意味着客户端也可以从服务器接收。
2) UDP 打洞:两个客户端首先连接到服务器,然后服务器将客户端端口/IP 提供给其他客户端,以便客户端在这些端口上相互发送数据包。它是否正确?
3) 如果#2 为真,为什么防火墙允许从另一个 IP 接收数据,而不是在该端口上建立连接所使用的 IP?听起来像是一个应该很容易过滤的大安全漏洞?我知道源 IP 欺骗会欺骗它,但是这个呢?
提前致谢,
约翰
1)是的,使用最合理的防火墙,除非您以极其偏执的模式配置它。
2)不完全是。本文 http://www.brynosaurus.com/pub/net/p2pnat/更详细地解释了它,但其想法是,其中一个客户端首先向另一个客户端的公共 IP 发送数据报。然后这个数据报被丢弃,但另一个客户端知道它已被发送,因为第一个客户端通过服务器告诉它。然后,另一个客户端将数据报发送回第一个客户端,该端口与第一个数据报源自的端口相同。由于第一个客户端的 NAT 会记住有来自该端口的数据包,因此它认为传入的数据报是对第一个数据报的回复。这里的问题是弄清楚 NAT 将选择哪个公共端口发送第一个数据报,但大多数 NAT 以可预测的方式执行此操作,因此它几乎总是工作正常,有时只是不是从第一次尝试开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)