STUN协议详解

10 篇文章 3 订阅
订阅专栏
7 篇文章 2 订阅
订阅专栏
STUN协议是一种用于穿越NAT的工具,帮助客户端获取公网地址和NAT类型。它基于客户机-服务器架构,通过请求/响应和指示交易类型确定NAT绑定。STUN报文包含头部和属性,如MAPPED-ADDRESS和XOR-MAPPED-ADDRESS,用于获取和验证NAT后的IP地址和端口。该协议在VoIP和其他需要穿越NAT的通信中起到关键作用。
摘要由CSDN通过智能技术生成

1.概述

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

2.STUN协议架构

1.请求/响应(request/response)类型,由客户端给服务器发送请求,并等待服务端返回响应,用于确定一个NAT给客户端分配的具体绑定。客户端通过事务ID将请求响应连接起来。
2.指示类型(indication transaction),由服务器或者客户端发送指示,另一方不产生响应,用于保持绑定的激活状态。事务ID通常作为debugging aid使用。

所有的STUN报文信息都包含有一个固定头部,包含了方法,类和事务ID。方法表示是具体哪一种传输类型。STUN中只定义了一种方法,即binding(绑定),其他方法可以由使用者自行扩展;Binding方法可以用于请求/响应类型和指示类型。

STUN基于客户机-服务器协议。如一个VoIP电话或者软件可能会包含一个STUN客户端。这个客户端向STUN服务器发送请求,之后,服务器就会向STUN客户端报告NAT路由器的公网IP地址以及NAT为允许传入流量传回内网而开通的端口。同时还使得STUN客户端能够确定正在使用的NAT类型——因为不同的NAT类型处理传入的UDP分组的方式不同。

3 STUN报文格式

        包括20字节的STUN header

        BODY中可以有0个或多个attribute

3.1 STUN HEADER

        

最高2为0,以区分复用同一端口时STUN协议

2位用于分类,C0和C1

12位用域定义 请求/指示

STUN MESSAGE TYPE (16位,包括前面置零的2位)定义了STUN的消息类型:

 0x0001:捆绑请求
0x0101:捆绑响应
0x0111:捆绑错误响应
0x0002:共享私密请求
0x0102:共享私密响应
0x0112:共享私密错误响应

 

Magic Cookie:32位字段包含固定值0x2112A442

transaction ID,96位的事务ID标识符,用于随机请求和响应,标识同一个式服务的请求和响应。

3.2 STUN BODY

消息头后有0或多个属性

每个属性进行TLV编码:Type,Length,Value

 

0x0014: REALM

0x0015:NONCE

0x0020:XOR-MAPPED-ADDRESS

0x8022:SOFTWARE

0X8023:ALTERNATE-SERVER

0X8024:FINGERPRINT

在ICE中,包含STUN中用到的几个属性,具体如下所示:

0x0024 PRIORITY

0x0025 USE-CANDIDATE

0x8029 ICE-CONTROLLED

0x802A ICE-CONTROLLING

 6 和 7 是最关键的用于验证

3.2.1 MAPPED-ADDRESS/映射地址

  MAPPED-ADDRSS同时也是class STUN的一个属性,之所以还存在也是为了前向兼容。其包含了NAT客户端的反射地址。
  Family位IP类型,即IPV4(0x01)或IPV6(0x02)
  port位端口
  address为32位或128位的IP地址。

3.2.2 XOR-MAPPED-ADDRESS/异或映射地址

  XOR-MAPPED-ADDRESS和MAPPED-ADDRESS基本相同,不同点是反射地址部分经过一次异或(XOR)处理。
  X-port字段:是将NAT的映射端口以小端形式与magic cookie的高16位进行异或,再将结果转换成大段形式而得到的,X-Address也是类似。之所以要经过这么一次转换,是因为在实践中发现很多NAT会修改payload中自身公网IP的32位数据,从而导致NAT打洞失败。

3.2.3 ERROR-CODE/错误码

  ERROR-CODE属性用于error response报文中。其中包含了300-699表示的错误码,以及一个UTF-8格式的文字出错信息(Reason phrase)。

Webrtc Ice协议&Stun 协议
fdsafwagdagadg6576的专栏
12-25 173
时序图: 流程图 OnIceCandidate 代表收集本地 Candidate 的过程,起始于PeerConnection::SetLocalDescription()函数,具体启动代码如下: transport_controller_->MaybeStartGathering();
STUN协议简介
DefiniteGoal的博客
12-07 972
STUN协议组成介绍
stun 协议
qq_43559669的博客
12-20 559
stun存在的意义就是进行nat穿越。 上述这句话是对于stun客户端来说的。 对于客户端来说,客户端首先要发送一个stun消息给到stun服务,stun服务收到这个消息,将发送这个消息的客户端ip地址和端口带回来(过nat为外网,不过为内网地址)。此时客户端即知道自己的外网地址了,当客户端与另外一端进行通讯的时候,通过candiate的交换,就可以将自己的外网地址告诉对方,当对方拿到这个外网地址,就可以进行nat穿越了。 stun对于流媒体服务端的作用是在客户端发送stun请求时候带来用户名和密码,用户名
Go-STUN客户端实现教程
最新发布
gitblog_00229的博客
08-20 227
Go-STUN客户端实现教程 go-stunA go implementation of the STUN client (RFC 3489 and RFC 5389)项目地址:https://gitcode.com/gh_mirrors/gos/go-stun 项目概述 本教程旨在指导您了解和使用位于https://github.com/ccding/go-stun.git 的Go-STUN项...
STUN协议
01-21 656
STUN简介 STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。一旦客户端
P2P通信标准协议(一)之STUN
weixin_33827965的博客
12-12 373
前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则, 当然如果这套程序只有自己在使用是没什么问题的。可是在现实生活中,我们的程序往往还需要和第三方的协议(如SDP,SIP)进行对接,因此使用标准化 的通用规则来进行P2P链接建立是很有必要的。本文就来介绍一下当前主要应用于P2P通信的几个标准协议,主要有STUN/RFC3489,S...
WebRTC-STUN协议详解
码农修仙的博客
04-19 2319
1、STUN协议概述 STUN(Session Traversal Utilities for NAT)NAT会话穿透工具,STUN是一个Client/Server协议,支持请求/响应类型、指示类型两种类型。STUN作为ICE(Interactive Connectivity Establishment,交互式连接建立)解决方案的一种工具使用,STUN协议本身没有穿透等能力,只是为穿透提供反射地址,穿透不成功时,需要使用TURN协议。 1.1 请求/响应类型(request/response) 由客户端给服
nb服务器协议,nb-iot协议详解
weixin_33669473的博客
08-06 5432
设计的优点是都能部署在现在的LTE网络,只需要对基站和核心网的软件进行升级即可,不需要为IoT物联网通讯专门设计并建设一个专门网络,可以大大降低建设成本。与LTE一样,NB-IoT终端在开机并搜索载波(小区)时,会在可能的频率范围内重复PSS/SSS的搜索和检测过程,直至搜索到相应的载波(NB-IoT锚定载波),频率扫描的栅格(raster)大小为100kHz。nb-iot技术在有效地提供深度室内...
P2P技术之STUN、TURN、ICE详解
qq_52703909的博客
03-26 2192
1、内容概述 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet。很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信,而不需要其他公共服务器的中转。由于主机可能位于防火墙或NAT之后,在进行P2P通信之前,我们需要进行检测以确认它们之间能否进行P2P通信以及如何通信。这种技术通常称为NAT穿透(NAT Traversal)。最常见的NAT穿透是基于UDP的技术,如RFC3489中定义的STUN协议STUN,首先在RF
简析STUN协议-好东西分享
12-03
STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。
STUN穿透协议
04-24
STUN协议的全称是Simple Traversal of User Datagram Protocol Through Network Address Translators,主要功能是检测是否位于NAT后面,如果位于NAT后面,经过NAT转换后的地址和端口是什么,另外可以检测NAT的类型
stun协议深入解剖
12-18
stun协议深入解剖
Stun协议RFC5389
07-28
RF5389文件是08年版本的STUB协议,比较3489协议有了重大的发展
STUN 协议实现源码
04-13
按照rfc3489实现STUN协议的客户端和服务端源码,可以做为研究NAT穿透的很好的资料哦!
Stun/Turn协议草稿
fdsafwagdagadg6576的专栏
10-07 293
2 协议消息(协议头)struct,每个域介绍 2.1 stun and turn 协议 1) NAT 的实现分为四大类 2) stun 协议: 协议头示意图 3) turn 协议 4) stun and turn 协议关系 2.2 sdp协议 1) 与http 协议 2) 与sip协议结合 2.2 协议关系: ice 协议使用stun/turn, sdp,http/sip协议 收集candidates模块使用stun/turn。 offer-answer sdp模块,使用sdp协议 传输sd......
stun协议
BZJ的专栏
01-30 563
一、stun协议格式 1、STUN报文头 1)最高的2位必须置零,这可以在当STUN和其他协议复用的时候,用来区分STUN包和其他数据包。 2)STUN Message Type 字段定义了消息的类型(请求/成功响应/失败响应/指示)和消息的主方法。 虽然我们有4个消息类别,但在STUN中只有两种类型的事务,即请求/响应类型和指示类型。响应类型分为成功和出错两种,用来帮助快速处理STUN信息。Message Type字段又可以进一步分解为如下结构: 其中显示的位为从最高有效位M11到最低有效
写文章

热门文章

  • RTCP协议详解(SR、RR、SDES、BYE、APP、NACK、TCC、PLI、SLI、FIR ) 12897
  • STUN协议详解 6640
  • WebRTC 数据安全 5885
  • 笔记:新一代高效视频编码H.265/HEVC原理、标准与实现 3692
  • webRTC 中SDP 3573

分类专栏

  • 音视频 10篇
  • WEBRTC 6篇
  • leetcode 22篇
  • 编解码 7篇
  • go 1篇
  • c++11 6篇
  • cmake 1篇
  • 多线程 2篇
  • 设计模式 15篇
  • MFC 1篇
  • linux 1篇
  • boost 2篇
  • 算法 32篇
  • python 1篇

最新评论

  • 200. 岛屿数量

    流星雨爱编程: 优质好文,作者在阐述每个知识点时,都力求详尽且清晰,使得读者可以轻松理解并掌握。此外,文章中还引用了一些具有代表性的代码片段,这些代码既展示了编程的魅力,也使得读者能够更好地理解相关概念和技巧

  • leetcode 11 盛水最多的容器

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)使用更多的站内链接;(2)增加除了各种控件外,文章正文的字数;(3)使用标准目录。

  • RTCP协议详解(SR、RR、SDES、BYE、APP、NACK、TCC、PLI、SLI、FIR )

    最胖的棒棒: 请教一个问题,在tcc的包里面的base sequence numbe应该是前面码流rtp包的扩展头里面的一系列transport sequence number。但是我用wireshark抓包的时候发现两个值对不上,我可以看到rtp包里面的扩展头在不断增加,但是tcc的包反馈的base sequence numbe和码流里面transport sequence number差距很大。举个例子:序号15013的包是码流包,他的rtp扩展头里面序号是0x028db。序号15014的包是tcc的包,但是base sequence number是0x5e60。我理解tcc的这个包有点延时性,但这个差距真的是太大了。不解~~

  • leetcode 518 零钱兑换

    ctotalk: 不错

  • leetcode 804 唯一摩尔斯密码词

    ctotalk: mark

最新文章

  • 计算时间线段交集
  • 200. 岛屿数量
  • 213. 打家劫舍 II
2024年6篇
2023年13篇
2022年10篇
2021年10篇
2019年30篇
2018年5篇
2016年35篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

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

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