一、 什么是ICE

ICE是Interactive Connectivity Establishment的缩写,是提供客户端之间的打洞能力的武器,通过ICE检测后,客户端之间可能存在多个通信链路,由ICE选择出最高效的链路。

通俗点说,需要通信的两个客户端需要只少通过一次交互才能建立连接,它不像一般的客户端与服务端这间的通信,通过HTTP或SOCKET连接之后就可建立连接。

 

二、 ICE关系图

  

 

三、 ICE candidate

每个candidate其实就是一个地址

候选者地址包括:协议,IP,端口和类型

例如

a=candidate:...UDP...192.168.1.240 1816 type host

 

UDP:为使用的协议

192.168.1.204:客户端的地址

1816:客户端端口

host:指Candidate的类型,host代表主机类型

 

四、 Candidate类型

1. 主机候选者

指客户端本地的IP地址和端口就称为主机候选者

 

2. 反射候选者

指客户端在NAT之后,你的客户端经过NAT之后给你映射的地址和端口,称为反射候选者

 

3. 中继候选者

当打洞不成功时,需要通过服务器进行中继,而通过中继服务器的地址和端口,称为中继候选者

 

五、 Candidat关系图

  

 

六、 收集Candidate

1. Host Candidate

指客户端所有本地的IP地址和端口,对应主机候选者

 

2. Reflexive Candidate

指客户端通过STUN/TURN服务器发起请求的IP地址和端口,对应反射候选者

 

3. Relay Candidate

指客户端向中继服务器发起请求的IP地址和端口,对应中继候选者

 

七、 ICE具体做些什么

1. 收集Candidate

2. 对Candidate Pair 排序

3. 连通性检查

大家对ICE有一定的了解了,下一节我们反过来讲解流媒体技术的STUN/TURN服务工作原理。


©著作权归作者所有:来自51CTO博客作者睿江云小普的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Phoenix实战 | Phoenix客户端进化之由重到轻
  2. flex新闻客户端
  3. HBase解读 | 阿里云HBase SQL(Phoenix)服务深度解读
  4. Lindrom 实践 | Spark 对接 Lindorm Phoenix 5.x 轻客户端
  5. 让nginx日志支持json格式
  6. 超详细的TCP、Sokcket和SuperSocket与TCP入门指导
  7. DHCP概述工作原理
  8. python之利用socket模块实现通信,模拟ftp部分功能
  9. 利用frp实现内网穿越

随机推荐

  1. android客户端发送XML数据至服务器
  2. Android客户端GPS定位
  3. android 使用VideoView加载raw目录内视频
  4. Android 入门笔记 之 网址
  5. 写信息的界面
  6. 初步了解Android
  7. Android(安卓)TextView设置图片技巧
  8. Android studio build inished with non-
  9. 分享android技术牛人博客
  10. Android:解决列表滚动时背景色变黑的方法