中文翻译:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介
2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介
3:pjsip教程(三)之ICE stream transport的使用
原文地址:http://www.pjsip.org/docs/latest/pjnath/docs/html/group__PJNATH__ICE.htm
Introduction to ICE
ICE是提供客户端穿越能力的有力武器,只要在两个客户端之间确实存在一条可以通信的路径,ICE肯定就能找到该路径,并且该路径是两个客户端之间通信路径中最高效的最节省资源的(在两个客户端之间经ICE探测后,可能存在多条路径,而ICE保证从它那里获取的路径是最高效的).
ICE把几个协议结合在一起,在两个客户端之间能提供几条候选路径,这在最大程度上保证了两端通信成功的几率。并且它还提供了在几条通信路径中给出优先顺序的能力,让使用中继(中继的方式代价比较昂贵)的传输方式的优先级降到最低,只有在其他路径都行不通的情况下,才会启用该路径。具体的ICE协商的过程包括以下几个几步:
- 1:候选地址的收集:ICE客户端收集本地所有可能用于通信的地址。所收集的地址类型分3种:主机候选地址(host candidate),这个地址其实就是本地物理网卡的地址;服务器反射候选地址(server reflexive candidate,其实就是在NAT上关于本地ip的映射地址),这个地址通过STUN服务器获取;中转/中继候选地址(relay candidate),这个地址是在使用中继(relay)的传输方式时,在中继服务器(或者称为TURN服务器)上为本地机器所分配的地址。
- 2:候选地址的优先策略:一般情况下,使用中继方式而产生的中继候选地址的优先权最低,因为它的代价最昂贵。
- 3:将本地候选地址编码,把编码后的候选地址传送至对端,双方通过报告/应答的方式进行协商。
- 4:为候选地址配对儿:将本端的地址与对端的地址一一进行配对。此时应该已经通过某种方式得到了对端的候选地址。
- 5:为每对儿地址做连接测试。
- 6:得到结果:由于已经对所有候选地址一一配对,并一一进行连接测试,所以,如果确实存在一个可以通信的路径,ICE肯定会找到他。
Using ICE transport
ICE stream transport 是一个现成可用的对象,可以使用它来进行ICE操作,而且它为应用程序提供了数据发送与接受的接口,而数据收发的路径,正是经ICE协商过后的高效的路径。
Creating custom ICE transport
如果ICE stream transport 还是不能满足您的需求,那么您还可以通过使用本软件包提供的ICE Session以及自己的数据传输策略去实现自己的运输层,ICE stream transport 在这方面为您提供了很好的借鉴。
转载请注明:
名称:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介
作者:大雪先生
中文翻译:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介的更多相关文章
- 中文翻译:pjsip教程(三)之ICE stream transport的使用
1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...
- 《Entity Framework 6 Recipes》中文翻译 ---- 系列教程
为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...
- 《Entity Framework 6 Recipes》中文翻译——第十二章自定义EntityFramework对象(一)
本章的方法探讨一些可以应用于对象和实体框架的流程定制.这些方法涵盖了许多“幕后”的东西,它可以使你的代码更统一,比如通过更关注应用程序核心业务规则执行的细节,应用范围更广泛.我们开始本章的一个方法,告 ...
- 中文翻译:pjsip文档(四)之ICE Session的使用方法
1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...
- 中文翻译:pjsip教程(一)之PJNATH简介
在学习pjsip的过程中,发现只是单单的阅读英文官方文档,对于里边概念的理解还是不够透彻,并且苦于pjsip没有发现全一点的中文版本,所以想尽自己所能为建设和谐社会而贡献一份力量,文中定会有所疏漏,希 ...
- PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程
PS网页设计教程--30个优秀的PS网页设计教程的中文翻译教程 作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作 ...
- Swift中文教程(二)--简单值
原文:Swift中文教程(二)--简单值 Swift使用let关键字声明常量,var关键字声明变量.常量无需在编译时指定,但至少要被赋值一次.也就是说,赋值一次多次使用: var myVariable ...
- JasperReports入门教程(二):中文打印
JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...
- Superset 官方入门教程中文翻译
本文翻译自 Superset 的官方文档:Toturial - Creating your first dashboard 最新版本的 Superset 界面与功能上与文档中提到的会有些许出入,以实际 ...
随机推荐
- 离散数学A
自反性:(都自指)所有的点自己指向自己[<a,a><b,b>]:反自反性:(都不自指)所有的点都绝不自己指向自己:对称性:但凡指,定互指[<a,b>,<b,a ...
- JSP九大内置对象详解
内置对象特点: 1. 由JSP规范提供,不用编写者实例化. 2. 通过Web容器实现和管理 3. 所有JSP页面均可使用 4. ...
- extjs的button控件fireEvent('click')无效问题
extjs的button控件fireEvent('click')无效问题 2012-06-06 16:39 891人阅读 评论(0) 收藏 举报 extjsbuttoncallbackfunction ...
- (转载)WindowsXP上安装和运行神器SqlMap的步骤
在Windows XP上安装和运行SqlMap的步骤…… 1.首先下载SqlMap 点击下载. https://codeload.github.com/sqlmapproject/sqlmap/leg ...
- OpenCL memory object 之 Global memory (1)
本文转载自:http://www.cnblogs.com/mikewolf2002/archive/2011/12/17/2291239.html 这篇日志是学习AMD OpenCL文档时候的总结. ...
- [LeetCode] 42. Trapping Rain Water 解题思路
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- Asp.Net Design Pattern Studynotes -- Part1
Asp.Net Design Pattern Studynotes -- Part1 let's start with an exampleto entry amazing OO world ! le ...
- JSBinding+Bridge:逻辑代码中操作二进制数据
以这2个函数为例 class File { public static byte[] ReadAllBytes(string path); public static void WriteAllByt ...
- 像C++一样写JavaScript
像C++一样写JavaScript C/C++/Java的include或import可以引用第3方文件和包. 这个功能在Html/Js里没有默认的实现. 假设我们有这样一个HTML文件index.h ...
- android81 多线程下载和断电续传
package com.itheima.multithreaddownload; import java.io.BufferedReader; import java.io.File; import ...