NAT穿越原理——STUN

NAT穿越技术详细介绍 本文收集并整理了关于NAT穿越的一些技术,介绍这些技术的实现过程,让大家对NAT穿越技术的相关内容有个初步的认识与了解。 阅读详情

STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。

 

File:STUN Algorithm3.svg

 

以上部分来自:http://zh.wikipedia.org/wiki/STUN

 

STUN的探测过程需要有一个公网IP的STUN server,在NAT后面的UAC必须和此server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NAT外网IP,PORT等等。UAC通过是否得到这个UDP包和包中的数据判断自己的NAT类型。

       假设有如下UAC(B),NAT(A),SERVER(C),UAC的IP为IPB,NAT的IP为 IPA ,SERVER的 IP为IPC1 、IPC2。请注意,服务器C有两个IP,后面你会理解为什么需要两个IP。 

       (1)NAT的探测过程:(吃个芒果先,呵呵,老妈给的)


        STEP1:B向C的IP1的pot1端口发送一个UDP包。C收到这个包后,会把它收到包的源IP和port写到UDP包中,然后把此包通过IP1和port1发还给B。这个IP和port也就是NAT的外网IP和port(如果你不理解,那么请你去看我的BLOG里面的NAT的原理和分类),也就是说你在STEP1中就得到了NAT的外网IP。

        熟悉NAT工作原理的朋友可以知道,C返回给B的这个UDP包B一定收到(如果你不知道,去读下我的其它文章)。如果在你的应用中,向一个STUN服务器发送数据包后,你没有收到STUN的任何回应包,那只有两种可能:1、STUN服务器不存在,或者你弄错了port。2、你的NAT拒绝一切UDP包从外部向内部通过(我们公司的NAT就是)。

       当B收到此UDP后,把此UDP中的IP和自己的IP做比较,如果是一样的,就说明自己是在公网,下步NAT将去探测防火墙类型,我不想多说。如果不一样,说明有NAT的存在,系统进行STEP2的操作。

       STEP2:B向C的IP1发送一个UDP包,请求C通过另外一个IP2和PORT(不同与SETP1的IP1)向B返回一个UDP数据包(现在知道为什么C要有两个IP了吧,虽然还不理解为什么,呵呵)。

       我们来分析一下,如果B收到了这个数据包,那说明什么?说明NAT来着不拒,不对数据包进行任何过滤,这也就是STUN标准中的full cone NAT。遗憾的是,full cone nat太少了,这也意味着你能收到这个数据包的可能性不大。如果没收到,那么系统进行STEP3的操作。

       STEP3:B向C的IP2的port2发送一个数据包,C收到数据包后,把它收到包的源IP和port写到UDP包中,然后通过自己的IP2和port2把此包发还给B。

       和step1一样,B肯定能收到这个回应UDP包。此包中的port是我们最关心的数据,下面我们来分析:

        如果这个port和step1中的port一样,那么可以肯定这个NAT是个CONE NAT,否则是对称NAT。道理很简单:根据对称NAT的规则,当目的地址的IP和port有任何一个改变,那么NAT都会重新分配一个port使用,而在step3中,和step1对应,我们改变了IP和port。因此,如果是对称NAT,那这两个port肯定是不同的。

       如果在你的应用中,到此步的时候PORT是不同的,恭喜你,你的STUN已经死了。如果不同(注:相同),那么只剩下了restrict cone 和port restrict cone。系统用step4探测是是那一种。

       STEP4:B向C的IP2的一个端口PD发送一个数据请求包,要求C用IP2和不同于PD的port返回一个数据包给B。

      我们来分析结果:如果B收到了,那也就意味着只要IP相同,即使port不同,NAT也允许UDP包通过。显然这是restrict cone NAT。如果没收到,没别的好说,port restrict  NAT.

 

以上部分来自:http://www.yuanma.org/data/2007/0323/article_2446.htm

 

自动NAT检测STUN源代码.rar_nat stun_nat 类型_nat在线检测_nat检测_网络类型 可以自动探测你所处的网络NAT类型 立即下载

相关推荐

【项目分享】RailTracker: 火车票务数据采集与分析

从12306使用爬虫爬取火车站及车次信息、火车票价 通过本项目,我们将带领访问者手把手完成火车票数据采集、数据清洗、数据集成、可视化的一整个流程!

zhushatong的博客 3345

什么叫打洞

确切地说是穿透NAT,一般使用UDP协议,TCP协议也可以穿透,只是好像没有UDP成功率高。如果是一般情况,使用STUN协议. 除了要通信的两个端点之外,还有一个有公网IP的一个服务器 STUN server。 一个端点穿过防火墙,发个消息给STUN server,STUN server收到这个包之后 就可以知道该端点通过防火墙映射后的公网地址。 同样道理,STUN sever可以得到另外一个端点的通过它的防火墙映射后的公网地址。 STUN server把得到的这两个地址发给两个端点。 端点得到对方端点的公

lapcca的专栏 2848

Windows摄像头错误0xA00F4240根因与注册表修复指南

Windows摄像头错误码0xA00F4240常被误判为硬件故障,实则源于UWP应用模型下权限调用链断裂——核心是COM组件调用失败(HRESULT 0x80004003),本质反映Windows Runtime API对注册表策略键值(如CapabilityAccessManager\ConsentStore\webcam)的强依赖。该机制涉及服务状态、DWORD权限配置、ACL继承控制等多层校验,任一环节异常(如ValueLastModified时间戳损坏或ALL APPLICATION PACKAGE

weixin_31742871的博客 391

穿透NAT类型以及STUN、TURN简单介绍

穿透NAT类型以及STUN、TURN简单介绍概述NAT的副作用以及解决方案NAT有4种不同的类型锥形和对称形NAT的区别STUN和TURN的简单介绍STUN Server主要做了两件事:TURN Server也主要做了两件事:三种转发情形 概述 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Intern

qq_40741808的博客 1万+

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2536

常用的数据结构以及常用的算法

常用的数据结构以及常用的算法 常用数据结构 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。 一、线性表 线性结构: 最常用、最简单的一种数据结构。 线性表: 典型的线性结构。基本特点是线性表中的 数据元素有序且有限。结构中: ① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每

qq_47605698的博客 1452

NAT穿越

在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要其他公共服务器的中转。由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NAT Traversal)。

edisonlg的专栏 4351

LeRobot 入门教程(十七)NVIDIA IsaacLab Arena 集成

LeRobotEnvHub现已集成IsaacLabArena实现GPU加速仿真,支持GR1/G1/伽利略人形机器人实体和多种操作任务。安装需满足CUDA GPU、Ubuntu系统和IsaacSim 5.1.0要求,通过conda环境配置依赖项。系统提供SmolVLA和PI0.5等预训练策略评估功能,支持视频录制和并行环境配置。环境配置选项涵盖机器人实体、任务类型、观测维度等参数,并包含针对CUDA内存、视频录制等常见问题的解决方案。此外,LightWheel AI还通过LW-BenchHub引入了包含268

2506_90492529的博客 1250

NAT,NAPT,STUN详解

NAT,NAPT,STUN详解

ThinPikachu的博客 1827

ROS2入门到精通—— 1-1 Linux和ROS2基础

本文介绍了Linux的一般指令以及ROS2的常见理论和操作

BigDavid123的博客 3813

第1集:面试官视角:AIOps 核心能力模型与面试项目全局搭建【免费试读】

本文介绍了一门面向AIOps工程师的面试实战课程,针对当前运维领域薪资差距明显的痛点,帮助学员系统掌握企业级AIOps平台开发能力。课程承诺提供可直接用于面试和生产环境的代码实现,从零构建模块化AIOps平台。第一集重点讲解了面试官视角下的核心能力模型,并指导学员搭建项目基础环境,包括Python虚拟环境配置、本地大模型部署(Ollama)以及智能巡检Agent的代码实现。课程强调实战导向,通过40集系统讲解,帮助学员实现薪资40-60万的职业跃升。

qq_2937655951的博客 616

PJSIP NAT穿越完全指南:STUN、TURN、ICE协议的实现原理

在实时通信应用开发中,NAT(网络地址转换)穿越是确保不同网络环境下设备互联互通的关键挑战。PJSIP作为功能强大的开源SIP协议栈,通过集成STUN、TURN和ICE等协议,提供了完整的NAT穿越解决方案。本文将深入解析这些协议的工作原理,以及PJSIP如何实现高效可靠的NAT穿越,帮助开发者快速掌握实时通信中的网络障碍突破技术。 ## NAT穿越的核心挑战与解决方案 NAT设备在保护内网安

gitblog_00265的博客 398

AI在生物学领域的应用:基因序列分析和人工智能生物学

好的,非常感谢您提供的这个精彩的主题和详细的要求。我会全力以赴,遵循您的要求写一篇内容丰富、结构清晰、论述深入的专业技术文章。现在,就让我们开始这篇关于"AI在生物学领域的应用:基因序列分析和人工智能生物学"的博客文章吧! 1. 背景介绍 1.1 生物信息学的兴起

AI天才研究院 1416

STUN原理

学习过程中,记录一下。 STUN 原理理解 STUN简介 Simple Traversal of UDP over NATs, NAT的UDP的简单穿越,是一种网络协议。是客户机-服务器的一种协议,由RFC 3489 定义。该协议定义了一些消息格式,大体上分为Reques...

baidu_38671779的博客 3844

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

P2P网络穿越 NAT穿越

http://blog.youkuaiyun.com/mazidao2008/article/details/4933730 —————————————————————————————————————————————————————————————— 穿越NAT的意义:   NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用。对外不可见,不透明的内部网络也与互联网的“公...

weixin_33730836的博客 100

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

P2P网络“自由”穿越NAT的“秘密”

P2P网络“自由”穿越NAT的“秘密” Jack zhai   穿越NAT的意义:     NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用。对外不可见,不透明的内部网络也与互联网的“公平”应用,“相互共享”的思想所不容,尤其是P2P网络中“相互服务”的宗旨,所以穿越NAT,让众多内部网络的机器也参与到P2P网络中的大集体中来,一直是P2P开发者的所希望

Lostyears的专栏 1225

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NAT穿越原理介绍

NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用,由于客户端是主动登录P2P网络才可穿越,所以P2P的方式也没有违背企业的内部管理原则…… 穿越NAT的意义: NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用。对外不可见,不透明的内部网络也与互联网的“公平”应用,“相互共享”的思想所不容,尤其是P2P网络中“相互服

研发客 3048

经验笔记:NAT穿越技术

NAT穿越技术是一种使位于不同NAT网络中的主机能够直接通信的技术。NAT(Network Address Translation,网络地址转换)是一种将私有IP地址转换为公有IP地址的技术,使得多个使用私有IP地址的设备可以通过一个单一的公有IP地址访问互联网。然而,这也带来了问题,即位于不同NAT网络中的主机难以直接建立通信连接,因为它们只能看到自己的私有IP地址,而不知道对方的确切公有IP地址和端口号。这就需要NAT穿越技术来解决这一问题。

qq_45831414的博客 1715

webrtc-nat 穿越及相关协议

webrtc-nat 穿越及相关协议

bwangk的博客 1411

STUN, STUNT, XSTUNT 介绍

  STUN (From: http://zh.wikipedia.org/w/index.php?title=STUN&variant=zh-cn)  STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于

lapcca的专栏 4073

NAT类型与NAT穿越技术总结

一、NAT百科相关内容:NAT 即 Network Address Translation,是一种将私有(保留)地址转化为合法IP地址的转换技术,不仅完美地解决了lPv4地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机 ,目前广泛应用。NAT可以分为静态NAT(static nat)、NAT池(pooled nat)和 端口复用NAT(PAT Port Addre

u012888602的博客 3299

WebRTC通话原理-网络协商-NAT-ICE-STUN-TURN

作者: 亢少军 彼此要了解对方的网络情况,这样才有可能找到一条相互通讯的链路。需要做以下两个处理。 获取外网IP地址映射。 通过信令服务器(signal server)交换“网络信息”。 理想的网络情况是每个浏览器的电脑都是公网IP,可以直接进行点对点连接。如图所示。 实际情况是我们的电脑和电脑之间都是在某个局域网中并且有防火墙,需要NAT(Network Address Translation,网络地址转换),如图所示。 在解决WebRTC使用过程中的上述问题的时候,我们需要用到STUN和TURN

亢少军的博客 1063
上一篇: [转]: NAT的完全分析及其UDP穿透的完全解决方案
下一篇: Android 非UI线程使用View.post()方法一处潜在的内存泄漏
KWHOK
博客等级 码龄20年 6粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值