gpt4 book ai didi

java - 如何发现给定接口(interface)背后的 NAT 类型

转载 作者:太空狗 更新时间:2023-10-30 02:35:46 28 4
gpt4 key购买 nike

我想发现给定网络接口(interface)后面的 NAT 类型(FullCone、Restricted Cone、Port Restricted cone、Symmetric)。

我测试了不同的工具(http://freshmeat.net/projects/jstun/http://code.google.com/p/boogu/),但它们针对同一界面报告了不同的结果。

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

最佳答案

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

问题是(正如我最近所见)NAT 有时可能充当 Address-Dependent (对称)有时为 Endpoint-Independent (完整、受限或端口受限锥体)。

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

我正在使用 this library当时有时它告诉我 NAT 的行为是地址相关的,而其他时候它是端点独立的(两者之间的切换似乎也是完全随机的,有时在我重新启动设备后发生,有时在一段时间后发生,。 ..).

这发生在我的移动设备上 Slovak Telekom ,一家主要由Deutsche Telekom拥有的公司所以我认为这个问题至少会在整个欧洲范围内出现。

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

最后一点,检查 NAT 相对于 TCP 的行为的一种简单方法是在 google 中输入“我的 IP 地址是什么”,然后先打开(比如说)五个页面。如果页面与您的 IP 地址一致,则您的 NAT 行为是地址相关或地址和端口相关(对称)。但同样,如果它们确实对应,您也无法确定。

关于java - 如何发现给定接口(interface)背后的 NAT 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369664/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com