UDP打孔可能吗?

时间:2010-08-21 00:07:16

标签: sockets udp

我正在尝试查看某个NAT后面是否可以进行UDP打孔,但是我发现当NAT后面的计算机将UDP数据包发送到两个不同的IP到同一个端口,同时绑定到同一个端口端口,NAT分配两个不同的外部端口号。所以在这个特定的NAT背后,我相信UDP打孔是不可能的,这是正确的吗?

谢谢

3 个答案:

答案 0 :(得分:1)

不一定。路由器可能愿意回复IGD

答案 1 :(得分:1)

它意味着你的NaT Symetric,如果你的NaT是Symetric,它为每个连接提供了不同的外部端口。并且它不可能从两个方向连接打孔但是它#&#&# 39; s仍然可以连接p2p。但只有当代理方使用圆锥形Nat时才有可能。搜索它。

但如果使用Symetric NaT的两个位置无法将p2p连接与Udp Hole Punching连接。

  1. a:Symetric => b:symetric ----不可能
  2. a:圆锥曲线=> b:Conic ------------很容易
  3. a:Symetric => b:Coinc ---------可能/只有单向握手 4:a:圆锥曲线=> b:symetric ---------不可能/但可以连接单向握手
  4. 但您仍然可以使用端口预测方法。这意味着你必须猜测哪个端口可以连接使用并尝试连接它(Tcp Hole Punch)

    对于Conic NaT可以查看UDP打孔请查看https://github.com/turapulku/NaT-Traversal-UDP-Hole-punch.git

    中的示例

    那仍然在发展,但现在我希望它有所帮助

答案 2 :(得分:0)

您可以使用此网站确认此特定NAT的行为。

http://nattest.net.in.tum.de/test.php

它将检查您的NAT类型并测试是否可以进行UDP / TCP打孔。

但由于您已经知道端口分配是随机的,因此无法进行UDP打孔。使用UPnP是另一种方式,但在嵌套NAT后面不起作用。