UDP打孔可能吗?
Posted
技术标签:
【中文标题】UDP打孔可能吗?【英文标题】:UDP hole punch possible? 【发布时间】:2011-04-01 22:20:17 【问题描述】:我正在尝试查看在某个 NAT 后面是否可以进行 UDP 打孔,但我发现当 NAT 后面的计算机将 UDP 数据包发送到同一个端口的两个不同 IP 并绑定到同一个端口时端口,NAT 分配两个不同的外部端口号。所以在这个特定的 NAT 背后,我认为 UDP 打洞是不可能的,这是正确的吗?
谢谢
【问题讨论】:
【参考方案1】:不一定。路由器可能愿意回复IGD。
【讨论】:
谢谢,试过了,不行。毫不奇怪,它实际上是一个蜂窝数据连接。至少值得一试。我唯一想不到的另一件事是端口猜测,但它们似乎是随机分配的。坚果。【参考方案2】:这意味着你的 NaT 是对称的,如果你的 NaT 是对称的,它会为每个连接提供不同的外部端口。并且不可能从两种方式连接打孔,但仍然可以连接 p2p。但只有在代理端使用圆锥 Nat 时才有可能。搜索那个。
但如果两个位置使用对称 NaT,则无法将 p2p 连接与 Udp 打孔连接。
-
a:Symetric => b:symetric ---- 不可能
a:Conic => b:Conic ------------ 很容易实现
a:Symetric => b:Coinc --------- 可能/只有一种方式握手
4: a:Conic => b:symetric --------- 不可能/但可以连接一种方式握手
但是您仍然可以使用端口预测方法。这意味着您必须猜测可以在连接中使用的端口并尝试连接它(Tcp Hole Punch)
对于圆锥 NaT 可以看到关于 UDP 打孔请在https://github.com/turapulku/NaT-Traversal-UDP-Hole-punch.git查看示例
这仍在开发中,但现在我希望它会有所帮助
【讨论】:
【参考方案3】:您可以使用此网站来确认此特定 NAT 的行为。
http://nattest.net.in.tum.de/test.php
它将检查您的 NAT 类型并测试是否可以进行 UDP/TCP 打孔。
但是由于您已经知道端口分配是随机的,所以 UDP 打孔是不可能的。使用 UPnP 是另一种方式,但不适用于嵌套 NAT。
【讨论】:
以上是关于UDP打孔可能吗?的主要内容,如果未能解决你的问题,请参考以下文章