WebRTC 之ICE浅谈

本文介绍了ICE(交互式连通建立方式),一种基于offer/answer模式解决NAT穿越的协议集合。它结合STUN和TURN协议,使客户端无需考虑网络位置和NAT类型即可动态发现最优传输路径。详细讲解了STUN的升级版RFC5389、TURN协议以及ICE的角色、过程、状态、保活和角色冲突解决策略。
摘要由CSDN通过智能技术生成

前言

ICE全称Interactive Connectivity Establishment:交互式连通建立方式。

ICE参照RFC5245建议实现,是一组基于offer/answer模式解决NAT穿越的协议集合。
它综合利用现有的STUN,TURN等协议,以更有效的方式来建立会话。

客户端侧无需关心所处网络的位置以及NAT类型,并且能够动态的发现最优的传输路径。

Classic STUN(RFC3489)的劣势:

Classic STUN 有着诸多局限性,例如:

  1. 不能确定获得的公网映射地址能否用于P2P通信
  2. 没有加密方法
  3. 不支持TCP穿越
  4. 不支持对称型NAT的穿越
  5. 不支持IPV6

STUN(RFC5389)协议

RFC5389是RFC3489的升级版

  1. 支持UDP/TCP/TLS协议
  2. 支持安全认证

 

ICE利用STUN(RFC5389) Binding Request和Response,来获取公网映射地址和进行连通性检查。同时扩展了STUN的相关属性:

  1. PRIORITY:在计算candidate pair优先级中使用
  2. USE-CANDIDATE:ICE提名时使用
  3. tie-breaker:在角色冲突时使用

TURN协议

ICE使用TURN(RFC 5766)协议作为STUN的辅助,在点对点穿越失败的情况下,借助于TURN服务的转发功能,来实现互通。端口与STUN保持一致

 

TURN消息都遵循 STUN 的消息格式,除了ChannelData消息。

 

  1. 支持UDP/TCP/TLS协议,适用于UDP被限制的网络。
  2. 支持IPV6。

 

TURN的流程:

  1. 创建Allocation

client 使用allocation transaction创建relay 端口,并在allocation的响应中回复给client。

当allocation创建后需要使用refresh request来保活,默认lifetime为10分钟。

 

  1. 创建Permission

由allocation创建Permission,每个Permission 由 IP 地址 和lifetime组成。

有两种方法来创建和刷新Permission

  1. CreatePermission
  2. ChannelBind

 

  1. 收发数据:
  1. CreatePermission使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值