四种主要类型

  1. 完全圆锥型NAT Full Cone NAT
  2. 受限圆锥型NAT Address Restricted Cone NAT
  3. 端口受限圆锥型NAT Port Restricted Cone NAT
  4. 对称型NAT(Symmetric NAT 又称为双向NAT,大型公司网络中经常采用的)

所谓圆锥型NAT是指内网机器A用同一个IP和端口去连外面任何一台计算机,它在NAT服务器上映射的都是同一个IP地址和端口,也就是说同一个内网IP和端口在NAT上都只有一个出口,是个一对多的关系,这个就有点像圆锥,一个点,一个面构成。

所谓对称型NAT是指内网机器A中的一个IP地址和端口访问不同的外部IP地址和端口时,都会形成不同的映射,也就是说,内网IP+端口和目的IP、端口 是一对一的关系,任何一点改变,映射都将改变。现在的Linux系统中是这种类型,安全性好。

具体是哪种类型,可以通过做NAT时的算法决定,代码层面并不复杂。如果对4种类型不是很清楚,可以百度下,不少文章都有配图,讲的非常好。废话不多说,直接上干货。

实现代码

git clone https://gitee.com/wangxinyu2011/nat_type_check.git

实现方案

1.

发送:Client 使用(IP1, PORT1) 向服务器的 (IP3, PORT3)发送数据。

返回 :同时服务器返回收到(IP2, PORT2)。

如果 (IP1 , PORT1)等于(IP2, PORT2),则不存在NAT。

否则存在NAT。

2.

发送:Client 使用(IP1, PORT1) 向服务器的 (IP3, PORT3)发送数据。要求服务器以(IP4,PORT4)向 NAT后的(IP2, PORT2)发送数据。

如果Client 能收到数据,则为Full cone

如果收不到数据,继续检测。

3.

发送:Client 使用(IP1, PORT1) 向服务器的 (IP3, PORT3)发送数据。要求服务器以(IP3,PORT4)向 NAT后的(IP2, PORT2)发送数据。

如果Client能收到数据,则为Address Restricted Cone NAT

如果收不到数据,继续检测。

4.

发送:Client 使用(IP1, PORT1) 向服务器的 (IP3, PORT3)发送数据。

返回 :同时服务器返回收到(IP2, PORT2)。

断开WAN口再连接上(消除连接跟踪表)

发送:Client 使用(IP1, PORT1) 向服务器的 (IP3, PORT3)发送数据。

返回 :同时服务器返回收到(_IP2, _PORT2)。

如果 (IP2, PORT2)与(_IP2, _PORT2) 相同,则为PORT Restricted Cone NAT,

否则为对称NAT。

路由器NAT 类型检测实现相关推荐

  1. 路由器NAT类型检测

    考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone.Restricted Cone.Port Restricted Cone和Symmetric NAT四种.值得指出的是,对 ...

  2. P2P内网穿透之Nat类型介绍及Nat类型检测16种NAT组合穿透操作指南整理

    目录 根据RFC 3489规定 Nat共分以下类型: 第一部分: NAT类型介绍 Full Cone NAT: Restricted Cone NAT: Port Restricted Cone NA ...

  3. Linux怎么检测nat类型,STUN(RFC3489)的NAT类型检测方法

    在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信(即所谓的P2P通信),而不需 ...

  4. openwrt上用stun实现NAT类型检测

    一.安装stun: 相关组件下载参照:https://github.com/awe1p/stun cd到openwrt源代码路径 git glone https://github.com/awe1p/ ...

  5. Linux设备检测外部网络NAT类型

    Linux设备检测外部网络NAT类型 在异地组网的过程中发现,对称型NAT(Symmetric NAT)对P2P穿透的支持很不好,因此在搭建P2P穿透个人使用的客户端或服务器之前有必要搞清楚自己所在网 ...

  6. stun检查nat类型

    nat(Session Traversal Utilities for NAT)会话穿越应用程序,可以让位于nat后的客户端找出自己的公网地址以及对应的Internet端口,最重要的是可以判断自己处于 ...

  7. NAT类型及检测方法

    一 NAT的类型 NAT可以分为很多种,但是最为普遍的是传统NAT,或者称为向外NAT.向外NAT在默认情况下只允许向外的Session穿越NAT,这就是我们最为常见的情况. 这种向外NAT又可以分为 ...

  8. [转]NAT类型与检测

    NAT类型与检测 一.NAT分类 Full Cone NAT(完全圆锥型) Address Restricted Cone NAT(地址限制圆锥型) Port Restricted Cone NA ...

  9. NAT 类型及检测方法

    NAT 类型及检测方法 STUN协议是一个客户机/服务器协议,在公网上存在着大量的STUN服务器,用户可以通过在自己主机上运行STUN客户端远程连接STUN服务器来确认自身的网络状况. 客户端主机所在 ...

最新文章

  1. 面试官:聊一聊 Spring Boot 服务监控机制
  2. db2安装包v10.5_LINUX安装db2V10.5步骤
  3. TCP和UDP是否可以绑定同一端口进行通信
  4. 新建linux 服务器初始化配置
  5. [我研究]Behavior Based Software Theft Detection - Hawk
  6. 哈工大刘挺:如何训练一个更强大的中文语言模型?
  7. Ubuntu18.04下C++编译tensorflow并在QT中使用
  8. PHP调微信小程序接口生成access_token
  9. 计算机用户名显示TEMP,windows7登陆创建TEMP临时个人配置文件夹解决方法-系统操作与应用 -亦是美网络...
  10. INA217构成的专业级微型话筒(麦克风)前置放大典型电路图
  11. Barra风险模型简介
  12. 用计算机数字唱歌,悬赏跪求计算器各种歌曲数字谱(最好带和音)
  13. 语音转写基于科大讯飞WebApi接口的安卓实现--上传录音音频翻译成文字
  14. 如何批量生成Flattermarken条码
  15. Qt中根据pc屏幕分辨率按比例修改窗口的大小
  16. Libgdx slg游戏进程记录
  17. 非遗“洋蛇灯”国家级传承人身患尿毒症 期待年轻人加入
  18. DDS格式介绍及相关工具
  19. 机器学习/深度学习/图机器学习 学习小结
  20. 2019年最佳云桌面服务商

热门文章

  1. 计算机专业我的工匠梦作文,【推荐】我的科技梦作文7篇
  2. 圣诞之歌:クリスマス タイム和My Baby Grand~ぬくもりが欲しくて~ ZARD
  3. springboot实现微信小程序二维码生成
  4. C++实现小写转大写
  5. [iOS Xib加载/封装] xib加载以后无法赋值Laber属性的值
  6. 笔记本html外接显示器,提升效率 笔记本外接显示器(Intel篇)
  7. 如何更改计算机管理员账户名称,win10系统管理员名称怎么改_win10管理员账户名怎么修改...
  8. MATLAB编程之混沌系统
  9. 直播视频流+html,前端页面播放 rtmp 流与 flv 格式视频文件
  10. IP地址短缺该如何解决?