NAT类型与验证方法

NAT类型与验证方法方法一 NAT 类型测试工具 http www pc6 com softview SoftView 92208 htmlSTUN 服务器 方法二 PyPunchP2P https github com laike9m PyPunchP2P

概念

内部Tuple:(源)内网IP+PORT(例如:192.168.1.5:50007)

外部Tuple:(源)公网IP+PORT

目标Tuple:(目标)公网IP+PORT

 

NAT类型介绍

Symmetric和Cone两种,其中Cone又分为Full Cone、Restricted Cone、Port Restricted Cone三种类型。基本不同是NAT将内部Tuple与外部Tuple的转换和映射关系的不同。Cone NAT与目标Tuple无关,Symmetric NAT将目标Tuple作为建立转换关系之前的重要参考项,与目标Tuple严格一一映射

Full Cone:

内部Tuple X经过NAT转换至外部Tuple Y,X-Y的建立转换关系,任意外部节点且无限制Tuple Z都可以将Tuple Y作为目标Tuple,向我们的内部Tuple X发送UDP报文。

Restricted Cone:

与Full Cone不同的是:多了一个限制,限制是什么,出于安全考虑,NAT设备只转发已知的外部Tuple的IP报文,只有当内部Tuple X曾经发送过UDP报文给目标Tuple Z,才可以与Tuple X发送报文。

Port Restricted Cone NAT:

在Restricted Cone上的基础上,出于更加安全的考虑,NAT设备只转发已知的外部Tuple的IP+PORT(过滤条件更为苛刻)报文

Symmetric

通过严格的NAT方式,与目标Tuple建立严格的一一映射关系,确保安全性。

所以,从安全角度考虑:Symmetric > Port Restricted Cone NAT > Restricted Cone > Full Cone。相反,如果我们做P2P,打通点对点的通信方式的简单程度,与上面排序就相反,最友好的NAT类型就是Full Cone,任意节点且无限制。

 

测试与验证方法

方法1:借助第三方STUN列表

Python:https://github.com/laike9m/PyPunchP2P

需要借助外部STUN服务器完成,如下可作为STUN列表,进行尝试建立连接。

stun.xten.com 3478 stun.voipbuster.com 3478 stun.voxgratia.org 3478 stun.sipgate.net 10000 stun.ekiga.net 3478 stun.ideasip.com 3478 stun.schlund.de 3478 stun.voiparound.com 3478 stun.voipbuster.com 3478 stun.voipstunt.com 3478 numb.viagenie.ca 3478 stun.counterpath.com 3478 stun.1und1.de 3478 stun.gmx.net 3478 stun.callwithus.com 3478 stun.counterpath.net 3478 stun.internetcalls.com 3478 stun.voip.aebc.com 3478 numb.viagenie.ca 3478

方法2:测试工具

NAT类型测试工具:http://www.pc6.com/softview/SoftView_92208.html

 

方法3:部署stun服务器

Server:https://github.com/gortc/stund

Client:https://github.com/ccding/go-stun

注:Server端有双地址和公网IP的要求限制。

 

NAT类型判别流程

NAT类型与验证方法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229925.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午3:32
下一篇 2026年3月16日 下午3:33


相关推荐

  • feof()原理和用法

    feof()原理和用法一 feof 是什么 feof 是检测流上的文件结束符的函数 如果文件结束 则返回非 0 值 否则返回 0 一般在文件操作 中经常使用 feof 判断文件是否结束 二 feof 的经典错误根据这个函数的定义 一般大家都是这样使用的 但是这样使用 文件中无论是否有内容 都会被判断为 文件不为空 include stdio h intmai stdio h

    2026年3月20日
    2
  • 复变函数 —— 0. 连接复数与三角函数的欧拉公式

    复变函数 —— 0. 连接复数与三角函数的欧拉公式文章目录什么是欧拉公式欧拉公式的推导什么是欧拉公式欧拉公式是数学中一类非常重要的 能够把三角函数和复数联系在一起 并在我们需要的时候可以简化问题的数学工具 欧拉公式的推导如果你懂级数的概念 那么推导处欧拉公式是非常简单的 首先 我们用泰勒级数分别展开 exe xex sin x sinxsinx 以及 cos x cosxcosxex 1 x1 x22 x33 xnn e x 1 frac x 1 frac x 2 2 frac x 3 3 c

    2026年3月17日
    2
  • 设置定时器和清除定时器的最佳方案

    设置定时器和清除定时器的最佳方案以下就是推荐的设置定时器和清除定时器的推荐方案这种方式的好处 是代码易读 且非常简洁 还可以有效防止设置定时器以后 忘记清除定时器的事情发生 consttimer setInterval gt 操作内容 1000 通过 once 来监听定时器 在 beforeDestro 钩子中可以被清除 this once hook beforeDestro

    2026年3月18日
    1
  • Pycharm 实现远程部署和调试,原来这么简单「建议收藏」

    Pycharm 实现远程部署和调试,原来这么简单「建议收藏」一般代码本地调试完成后,需要运行到服务器上,比如自动化测试脚本、爬虫脚本等,所以第一步需要将项目上传到服务器,然后在服务器上进行调试和运行。但是需要长期维护和开发的项目,这样就繁琐了很多,并且我们时常要维护多个测试或者开发环境,每个环境的Python版本和依赖包有可能还存在差异,这样的话,每次更新需要花费的时间就更多了。其实,很多的编辑器都考虑到这个问题,可以实现远程调试,比如Pycharm、Vscode等。Pycharm可以进行远程部署项目(上传和下载),还可以通过配置远程解释器进行远程调..

    2022年8月28日
    3
  • 客服系统源码购买_网联接入商户扣款

    客服系统源码购买_网联接入商户扣款介绍:客服系统多种商户接入客服源码,可以实现一行代码接入客服,非常舒服,支持无限客服,无限坐席!私有化源码部署,数据可控,稳定可靠。可自定义版权、logo。支持网页、微信公众号、小程序、App等任何程序对接。客服数量不限,每个客服又独立管理后台和账户密码。每个账户管理可以添加N个客服并且可以分组。双向微信模板消息通知。支持商品推送,对客服评价。支持客户分组。支持设置问候语,进入对话自动发送消息,可只能分配客服和转接。网盘下载地址:http://kekewl.cc/Evr7Jd0UX7h图

    2026年2月8日
    7
  • 视频中的车牌特征识别[通俗易懂]

    视频中的车牌特征识别[通俗易懂]这里,没有直接采用之前的方案,是因为在设计的时候,发现直接采用颜色等直接特征提取然后进行二值化处理的方法,如果视频中出现颜色类似的区域,则很有可能错误的定位,例如在公交车中车牌区域范围和前窗以及部分的背景比较相似,直接采用这种方法会出错。这里,定位的算法,我们使用的是HOG特征提取和Adaboost的算法进行定位。对应的程序为:具体的原理如下所示:adaboost:http://www.doc88.com/p-211656392…

    2022年5月15日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号