Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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
Java 如何发现给定接口背后的NAT类型_Java_Python_Nat_Discovery - Fatal编程技术网

Java 如何发现给定接口背后的NAT类型

Java 如何发现给定接口背后的NAT类型,java,python,nat,discovery,Java,Python,Nat,Discovery,我想了解给定网络接口背后的NAT类型(FullCone、Restricted Cone、Port Restricted Cone、Symmetric) 我测试了不同的工具(,),但它们对同一个界面报告了不同的结果 我正在用Python(或其他语言)寻找一个明确的答案,如果没有其他语言,第二选择是Java。 NAT设备是在一个 不同类型地址的数量 和端口映射方案。晕眩 不是所有这些都能正常工作 这是否足够明确?这只是维基百科的一段引文,但从这段引文看来,你的请求实际上是不可能的。正如@s.Lott

我想了解给定网络接口背后的NAT类型(FullCone、Restricted Cone、Port Restricted Cone、Symmetric)

我测试了不同的工具(,),但它们对同一个界面报告了不同的结果

我正在用Python(或其他语言)寻找一个明确的答案,如果没有其他语言,第二选择是Java。

NAT设备是在一个 不同类型地址的数量 和端口映射方案。晕眩 不是所有这些都能正常工作


这是否足够明确?这只是维基百科的一段引文,但从这段引文看来,你的请求实际上是不可能的。

正如@s.Lott所说,眩晕是你的首选协议

然后,晕眩只是一个协议。以下是我的建议:

1STUN现在有两个版本:旧版本是-这是一个轻量级协议,允许应用程序发现NAT的存在和类型以及它们与公共互联网之间的防火墙(因此它主要且仅用于检测NAT类型);新版本是-这是一个用于处理NAT遍历的其他协议的工具

2还有一个名为TURN的STUN中继扩展。TURN允许主机控制中继器的操作,并使用中继器与其对等方交换数据包。TURN与其他一些中继控制协议的不同之处在于,它允许客户端使用单个中继地址与多个对等方通信

工具包括:

  • STUN服务器(RCF389):用C++ < /LI>
  • STUN客户端(RFC3489):由python实现

  • 翻转服务器(RFC5766):通过c

  • TURN客户端(RFC5766):使用c和python
注:
因为TURN是新版本STUN的扩展,TURN服务器也支持RFC5389的新STUN请求。

我支持@S.Lott的回答:不可能使用STUN(或任何其他协议)100%确定您所使用的NAT类型

问题是(正如我最近看到的那样),NAT有时可能充当(对称的),有时充当(完全的、受限的或端口受限的)圆锥

仔细想想,地址相关意味着当您从NAT后面的客户机上的一个套接字向两个不同的服务器发送数据包时,NAT将为每个服务器创建两个自定义公共地址:端口元组。在我的例子中,这些绑定看起来完全是随机的,但是如果范围很小,有时这些元组实际上是相等的!这混淆了测试

我当时正在使用,有时它告诉我NAT的行为与地址有关,有时与端点无关(两者之间的切换似乎也是完全随机的,有时发生在我重新启动设备之后,有时发生在一段时间之后,…)

这件事发生在我的移动设备上,这是一家主要由公司所有的公司,所以我认为问题至少会波及整个欧洲

我想说的是,这里的规则是:如果眩晕测试告诉你你在一个对称NAT后面,那么情况就是这样,但是如果它告诉你不是这样,那么你不能100%确定

最后一点,检查NAT在TCP方面的行为的一种简单方法是在google中键入“what is my IP address”,然后打开第一个(比如)五页。如果页面与您的IP地址不一致,则NAT的行为取决于地址或地址和端口(对称)。但是,如果它们确实对应,你就不能确定了