什么是STUN?

384 篇文章 18 订阅
订阅专栏
本文解析了STUN协议的作用,如何解决P2P通信中NAT问题,以及在SD-WAN网络中的部署策略。重点介绍了STUN的工作原理、服务器与客户端交互过程,以及在跨NAT通信中的打洞机制和在SD-WAN中的实际应用场景。
摘要由CSDN通过智能技术生成

什么是STUN?

P2P网络要求通信双方都能主动发起访问,但是NAT设备的存在,却阻断了这种主动访问,导致P2P应用无法正常运行。STUN是一种解决P2P应用NAT穿越问题的常用技术。它允许网络设备找出通信端点经NAT设备后的IP地址和端口号,并利用这些信息在通信双方之间建立一条可以穿越NAT设备的数据通道,实现P2P通信。

为什么需要STUN?

随着IPv4地址的枯竭,NAT功能部署越来越广泛。为了避免来自外部网络的攻击,保护网络内部的主机,NAT会过滤掉一些外网主动发送到内网的报文。因此,NAT技术虽然在一定程度上解决了IPv4地址短缺的问题,却破坏了点到点P2P(Point to Point)网络的通信。因为在P2P网络中要求通信双方都能主动发起访问,而NAT设备的存在却阻断了这种主动访问。

为了解决NAT设备给P2P网络带来的问题,出现了一些适用于P2P网络的NAT穿越技术。例如反向链接技术、应用层网关ALG(Application Level Gateway)技术、打洞技术(Hole Punching)、中间件技术等。

NAT会话穿越应用程序STUN(Session Traversal Utilities for NAT)是一种由RFC定义的网络协议,用于检测网络中是否存在NAT设备,并获取两个通信端点经NAT设备分配的IP地址和端口号。然后在两个通信端点之间建立一条可穿越NAT的P2P链接,实现P2P通信,这一过程也被形象的称为“打洞”。STUN无需现有NAT设备做任何改动,只需在组网中部署一台STUN服务器,操作起来比较简单,因此得到广泛应用。

什么是STUN服务器?

STUN采用客户端/服务器通信模式,由STUN服务器(STUN Server)组成和STUN客户端(STUN Client)组成,其中:

STUN服务器:是一个发送STUN绑定响应和接受STUN绑定请求的实体,例如路由器,STUN服务器通常部署在公网上。

STUN客户端:是一个发送STUN绑定请求和接受STUN绑定响应的实体,例如路由器。

STUN典型组网

在STUN标准中,根据私网IP地址和端口到NAT出口的公网IP地址和端口的映射方式,把NAT分为完全锥型NAT、限制锥型NAT、端口限制锥型NAT及对称NAT四种类型。为了方便用户理解这4种NAT类型,我们把这4种NAT类型的介绍放在了NAT里,详细信息请参见相关词条NAT。

STUN如何工作?

通过STUN客户端与STUN服务器之间的报文交互,STUN服务器可以发现NAT设备的存在,并获取NAT设备分配给STUN客户端的IP地址和端口号,在STUN客户端之间建立一条数据通道。STUN客户端之间建立好数据通道之后,客户端之间可以相互访问。STUN的报文交互流程包含NAT探测和打洞两个阶段,详细的交互过程如下图所示。

STUN报文交互过程

NAT探测阶段

STUN客户端向STUN服务器发送STUN绑定请求报文(Binding Request)。

STUN服务器收到绑定请求报文后,获取请求报文中的源IP地址和源端口,并构建STUN绑定响应报文(Binding Response)发送给客户端。报文中携带MAPPED-ADDRESS、XOR-MAPPED-ADDRESS、RESPONSE-ORIGIN属性。

STUN客户端收到STUN绑定响应报文后,根据该报文中的MAPPED-ADDRESS或XOR-MAPPED-ADDRESS属性,获取IP地址和端口,与之前发送的STUN绑定请求报文中的源IP地址和源端口比较,如果不一致,则STUN客户端前面存在NAT设备。确定探测结果后,STUN客户端将结果返回给有需要的业务模块。

打洞阶段

打洞是指通过中间设备(如路由反射器)的协助在各自的NAT网关上建立相关表项,使P2P连接双方发送的报文能够直接穿透NAT网关的过程。NAT STUN的打洞流程如下:

STUN客户端通过BGP从路由反射器处获得其他STUN客户端的接口信息(包括NAT前后的IP地址和端口信息)。当Client1需要与Client2进行通信时,Client1会通过BGP通知Client2,它们之间需要通过打洞建立数据通道。

Client1与Client2互相发送STUN绑定请求进行打洞。Client1使用本端NAT前的IP地址和端口分别与Client2 NAT前和NAT后的IP地址和端口构建STUN绑定请求报文A和B发送给Client2。同时,Client2也同样进行相应的操作。

Client2收到报文A和B后,处理流程如下,Client1也类似:

对于报文A,若Client1与Client2在同一个私网中,也就是同一个NAT设备后侧,则报文A可以成功发送至Client2,否则报文A被丢弃。

对于Client1发出的报文B,经Client1前面的NAT设备1时会生成表项,记录Client1到Client2的会话,但是由于Client2前的NAT设备2上没有相关表项,报文B将会被丢弃。

同样的,对于Client2发出的报文B,经Client2前面的NAT设备2上将会生成表项,记录Client2到Client1的会话,但是由于Client1前的NAT设备1上没有相关表项,报文B也会被丢弃。

Client1和Client2持续向对方发送绑定请求报文,当NAT设备1与NAT设备2上的会话表项都生成后,绑定请求报文就可以成功发送至对端Client。

Client2收到STUN绑定请求报文后,向Client1发送STUN绑定响应报文,Client1也同样进行相应的操作。

完成以上报文交互后,STUN客户端之间成功建立可穿越NAT的数据通道。

STUN如何在SD-WAN网络中应用?

在SD-WAN解决方案中,为了节省IP地址资源,分支站点的用户经常会使用私网IP地址,通过NAT转换后访问总部。因此,分支的网关CPE经常会和NAT设备一起部署。网关CPE发出的报文在经过NAT设备后,IP地址会发生变化,如果无法获取报文转换后的IP地址,则CPE之间的数据通道会建立失败。因此,为了实现分支之间业务流量穿越NAT,需要在SD-WAN场景中部署NAT STUN功能。

SD-WAN的NAT穿越场景

在SD-WAN 的NAT穿越组网中,路由反射器RR(Route Reflector)及分支CPE通过管理通道,向网络控制器iMaster NCE发起注册信息。注册成功后,RR和CPE被iMaster NCE纳管。CPE通过管理通道,向RR发布站点、路由、隧道、NAT转换前后的IP地址和端口号等信息,统称为TNP(Transport Network Port)。分支CPE1与分支CPE2之间通过数据通道,传输它们之间的业务流量。

由于CPE1和CPE2前面都部署了NAT设备,为了实现CPE1和CPE2之间的业务互通,需要在RR和CPE上部署NAT STUN功能,探测CPE之间是否有NAT设备。并获取CPE1、CPE2设备经NAT转换后的IP地址和端口号,建立数据通道,转发它们之间的业务流量。

分支CPE作为STUN客户端,RR作为STUN服务器,它们之间的交互过程如下:

分支CPE向RR发起STUN探测请求,发送STUN绑定请求报文。

RR给分支CPE回应STUN探测请求,发送STUN绑定响应报文。

CPE收到RR的STUN绑定响应报文后,判断CPE设备前是否有NAT设备。

探测成功后,CPE将自己的TNP信息通过BGP协议发送给RR,并通过RR获取其他CPE的TNP信息。TNP信息里包含了CPE设备经NAT转换前和转换后的IP地址及端口号。

获取到TNP信息后,CPE之间使用各自NAT转换后的IP地址和端口号建立数据通道,传输分支之间的业务流量。

STUN原理
FeelTouch Labs
06-21 269
​ P2P网络要求通信双方都能主动发起访问,但是NAT设备的存在,却阻断了这种主动访问,导致P2P应用无法正常运行。STUN是一种解决P2P应用NAT穿越问题的常用技术。它允许网络设备找出通信端点经NAT设备后的IP地址和端口号,并利用这些信息在通信双方之间建立一条可以穿越NAT设备的数据通道,实现P2P通信。
一个可用的STUN服务器
08-02
一个可用Stun服务器,用于学习标准的STUN有用,也可以直接使用此代码
STUN是什么
10-15 2485
STUN 是英文Simple Traversal of UDP over NAT(即UDP包简单穿越网络地址转换)的缩写。是一个让IP电话能检测其前面的NAT存在和类型的协议。支持STUN的IP电话可以通过一系列 STUN语句,查询位于公网上的STUN服务器,智能地在其SIP/SDP信息中,通过利用NAT映射的公网地址和端口,修改私网的IP地址和端口。这样 就不需更改任何NAT的设置,而让SIP信
STUNTMAN 开源 STUN 服务器使用教程
最新发布
gitblog_00808的博客
08-08 711
STUNTMAN 开源 STUN 服务器使用教程 stunserverVersion 1.2. This is the source code to STUNTMAN - an open source STUN server and client code by john selbie. Compliant with the latest RFCs including 5389, 5769, ...
stun详解
04-15 1916
STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口。毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在NAT穿透中占有一席之地。   STUN的探测过程需要有一个公网IP的STUN server,在NAT后面的UAC必须和此server配合,互相之间发送若干个UDP数据包。UDP包中包含有UAC需要了解的信息,比如NAT外网IP,POR
NAT会话穿越应用程序(STUN)(RFC-5389)
qq_33743182的博客
02-17 4201
RFC文档链接 摘要
免费的STUN服务器列表,SIP呼叫可能用得着
热门推荐
运用之妙,存乎一心
09-07 1万+
转自:https://gist.github.com/zziuni/3741933 # source : http://code.google.com/p/natvpn/source/browse/trunk/stun_server_list# A list of available STUN server. stun.l.google.com:19302stun1.l.google
什么是STUN v2?
03-28
STUN(Session Traversal Utilities for NAT)是一种用于网络通信的协议,它的主要作用是帮助在使用NAT(Network Address Translation)的网络环境中建立点对点的连接。STUN v2是STUN协议的第二个版本,它在第一个...
stun:快速的RFC 5389 STUN实现
05-01
软件包stun实现了NAT(STUN)[ ]协议和会话遍历实用程序,而没有外部依赖关系,并且在热路径中的分配为零。 客户端自动请求重传。 符合作为核心软件包。 有关简单用法,请参见和。 另请参见适用于TURN [ ]实现)和...
go-stun:STUN客户端的go实现(RFC 3489和RFC 5389)
04-30
go-stun是golang(aka UDP穿Kong)中的STUN(RFC 3489,5389)客户端实现。 :STUN-通过网络地址转换器(NAT)的用户数据报协议(UDP)的简单遍历 :用于NAT(STUN)的会话遍历实用程序 使用命令行工具 只需运行...
stun-server:简单的 stun 服务器 (RFC 5780)
06-05
电击服务器 简单的 stun 服务器 (RFC 5780)
可用的stun server
05-25
NAT检测工具 博文链接:https://blackbaby.iteye.com/blog/431963
公开的免费STUN服务器
09-29
主要介绍了公开的免费STUN服务器stunserver.org 测试是正常的,需要的朋友可以参考下
免费STUN服务器,NAT穿越
01-16
免费的服务器stun,内网穿透用,比较全了,有的地方封,大家多尝试
stun 客户端和服务器
03-11
stun 客户端和服务器 测试与学习工具
STUN简介
Jieen的专栏
08-28 800
STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。 一旦客户端得知了I
stun server、turn server、coturn server安装与使用
weixin_34211761的博客
01-16 893
前提:双网卡服务器 stun 什么STUN STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户 端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的In...
写文章

热门文章

  • C语言结构体初始化的几种方法 22168
  • 5G Wifi频段及信道介绍 20935
  • traceroute 详解及结果出现*的分析 19351
  • Git Windows版的安装与使用(保姆级教程,附案例) 18677
  • linux——signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTR 16055

分类专栏

  • 防火墙 7篇
  • openwrt 87篇
  • 软件安装 1篇
  • linux字符设备驱动 1篇
  • 经验记录 5篇
  • 系统安装 4篇
  • 工具使用 3篇
  • vscode 5篇
  • C++ 14篇
  • python 3篇
  • uboot 13篇
  • shell 3篇
  • 虚拟机 6篇
  • 网络编程数据结构及函数 1篇
  • 通信 2篇
  • 数据库 1篇
  • 协议 5篇
  • Linux命令 13篇
  • 网络编程 19篇
  • C语言编程 14篇
  • gcc编译 4篇
  • 编译相关 17篇
  • PON 4篇
  • linux 109篇
  • 内核 16篇
  • 软件安装及设置 3篇
  • ipv6 20篇
  • 小米mini版青春版智能无线路由器 4篇
  • 路由转发 7篇
  • git或者svn 26篇
  • HarmonyOS
  • 鸿蒙 1篇
  • 个人笔记 31篇
  • 杂记 17篇
  • 转载记录 384篇

最新评论

  • VM提示“另一个程序已锁定文件的一部分 进程无法访问”

    2401_87528766: 为什么我找不到这个ick啊

  • 从零开始学习OpenWrt完美教程

    Marco LUO: 我有个一直没搞懂的问题,为什么web界面点击了右上角的刷新按钮,会导致整个openwrt 挂了,这个应该怎么解决

  • 自旋锁(spinlock) 解释得经典,透彻

    TJR2615473: static inline void spin_unlock(spinlock_t *lock); 咋没这个介绍呢表情包

  • MinGW-w64的安装详细步骤(c/c++的编译器gcc、g++的windows版,win10、win11真实可用)

    gin_beretta: 4和5的测试能做出来,但在matlab的命令行窗口输mex -setup,显示如下: 错误使用 mex 未检测到支持的编译器。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访 问 https://www.mathworks.com/support/compilers。

  • Openwrt LuCI 入门(一)

    北雁南飞259: 大佬我想把顶部导航栏的OpenWrt改成我想要的字眼该怎么配置呢

最新文章

  • 一招解决,SVN控制的文件夹都是绿色勾,没有叹号或者其它标识的问题
  • 16进制对应的ASCII表
  • 《一篇搞懂》系列之一 —— iptables
2024
08月 2篇
07月 4篇
06月 7篇
05月 11篇
04月 7篇
03月 27篇
02月 15篇
01月 81篇
2023年67篇
2022年33篇
2021年17篇
2020年146篇
2019年53篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家张家港玻璃钢雕塑造型玻璃钢海洋雕塑总代直销龙岗坂田商场美陈装饰儿童主题商场美陈玻璃钢运动雕塑厂家秋季商场创意美陈宁安玻璃钢人物雕塑玻璃钢剪纸雕塑怎样制作过程抚州玻璃钢雕塑产品大旺玻璃钢造型雕塑价格西安欧式玻璃钢雕塑订做价格兰州大型玻璃钢雕塑制作商场玻璃钢花盆什么颜色好特色商场美陈批发项城玻璃钢雕塑加工厂家商场天窗美陈ip汕头市玻璃钢雕塑中山玻璃钢海豚喷泉雕塑玻璃钢雕塑图片厂家内销熊猫玻璃钢雕塑舟山玻璃钢雕塑哪家好新民玻璃钢游乐场门头雕塑江西玻璃钢雕塑售价沈阳个性化玻璃钢雕塑供应商好口碑的玻璃钢造型雕塑商丘玻璃钢仿铜雕塑生产厂家玻璃钢火龙果娃娃雕塑开封水景玻璃钢景观雕塑价格广安户外玻璃钢雕塑摆件设计价格广东水果玻璃钢雕塑联系方式香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化