WebRTC学习之ICE深入理解
ICE(交互式连接建立---Interactive Connectivity Establishment),是一种标准穿透协议。它利用STUN和TURN服务器来帮助端点建立连接。下图显示了ICE的基本步骤:

建立连接的前提是A、B都在线。
其中传输地址是IP地址和端口号的组合。
1.收集候选传输地址
2.在信令通道中交换候选项
3.执行连接检查
4.选择选定的对,并启动媒体
5.发送长连接请求(KeepAlive),任何一端检测到使用中的IP地址发生变化,都重新启动ICE(即返回步骤1)。
针对上面提到的一些过程整理一下概念:
长连接
为了确保NAT映射和过滤规则不在回话期间超时,ICE会不断通过使用中的候选项对发送连接进行检查。这样的话,可以确保,即使媒体暂停或因其他情况没有发送,也会有数据包得到持续发送。
ICE重启
因为IP地址是用来生成正在使用的候选项对的传输地址。所以无论哪一端的ICE检测到传输基地址发生改变,都会触发ICE的事件。此事件会导致改变方的ICE重新执行步骤1来收集候选项,再以SDP提议形式将这些候选项发送给另一端的ICE代理。这会使得对端的ICE也重新执行步骤1,并重复整个过程。
asdadds
WebRTC学习之ICE深入理解的更多相关文章
- WebRTC学习笔记_Demo收集
1. WebRTC学习 1.1 WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源代码中增加了webrtc源代码,放在/external/w ...
- WebRTC学习
1. WebRTC学习 1.1 WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/web ...
- WebRTC学习与DEMO资源一览
一. WebRTC学习 1.1 WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc/ ...
- [转]webrtc学习: 部署stun和turn服务器
[转]webrtc学习: 部署stun和turn服务器 http://www.cnblogs.com/lingdhox/p/4209659.html webrtc的P2P穿透部分是由libjingle ...
- Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)
Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...
- Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)
Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...
- 学习java的阶段性理解(其它语言也一样)
打算从今天开始学java啊,待会滚去找资料了.现在谈一下学习java阶段性的理解.由于现在对java真的啥也不知道啊,不过还是要瞎鸡儿写点自己的看法,以下看法应该也使适用于其它语言: 第一阶段,入门级 ...
- webrtc学习笔记
获取笔记本摄像头视频流 <html> <meta http-equiv="Content-Type" content="text/html; chars ...
- WebRTC学习之九:摄像头的捕捉和显示
较新的WebRTC源代码中已经没有了与VoiceEngine结构相应的VidoeEngine了,取而代之的是MeidaEngine.MediaEngine包括了MediaEngineInterface ...
随机推荐
- kalman filter卡尔曼滤波器- 数学推导和原理理解-----网上讲的比较好的kalman filter和整理、将预测值和观测值融和
= 参考/转自: 1 ---https://blog.csdn.net/u010720661/article/details/63253509 2----http://www.bzarg.com/p/ ...
- Socket 多线程编程
前面一片学习了TCP/IP的基础网络编程,并给出了简单的服务端与客户端通信交互的例子.还介绍了UPC的通信例子. 这次学习TCP/IP的多线程编程.因为涉及到TCP/IP一般都是多线程,服务端会一直监 ...
- Fiddler 手机抓包 手机联网异常解决方案
Fiddler在电脑里已经闲置很久了,之前看是不是服务器返回问题都是连上AS看输出的log,但是终归不如直接抓包来的方便 昨天搞了一下午,手机跟电脑都是连的公司的wifi,手机设置电脑ip和端口的网络 ...
- 在WIN10上安装ESXI-Comstomer (转自技术社区)
I recently required the use of ESXi Customizer to integrate some NIC drivers into my ESXi 5.5 ISO. H ...
- MySQL开发——【数据库、数据表的基本操作】
启动MySQL服务器端 CMD启动MySQL服务器端 net start(启动)|stop(停止)|restart(重启)服务名称(mysql) 连接MySQL服务器端 CMD连接MySQL服务器端 ...
- spring入门——applicationContext与BeanFactory的区别
我们知道从applicationContext容器对象中如何获取Bean了,其实spring框架还有另外一种获取bean的方法:BeanFactory代码如下: BeanFactory factory ...
- centos平台基于snort、barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总
centos平台基于snort.barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总 原创 2016年12月19日 01:20:03 标签: centos / snort ...
- 注解@ResponseBody的作用
@ResponseBody通常是放在方法上,主要是在前端页面异步请求的时候,返回数据使用.直白点说就是加上这个注解之后,return的数据不会解析成返回跳转路径,而是会默认放在 response b ...
- epoll_wait会被系统中断唤醒
今天,当一个程序在epoll_wait阻塞时,用strace跟踪了一下,结果epoll_wait就被EINTR唤醒了,并且返回-1: 所以,当epoll_wait返回-1时,需要判断errno是不是E ...
- 第六次spring会议
昨天所做之事: 我对软件加上了保密功能. 今天所做内容: 我对软件加上了一键解密功能. private void 一键还原ToolStripMenuItem_Click(object sender, ...