webrtc中ICE介绍

本文详细介绍了WebRTC中的ICE(交互式连接建立)流程,从获取地址、地址交换、连通性测试到选择最佳连接。ICE包含STUN和TURN协议,用于解决NAT穿越问题。通过源码分析,解释了candidate的生成、排序和连接状态的维护,展示了如何建立和保持连接的连通性。
摘要由CSDN通过智能技术生成

原因:根据源码进行分析,在此记录一下webrtc中ice连接流程。

概述:Agent首先获取需要的地址,然后地址进行交换,随后进行连通性测试,最终选择一个最合理的连接用于数据传输。

ICE:interactive connectivity establishment交互式连接建立。是一组基于offer/answer模式解决NAT穿越的协议集合。在此简单介绍一下NAT,NAT(Network Address Translation网络地址转换)。目前NAT类型主要分为完全锥型,地址限制锥型,端口限制锥型,对称型,每种类型数据交互模式也不同,需要记住对称型NAT会存在打洞失败的问题。其中ICE主要包含STUN+TURN等协议,TURN协议的主要作用就是用于NAT打洞失败后,利用Relay进行转发。

接下来进行源码分析:

1:首先agent获取地址,其中地址包括host address,srvflx address,relay address 三种。host地址就是我们本地的地址,可以用于局域网内angent之间通信。srvflx address为经过NAT进行反射后的对应的公网地址,通过该地址进行agent之间进行通信。relay address则是经过TURN服务器分配的代理地址,用于进行转发使用。其中使用的优先级为host > srvflx > relay。

通过创建UDPPort,在创建过程中就会进行本地host信息的采集,并按照candidate进行组合。并通过sigslot进行数据回调。

PeerConnection::SetLocalDescription
WebRtcSession::MayStartGathering
P2PTransportChannel::MaybeSta
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值