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深入理解的更多相关文章

  1. WebRTC学习笔记_Demo收集

    1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源代码中增加了webrtc源代码,放在/external/w ...

  2. WebRTC学习

    1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/web ...

  3. WebRTC学习与DEMO资源一览

    一. WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc/ ...

  4. [转]webrtc学习: 部署stun和turn服务器

    [转]webrtc学习: 部署stun和turn服务器 http://www.cnblogs.com/lingdhox/p/4209659.html webrtc的P2P穿透部分是由libjingle ...

  5. Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)

    Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...

  6. Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)

    Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...

  7. 学习java的阶段性理解(其它语言也一样)

    打算从今天开始学java啊,待会滚去找资料了.现在谈一下学习java阶段性的理解.由于现在对java真的啥也不知道啊,不过还是要瞎鸡儿写点自己的看法,以下看法应该也使适用于其它语言: 第一阶段,入门级 ...

  8. webrtc学习笔记

    获取笔记本摄像头视频流 <html> <meta http-equiv="Content-Type" content="text/html; chars ...

  9. WebRTC学习之九:摄像头的捕捉和显示

    较新的WebRTC源代码中已经没有了与VoiceEngine结构相应的VidoeEngine了,取而代之的是MeidaEngine.MediaEngine包括了MediaEngineInterface ...

随机推荐

  1. django 过滤器,标签

    过滤器: <p>{{ date|date:"Y-m-d" }}</p> {#2018-05-28,date是当前时间#} <p>{{ l|len ...

  2. JavaScript: RegExp + replace

    We can use RegExp + replace to change Specific text into others we want. This picture shows the resu ...

  3. Linux下编译安装FFmpeg

    FFmpeg官网:http://www.ffmpeg.org 官网介绍 FFmpeg is the leading multimedia framework, able to decode, enco ...

  4. Spring再接触 id与name

    事实上 <bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl"> </bean> 也可以 ...

  5. 微信小程序--动画animation

    js: list:[], contentflag:false   this.animation = wx.createAnimation({ duration: 500, timingFunction ...

  6. 二维凸包 Graham扫描算法

    题目链接: http://poj.org/problem?id=1113 求下列点的凸包 求得凸包如下: Graham扫描算法: 找出最左下的点,设为一号点,将其它点对一号点连线,按照与x轴的夹角大小 ...

  7. netty(二) 创建一个netty服务端和客户端

    服务端 NettyServer package com.zw.netty.config; import com.zw.netty.channel.ServerInitializer;import io ...

  8. 转:JMeter监控内存及CPU ——plugin插件监控被测系统资源方法

    JMeter监控内存及CPU ——plugin插件监控被测系统资源方法 jmeter中也可以监控服务器的CPU和内存使用情况,但是需要安装一些插件还需要在被监测服务器上开启服务. 1.需要的插件准备 ...

  9. HDU 5734 Acperience(数学推导)

    Problem Description Deep neural networks (DNN) have shown significant improvements in several applic ...

  10. [leetcode]265. Paint House II粉刷房子(K色可选)

    There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...