STUN检测NAT类型原理(转)

STUN协议详解 1.概述 STUN(session traversal utilities for NAT),一种处理NAT传输的协议,主要作为工具来服务其他协议。它允许位于NAT(或多重NAT后的客户端找出自己的公网地址,查出自己位于那种类型的NAT之后以及NAT为某一个本地端口所绑定的internet端口),这些信息被用来两个同时处于NAT路由器之后的主机之间建立UDP通信。目的就是找到外界连接内部地址所需的信息。 2.STUN协议架构 1.请求/响应(request/response)类型,由客户端给服务器 阅读详情

STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。
STUN的探测过程需要有一个公网IP的STUN Server,在NAT后面的UAC(User Agent Client)必须和此Server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NAT外网 IP,PORT等等。UAC通过是否得到这个UDP包和包中的数据判断自己的NAT类型。
假设有如下UAC(B),NAT(A),STUN SERVER(C),UAC的IP为IPB,NAT的IP为IPA,SERVER的IP为IPC1、IPC2。请注意,STUN 服务器C有两个IP,后面你会理解为什么需要两个IP。

STEP1:
B向C的IP1的port1端口发送一个UDP包。C收到这个包后,会把它收到包的源IP和port写到UDP包中,然后把此包通过IP1和port1发还给B。这个IP和port也就是NAT的外网IP和port,也就是说UAC在STEP1中就得到了NAT的外网IP。
如果在UAC向一个STUN服务器发送数据包后,没有收到STUN的任何回应包,那只有两种可能:1、STUN服务器不存在,或者port弄错了;2、你的NAT拒绝一切UDP包从外部向内部通过(我们公司的NAT就是)。
当B收到此UDP后,把此UDP中的IP和自己的IP做比较,如果是一样的,就说明自己是在公网。如果不一样,说明有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.

NAT穿透原理全解析:从STUN/TURN到打洞技术的工程实践 你的设备躲在NAT后面,外网根本找不到你。这不是个例。据统计,全球超过90%的终端设备都运行在NAT环境下。IPv4地址早在2011年就已耗尽,NAT(Network Address Translation)成为了延续IPv4生命的"续命丹",但也带来了端到端通信的巨大障碍。今天,我们就来彻底搞懂NAT穿透的底层原理。NAT穿透是一个看似简单实则复杂的领域。理解NAT类型是基础:四种NAT类型决定了穿透难度STUN用于地址发现:让设备知道自己的公网映射UDP打洞是主流方案。 阅读详情

相关推荐

基于STUN协议的NAT穿越相关知识点

一、预备知识 <1>STUN消息格式 STUN 消息都是由消息头与载核数据构成的,STUN消息头格式: 消息类型和消息长度(除了消息头长度)都为 2 字节,而事务 ID 为16 字节。消息类型许可的值如下 (1)捆绑请求(Binding Requests) (STUN Binding Request使用UDP协议发送到STUN服务器,当Binding Request消息到达服务器的...

纯粹的博客 2258

[转]NAT类型与检测

client向server IP1:port发送请求,server使用IP1:port将收到请求的源IP和port(即设备的公网IP地址和端口号)回复给client,如果得到的公网IP和设备自身的IP一样,则判断设备自身处在公网,无NAT,检测结束,否则进行下一步STEP2。此外,只有收到数据的外网主机才可以反过来向内网主机发送包。完全锥形NAT,所有从同一个内网IP和端口号发送过来的请求都会被映射成同一个外网IP和端口号,并且任何一个外网主机都可以通过这个映射的外网IP和端口号向这台内网主机发送包。

Sky的专栏 3671

NatTypeTest工具,NAT类型测试小工具

NatTypeTest工具,判断网络两端的NAT类型 比较实用的网络技术小工具,需要基于.netfamework2.0或者更高运行

openwrt上用stun实现NAT类型检测

一、安装stun: 相关组件下载参照:https://github.com/awe1p/stuncd到openwrt源代码路径git glone https://github.com/awe1p/stun package/network/stunmake menuconfig,选中新增的stun-client和stund,保存退出make V=s 镜像编译并烧录后,多了两个指令:stund stun-client。使用方法参照官网所述:https://openwrt.org/docs/guide-user/

awe1p 8896

NAT类型测试工具-NatTypeTester

NAT类型测试工具-NatTypeTester,测试自己的nattype。

NatTypeTester

用以检测网络的NAT类型的工具。使用方法很简单,解压之后运行NatTypeTester.exe ,点击get,会给出当前网络的NAT类型。

STUN检测NAT类型原理

STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。 STUN的探测过程需要有一个公网IP的STUN Server,在NAT后面的UAC(User Agent Client)必须和此Server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比

renfengmei技术博客 1635

kettle连接达梦资源库数据库插件

kettle自定义插件plugin database plugin 达梦插件 dm插件

weixin_42122126的博客 2169

STUN检测NAT类型

STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。STUN的探测过程需要有一个公网IP的STUN Server,在NAT后面的UAC(User Agent Client)必须和此Server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NA

金鹏当家的 3057

GB28181协议实战:5分钟搞定海康摄像头SIP注册失败问题(附Wireshark抓包分析)

本文详细解析了海康摄像头在GB28181协议下SIP注册失败的7个关键原因及解决方案,包括网络可达性、鉴权参数、NAT穿越等核心问题。通过Wireshark抓包分析,提供快速定位方法,帮助工程师高效解决SIP注册失败问题,提升实时图像联调效率。

weixin_29212867的博客 551

《Hadoop大数据技术原理与应用》(第2版)黑马程序员的课后习题答案

《Hadoop大数据技术原理与应用》(第2版)黑马程序员的课后习题答案

qq_36773158的博客 4646

STUN原理

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

baidu_38671779的博客 3844

用MCP扩展Cursor的5种神奇用法:从文件操作到网页抓取实战

本文深入探讨了如何利用MCP(Model Context Protocol)扩展Cursor AI编程助手,解锁五种高效实用场景。从文件系统操作、网页内容抓取,到数据库查询、Figma设计稿对接,乃至构建自定义MCP服务器,文章通过实战案例展示了如何将Cursor从代码编辑器升级为能理解并操作工作环境的智能助手,显著提升开发效率与自动化水平。

weixin_29231027的博客 315

突破内网限制:go2rtc STUN服务器与NAT类型检测实战指南

在智能家居监控场景中,你是否遇到过这些问题:WebRTC视频流卡顿、远程访问摄像头失败、P2P连接建立超时?这些问题往往与网络地址转换(NAT)密切相关。本文将详细介绍如何通过go2rtc配置STUN服务器进行NAT类型检测,解决90%的内网视频流访问难题。读完本文你将掌握:STUN服务器工作原理、NAT类型检测方法、go2rtc配置步骤及常见问题排查。 ## STUN服务器与NAT穿透原理 ...

gitblog_00063的博客 1127

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

液态神经网络(LNN):打破AI“静态快照”的连续动力学革命---AI大模型系统从零开始0029

MIT研究团队受秀丽隐杆线虫神经系统的启发,开发出革命性的液态神经网络(LNN)。该技术通过连续微分方程建模神经元动态,实现输入响应速度的自适应调节,解决了传统AI模型静态化、高能耗和低解释性的痛点。LNN具有三大突破性优势:仅需少量神经元(如20个)即可完成复杂任务;能处理非均匀时序数据;在自动驾驶、医疗监测等领域展现出卓越的适应性和鲁棒性。这项将生物智能与数学建模完美融合的技术,有望成为下一代AI的核心架构,目前已在无人机导航等场景验证了其高效性,被预测为2026年最具潜力的AI突破方向。

添柴程序猿的专栏 372

stun检查nat类型

nat(Session Traversal Utilities for NAT)会话穿越应用程序,可以让位于nat后的客户端找出自己的公网地址以及对应的Internet端口,最重要的是可以判断自己处于哪种nat类型之后,它是通过udp进行通信的。 下面重点讲怎么判断nat的类型。 一般将nat类型可以分为四种:全锥形,受限锥形,端口受限锥形,对称形。之所以是叫锥,可以想象一下圆锥,一个圆集中映射到一个点,也就是本地ip端口映射到nat服务器上面的公网ip和端口,其他任何远端ip和端口的网络都可以连接进来

u011039816的专栏 4564

17、高通8155座舱平台--QNX开发基础

我个人习惯,拿到一个新板子,第一件事就是打开IDE,建一个空的QNX项目,然后跑一遍Hello World。比如,当触摸屏被按下时,驱动发一个脉冲给UI进程,告诉它“嘿,有人摸屏幕了”。我在8155上调试时,就遇到过因为脉冲优先级太低,导致触摸响应延迟的问题。IDE自带的编译器是qcc,它其实是gcc的封装。QNX的IPC机制,可以说是它最牛的地方。嗯,这套流程走下来,你对QNX开发的基本功就差不多了。QNX默认的消息缓冲区大小是64KB,如果你要传大块数据,比如音频流,那就得用共享内存了。

woailuojp的博客 50

NAT 类型及检测方法

NAT类型及检测方法 STUN协议是一个客户机/服务器协议,在公网上存在着大量的STUN服务器,用户可以通过在自己主机上运行STUN客户端远程连接STUN服务器来确认自身的网络状况. 客户端主机所在网络可以分为以下类型: 1, Opened:即主机拥有公网IP,并且没有防火墙,可自由...

chenglimie7017的博客 1163

保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子

笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 697

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NAT类型检测终极指南:从协议原理到实战应用深度解析

在当今数字化时代,网络连接质量直接影响着用户体验和应用性能。NAT类型检测作为网络优化的核心技术,能够精准识别网络连接特性,为各类应用提供科学的优化依据。本文将深入探讨NAT检测的技术原理、实现方法和实际应用,帮助您全面掌握这一关键技术。 ## 一、NAT检测技术基础:理解网络连接的本质 NAT(网络地址转换)是现代网络架构中的关键技术,负责内网设备与外网通信的地址转换。不同NAT类型对网络连

gitblog_00895的博客 1005

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: SIP即时消息(RFC3428)
下一篇: TCP中有一个Keep-alive的机制可以检测死连接
Channels_net
博客等级 码龄22年 12粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值