linphone相关ice概念

来源:互联网 发布:java 异步网络请求 编辑:程序博客网 时间:2024/05/16 08:55



ICE(互动式建立连接)试着寻找最佳路线去建立连接方式,它会并行的寻找所有的可能性,然后选择最有效的可行方式,它首先尝试用设备系统或网卡获取到的主机地址去连接,如果这个失败了(设备在NAT后就会),ICE会从STUN服务器获取外部地址进行连接,如果这个也失败了,就用TURN中转服务器做通讯。

1 首先说下实现NAT穿越的几种方式:
(1) 针对客户端的解决方案:STUN、TURN、ICE。
(2) 路由边界解决方案:应用层网关ALG、通用即插即用uPNP、中间盒通信MIDCOM。
(3) 服务器端解决方案:B2BUA、服务端RTP中继、会话边界控制SBC、FULL-PROXY、隧道技术。
(4) 还有RSIP。


2 如何区分对称和非对称NAT:
网关设备在实现NAT时,对于内网某主机的若干UDP请求,网关设备对应地在外网上所建立的 UDP端口数量
对称NAT是一个请求对应一个端口
非对称NAT是多个请求对应一个端口

3 ICE的协商过程:
(1) 候选地址的收集:ICE客户端收集本地所有可能用于通讯的地址,所收集的地址分为3类:
(a) 主机候选地址(Host Candidate):本地物理网卡的地址。
(b) 服务器反射地址(Server Reflexive Candidate就是NAT上关于本地IP映射的地址),这个地址通过STUN服务器来获取。
(c) 中转/中继候选地址(Relay Candidate)这个地址就是使用中继(Relay)的传输方式时,在中继服务器(或者称为TURN服务器)上为本机所分配的地址。

(2) 候选地址的优先策略:一般情况下使用中继方式产生的中继候选地址的优先权最低,因为它的代价最昂贵。
(3) 本地候选地址编码:把编码来的地址传至对端,双方通过报告/应答的方式进行协商。
(4) 候选地址配对:将本端的地址与对端的地址一一进行配对,此时应该通过某种方式的得到了对端的候选地址。
(5) 每对地址做连接测试。
(6) 得到结果:由于已经对所有的候选地址一一进行配置并一一进行连接测试,所以存在一个可以通信的路径,ICE肯定会得到它。

4 ICE 状态

描述ICE(交互式连通建立方式ICE(Interactive Connectivity Establishment))的状态
 
枚举常量:
LinphoneIceStateNotActivated     0          在这个通话或者数据流上ICE没有激活
LinphoneIceStateFailed               1         ICE处理失败
LinphoneIceStateInProgress       2          ICE正在处理
LinphoneIceStateHostConnection     3          ICE已经和一个远程主机建立了连接
LinphoneIceStateReflexiveConnection   4          ICE已经通过一个或者多个NAT和远程主机建立连接
LinphoneIceStateRelayConnection       5          ICE已经通过一个中继器和远程主机建立连接







原创粉丝点击