首页
学习
活动
专区
圈层
工具
发布

STUN详解

STUN是一个简单的客户端 – 服务器协议。客户端发送一个请求到一台服务器,而服务器返回一个响应。...共享秘密请求服务器返回一个临时的用户名和密码。此用户名和密码用于在随后的绑定请求和绑定响应,身份验证和消息完整性的目的。 STUN客户和STUN服务器之间可能有一个或多个NAT 。...其结果是,由服务器接收该请求的源地址将通过在NAT最接近服务器创建的映射地址。 STUN服务器复制该源IP地址和端口到一个STUN绑定响应,并将其发送回源IP地址和端口 的STUN请求。...一个STUN服务器必须准备接收绑定请求在四个 地址/端口组合:(A1, P1 ),(A2 ,P1) , (A1, P2)和(A2 , P2)。...以下是stun过程解析:​ test1: 客户端发送一个STUN绑定请求到服务器,在属性CHANGE-REQUEST中在不设置任何标志,并且没有 RESPONSE-ADDRESS属性。

2.7K52
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    webrtc连接方法——TURN服务器和STUN服务器作用简介

    WebRTC的TURN服务器是几乎所有WebRTC部署中必不可少的部分,连接WebRTC会话是在多个WebRTC服务器的协助下精心策划的工作,WebRTC中的NAT遍历服务器负责确保正确连接多媒体,这些服务就是...STUN和TURN服务。...B、通过公共IP地址Internet直接连接: 这样就是通过STUN获取的公共IP地址直接连接WebRTC,当设备不在同一个本地网络中时,只能通过公共IP地址来实现相互访问的方式,所以我们的设备不知道公共...IP地址,这样就是STUN服务的用武之地,它就是使设备可以向STUN服务器询问“我的公共IP地址是啥”。...想这种情况下,我们通过TURN服务来做为中间公共服务器路由数据,这需要一定的工作和带宽成本。

    4.1K20

    stun信令「建议收藏」

    STUN协议在RFC上目前经过三种演变,其中RFC3489上定义的STUN和之后的RFC5389和8489上定义的stun在概念上存在明显区分: RFC3489定义:Simple Traversal...stun indiction(RFC5389加入):这个stun信令在设计上就是为了简化传统stun流程中冗余的request-response的逻辑,在初始的stun请求获取server-reflex...3.2 stun信令的组成部分 stun信令由stun头+stun属性两部分组成。其中stun头描述了基本的stun信息。stun属性则是对于这个stun信令的功能拓展。...很多服务器的实现都会同时在这两个属性中将本地地址添加上,进而对终端进行更好的兼容。...,所以交替使用stun request和stun indiction可能是一个更优的选择,不过在webRTC的实现中,一直都使用stun request去刷新绑定关系。

    1.7K20

    STUN 原理理解「建议收藏」

    STUN 原理理解 STUN简介 Simple Traversal of UDP over NATs, NAT的UDP的简单穿越,是一种网络协议。是客户机-服务器的一种协议,由RFC 3489 定义。...譬如,一个软件包可能会包括一个STUN客户端A,这个客户端A会向STUN服务器发送请求,之后,服务器就会向STUN客户端A发送NAT路由器的公网IP地址以及NAT为这个客户端A开通的端口号,这个端口号是允许从别的客户端...所以只有它主动连的服务器才会知道它的端口。...例子: A机器在内网(192.168.0.4) NAT服务器 (210.21.12.140) B机器在公网(210.15.27.166) C机器在公网(210.15.27.140) 如果 A 连接过机器.../5041546.html STUN服务器 https://baike.baidu.com/item/STUN服务器/2173892 STUN详解 https://segmentfault.com/a/

    3.9K21

    webrtc之STUN、TURN、打开摄像头实战

    关于播放器实战学习第二篇,我会在下周分享自己的学习笔记和感悟;今天呢,主要是分享一些webrtc的通话原理:STUN 和TURN ,其中会涉及到NAT穿透原理,以及我会用实战来举例在google浏览器上打开自带的电脑摄像头...,必须能够访问到外网;关于STUN协议的具体解析,大家可以看官网手册: https://datatracker.ietf.org/doc/html/rfc5389 但是有时候呢,STUN不可能每次都可以成功的为需要...在STUN分配公网IP失败后,可以通过TURN服务器请求公网IP地址作为中继地址。...//datatracker.ietf.org/doc/html/rfc5766 这里关于网络的转换,换句专业的语句来讲就是网络协商了:Candidate 最终要实现浏览器之间交换信息,我们还需要信令服务器...关于信令服务器的介绍就没啥好介绍的了,它就是起着交换浏览器两端的媒体协商和网络协商信息。当然信令服务器还有创建房间和离开房间的作用。

    2.8K20

    P2P通信标准协议(一)之STUN

    一种是请求/响应(request/respond)类型,由客户端给服务器发送请求,并等待服务器返回响应;另一种是指示类型(indication transaction),由服务器或者客户端发送指示,另一方不产生响应...420:未知属性(Unknown Attribute),服务器收到一个STUN包包含一个强制理解的属性但是它不会理解。服务器必须将不认识的属性放在错误响应的UNKNOWN-ATTRIBUTE属性中。...500:服务器错误(Server Error),服务器遇到临时错误,客户端应该再次尝试。...STUN的使用者必须指定其使用的传输协议,以及终端确定接收端IP地址和端口的方式,比如通过基于DNS的方法来确定服务器的IP和端口。...服务器端也应该加上指定方法所需要的属性信息,另外协议建议服务器返回时也加上SOFTWARE属性。 对于Binding方法,除非特别指明,一般不要求进行额外的检查。

    2.7K20

    WebRTC中的信令和内网穿透技术 STUN TURN

    如果这个方法失败(表示此时设备处于NAT环境下),ICE使用STUN服务器获取外部地址。如果使用STUN也无法连接,则通过TURN中继服务器进行路由。...换句话说: STUN服务器用于获取外部网络地址。 如果直连失败,TURN服务器将用于中继流量。 每个TURN服务器都支持STUN:TURN服务器是内置了中继功能的STUN服务器。...设备拿到这个地址把这个地址发送给需要建立直接联系的其他设备 STUN服务器对计算性能和存储要求都不太高,因此相对低规格的STUN服务器可以处理大量请求。...换句话说,TURN服务器需要更强大。 完整的交互过程: STUN, TURN 和信令图 此图显示TURN正在运行:单纯使用STUN未成功连接,因此每个端点都使用TURN服务器进行中继。...部署STUN和TURN服务器 为了进行测试,Google运行appr.tc使用的是公共STUN服务器stun.l.google.com:19302。

    8.2K80

    飞牛nas通过lucky进行stun穿透实现公网访问

    这是一整个系列,主要是针对家庭nas没有公网的情况下,通过stun穿透获取公网+端口,从而实现公网ipv4和ipv6都能访问的nas服务的教程。lucky简介:一款由个人开发者开发的网络工具。...lucky里开启stun穿透的原理stun(SessionTraversalUtilitiesforNAT)穿透原理:通过公网stun服务器获取NAT分配的公网映射地址,再通过打洞建立NAT转发表项,实现...stun穿透配置前提网络配置条件网络环境很关键一定要是要全锥型即以上,也就是nat2以上。...你再用配置stun穿透添加一条穿透规则,就按我截图列的,这个最简单的一个实现。简单说下这里的原理,这里是将内部的端口转发到穿透的本地端口,本地端口再转发到公网端口。...问题:获取公网的ip和端口会变如果你有公网ip,就可使用动态公网ip+固定端口,不用折腾上面stun。stun穿透获取到公网ip和端口,和纯公网ip比较就是端口也会阶段性变。

    3.9K01

    关于webrtc peer to server 为什么还需要使用stun服务

    本文作者:IMWeb jaychen 原文出处:IMWeb社区 未经同意,禁止转载 关于webrtc peer to server 为什么还需要使用stun服务 理论上是可以抛弃stun server...3) 各个peer收到对应的ice candidate后,排序后向各个candidate发起stun请求,用stun协议进行连通性测试,通过后择优。...此时若没指明ice的stun server时,则默认选择stun.l.google.com作为stun server。此时国内由于Google被墙,收集到的candidate只是内网的ip。...2,在1不部署自己stun server,无法获取到client的public ip传给server。...因此去除stun的成本可能比单纯部署stun服务还高,且还有可能会有兼容性问题,对建立连接的成功率没帮助。

    2.6K111

    一个NAT在线检测工具

    基本思路我们可以通过以下方式实现该工具:客户端会向 STUN 服务器发送请求。STUN 服务器会返回公共 IP 地址和端口。根据返回的公共地址和端口与私有地址和端口的映射关系,推测 NAT 类型。...detect_nat_type()php512 Bytes© 菜鸟-创作你的创作代码解释:stun.get_ip_info():该方法会从 STUN 服务器获取 NAT 类型、公共 IP 地址和端口。...STUN 服务器选择STUN 类型检测依赖于 STUN 服务器来获取外部信息。pystun3 库默认使用的是 stun.l.google.com:19302 作为 STUN 服务器。...如果你需要使用其他 STUN 服务器,可以通过指定服务器地址来进行更改:nat_type, external_ip, external_port = stun.get_ip_info(server=("...你可以根据这个基础实现扩展和优化 NAT 检测工具,比如增加更详细的 NAT 类型分析、支持更多 STUN 服务器、提供更好的 UI 等。如果你有其他需求或问题,随时提问!

    8.4K10

    Webrtc介绍

    前言 点对点的流程 多方通讯 WebRTC多方通信的架构 Mesh方案 同一个房间支持4-6人 MCU方案 适合多人视频会议,对服务器压力较大 SFU方案 服务器只做转发不做音视频混流 适合1对多 stun.../turn服务器 服务端 coturn是一个stun和turn服务端 npm install coturn turnserver 找到配置文件 find /usr -name turnserver.conf...的时候不需要输入账号密码,只需要输入第一行,以stun:开头 stun:49.4.27.42:3478 需要输入turn地址,以turn:开头,以及账号密码 turn:49.4.27.42:3478...客户端 https://www.npmjs.com/package/stun npm i stun 测试 使用谷歌的stun服务器 const stun = require('stun'); async...function getIp() { const res = await stun.request('stun.l.google.com:19302'); console.log('your

    2K20
    领券