stun/turn/ice学习笔记
stun基本只是用于client探测NAT之后靠近stun server的外网地址,本身不包含应用数据通信的功能,其底层STUN协议通信多是基于UDP的。多个端点之间相互通过信令通道拿到彼此的NAT外网地址之后,就可以进行直接的P2P通,但可能因路由防火墙的规格太严格导致直接P2P通信不成功。
turn是扩展了stun功能,除了类似stun可是实现NAT外网侧地址探测之外,也实现了基于中继转发实现应用数据通信,其底层通信可以基于UDP或TCP,多基于UDP,(rfc5766也建议基于UDP)。由于turn包含了stun的功能,自然是可以实现类似stun时的直接的P2P通信。类似可能因路由防火墙的原因直接的P2P通信不成功,可以使用turn的中继转发来实现两个端点之间的间接通信。
中继转发模式时,两个端点间的通信始终需要turnserver参与,turnserver对此实施了权限管理。
1,首先每个端点链接到turnserver后,需要通过turnserver的身份认证之后才能进行后续操作,认证方式是向turnserver提供预先分配的realm/用户名/密码等信息。此步骤在 STUN Alloc Request中执行。在响应消息中中会得到turnserver返回的mapped addr和relay addr。
2,第一步的身份认证通过之后,若想向其他的端点发送数据,则需要先向turnserver申请发送许可,此步骤需要提供目标端点的relay地址。此步骤在STUN CreatePermission request中执行。
3,之后即可以STUN Data Indication消息形式向turnserver发送应用数据,目的地址为目标端点的relay地址。为进一步减小包头开销,可以进一步向turnserver申请通道绑定,将当前turn中继会话与turnserver的一个通道相关联,后续和turnserver以ChannelData的方式通信,其包头开销小很多。
以上可见STUN/TURN是已经提供了基本可用的通信机制,实际可优先采用STUN P2P直接的通信方式,但可能不通,继而需要改用TURN中继。因此就需要初始的连通性协商检查过程,而此过程都是类似的,ICE的作用正是可以替我们完成这个探测协商过程,并且还提供了双方身份确认的功能。
在pjnath实现中,ICE具体的数据收发由STUN UDP P2P/TURN中继来完成,每个STUN UDP P2P/TURN数据通道在内部用transport表示,而对应应用层的每一路数据流用component表示,其各自的都分配一个id,后续通过ice会话进行数据收发时都需要按需指定这些id值。
stun/turn/ice学习笔记的更多相关文章
- STUN/TURN/ICE协议在P2P SIP中的应用(一)
1 说明 本文详细描述了基于STUN系列协议实现的P2P SIP电话过程,其中涉及到了SIP信令的交互,P2P的原理,以及STUN.TURN.ICE的协议交互 本文所提到的各个服务 ...
- STUN/TURN/ICE协议在P2P SIP中的应用(二)
1 说明 2 打洞和穿越的概念... 1 3 P2P中的打洞和穿越... 2 4 使用STUN系列 协议穿越的特点... 2 5 STUN/ ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- STUN, TURN, ICE介绍
STUN STUN协议为终端提供一种方式能够获知自己经过NAT映射后的地址,从而替代位于应用层中的私网地址,达到NAT穿透的目的.STUN协议是典型的Client-Server协议,各种具体应用通过嵌 ...
- ICE学习笔记一----运行官方的java版demo程序
建议新手和我一样,从官网下载英文文档,开个有道词典,慢慢啃. 官方文档下载: http://download.csdn.net/detail/xiong_mao_1/6300631 程序代码就不说了, ...
- ICE学习笔记 -- RFC 5245
RFC 5245 ICE 1, offer/answer model 2, ICE Step: 1) 产生候选地址(1.公网 2.NAT反射 3.Relay转发地址) Generate ca ...
- STUN/TURN服务器搭建
目录 STUN/TURN服务器搭建 编译安装 配置使用 添加用户 启动server 测试 开机启动 参考 STUN/TURN服务器搭建 编译安装 编译安装 OpenSSL: sudo apt-get ...
- stun/turn服务器部署
目录: 一.简介 二.安装 三.配置与运行 四.运行检测 五.答疑环节 一.简介 本文通过在服务器上安装coturn这个软件,实现搭建STUN服务器和TURN服务器. coturn 简介:是一个免费的 ...
- webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器 ...
随机推荐
- 如何使用Python读取大文件
背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法. 准备工作 ...
- selenium打开chrome浏览器代码
import os from selenium import webdriver chromedriver = "C:\Program Files (x86)\Google\Chrome\A ...
- BZOJ 1025: [SCOI2009]游戏 [置换群 DP]
传送门 题意:求$n$个数组成的排列变为升序有多少种不同的步数 步数就是循环长度的$lcm$..... 那么就是求$n$划分成一些数几种不同的$lcm$咯 然后我太弱了这种$DP$都想不出来.... ...
- Microsoft Visual Studio 中出现 Windows has triggered a breakpoint in xxx.exe的一个解决方案
今天在用VS发布Release版本的过程中,碰到了一个问题,就是程序编译没有问题,但是在运行过程中出现了 根据经验,此类问题一般都是由于程序开发过程中的代码编写不规范导致内存写覆盖或者是使用了不同版本 ...
- 小甲鱼OD学习第12讲
这次我们的任务是破解这个需要特定的注册码的软件,如下图 我们从字符串入手,输入register,搜索 我们点击 查找下一个,看看有什么有用的字符串,如下图 然后,在下方,我们发现了 Regis ...
- jquary 单选,多选,select 获取和设置值 jquary自定义函数
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="c" ...
- 一个网卡配置多个ip配置实现,centos7系统
仅一个网卡情况下,配置多个ip可以让该设备通过几个ip被访问,或隐藏常用ip,让其他人访问临时ip 一.永久性增加一个IP 方法1: vim /etc/sysconfig/network-script ...
- css 图片增加模糊效果
img{ -webkit-filter: blur(5px); -moz-filter: blur(5px); -ms-filter: blur(5px); filter: blur(5px); }
- C控制语句:循环
#include<stdio.h>int main(void){long num;long sum = 0L;int status; printf("Please enter a ...
- Java经典编程题50道之三十八
编写一个函数:输入n为偶数时,调用函数求1/2+1/4+...+1/n:当输入n为奇数时,调用函数1/1+1/3+...+1/n. public class Example38 { public ...