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.
相关推荐
基于STUN协议的NAT穿越相关知识点
一、预备知识 <1>STUN消息格式 STUN 消息都是由消息头与载核数据构成的,STUN消息头格式: 消息类型和消息长度(除了消息头长度)都为 2 字节,而事务 ID 为16 字节。消息类型许可的值如下 (1)捆绑请求(Binding Requests) (STUN Binding Request使用UDP协议发送到STUN服务器,当Binding Request消息到达服务器的...
[转]NAT类型与检测
client向server IP1:port发送请求,server使用IP1:port将收到请求的源IP和port(即设备的公网IP地址和端口号)回复给client,如果得到的公网IP和设备自身的IP一样,则判断设备自身处在公网,无NAT,检测结束,否则进行下一步STEP2。此外,只有收到数据的外网主机才可以反过来向内网主机发送包。完全锥形NAT,所有从同一个内网IP和端口号发送过来的请求都会被映射成同一个外网IP和端口号,并且任何一个外网主机都可以通过这个映射的外网IP和端口号向这台内网主机发送包。
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/
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需要了解的信息,比
kettle连接达梦资源库数据库插件
kettle自定义插件plugin database plugin 达梦插件 dm插件
STUN检测NAT类型
STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在ANT穿透中占有一席之地。STUN的探测过程需要有一个公网IP的STUN Server,在NAT后面的UAC(User Agent Client)必须和此Server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NA
GB28181协议实战:5分钟搞定海康摄像头SIP注册失败问题(附Wireshark抓包分析)
本文详细解析了海康摄像头在GB28181协议下SIP注册失败的7个关键原因及解决方案,包括网络可达性、鉴权参数、NAT穿越等核心问题。通过Wireshark抓包分析,提供快速定位方法,帮助工程师高效解决SIP注册失败问题,提升实时图像联调效率。
《Hadoop大数据技术原理与应用》(第2版)黑马程序员的课后习题答案
《Hadoop大数据技术原理与应用》(第2版)黑马程序员的课后习题答案
STUN原理
学习过程中,记录一下。 STUN 原理理解 STUN简介 Simple Traversal of UDP over NATs, NAT的UDP的简单穿越,是一种网络协议。是客户机-服务器的一种协议,由RFC 3489 定义。该协议定义了一些消息格式,大体上分为Reques...
用MCP扩展Cursor的5种神奇用法:从文件操作到网页抓取实战
本文深入探讨了如何利用MCP(Model Context Protocol)扩展Cursor AI编程助手,解锁五种高效实用场景。从文件系统操作、网页内容抓取,到数据库查询、Figma设计稿对接,乃至构建自定义MCP服务器,文章通过实战案例展示了如何将Cursor从代码编辑器升级为能理解并操作工作环境的智能助手,显著提升开发效率与自动化水平。
突破内网限制:go2rtc STUN服务器与NAT类型检测实战指南
在智能家居监控场景中,你是否遇到过这些问题:WebRTC视频流卡顿、远程访问摄像头失败、P2P连接建立超时?这些问题往往与网络地址转换(NAT)密切相关。本文将详细介绍如何通过go2rtc配置STUN服务器进行NAT类型检测,解决90%的内网视频流访问难题。读完本文你将掌握:STUN服务器工作原理、NAT类型检测方法、go2rtc配置步骤及常见问题排查。 ## STUN服务器与NAT穿透原理 ...
YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题
在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。
液态神经网络(LNN):打破AI“静态快照”的连续动力学革命---AI大模型系统从零开始0029
MIT研究团队受秀丽隐杆线虫神经系统的启发,开发出革命性的液态神经网络(LNN)。该技术通过连续微分方程建模神经元动态,实现输入响应速度的自适应调节,解决了传统AI模型静态化、高能耗和低解释性的痛点。LNN具有三大突破性优势:仅需少量神经元(如20个)即可完成复杂任务;能处理非均匀时序数据;在自动驾驶、医疗监测等领域展现出卓越的适应性和鲁棒性。这项将生物智能与数学建模完美融合的技术,有望成为下一代AI的核心架构,目前已在无人机导航等场景验证了其高效性,被预测为2026年最具潜力的AI突破方向。
stun检查nat类型
nat(Session Traversal Utilities for NAT)会话穿越应用程序,可以让位于nat后的客户端找出自己的公网地址以及对应的Internet端口,最重要的是可以判断自己处于哪种nat类型之后,它是通过udp进行通信的。 下面重点讲怎么判断nat的类型。 一般将nat类型可以分为四种:全锥形,受限锥形,端口受限锥形,对称形。之所以是叫锥,可以想象一下圆锥,一个圆集中映射到一个点,也就是本地ip端口映射到nat服务器上面的公网ip和端口,其他任何远端ip和端口的网络都可以连接进来
17、高通8155座舱平台--QNX开发基础
我个人习惯,拿到一个新板子,第一件事就是打开IDE,建一个空的QNX项目,然后跑一遍Hello World。比如,当触摸屏被按下时,驱动发一个脉冲给UI进程,告诉它“嘿,有人摸屏幕了”。我在8155上调试时,就遇到过因为脉冲优先级太低,导致触摸响应延迟的问题。IDE自带的编译器是qcc,它其实是gcc的封装。QNX的IPC机制,可以说是它最牛的地方。嗯,这套流程走下来,你对QNX开发的基本功就差不多了。QNX默认的消息缓冲区大小是64KB,如果你要传大块数据,比如音频流,那就得用共享内存了。
NAT 类型及检测方法
NAT类型及检测方法 STUN协议是一个客户机/服务器协议,在公网上存在着大量的STUN服务器,用户可以通过在自己主机上运行STUN客户端远程连接STUN服务器来确认自身的网络状况. 客户端主机所在网络可以分为以下类型: 1, Opened:即主机拥有公网IP,并且没有防火墙,可自由...
保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子
笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
NAT类型检测终极指南:从协议原理到实战应用深度解析
在当今数字化时代,网络连接质量直接影响着用户体验和应用性能。NAT类型检测作为网络优化的核心技术,能够精准识别网络连接特性,为各类应用提供科学的优化依据。本文将深入探讨NAT检测的技术原理、实现方法和实际应用,帮助您全面掌握这一关键技术。 ## 一、NAT检测技术基础:理解网络连接的本质 NAT(网络地址转换)是现代网络架构中的关键技术,负责内网设备与外网通信的地址转换。不同NAT类型对网络连
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
2258



被折叠的 条评论
为什么被折叠?



