穿越防火墙的奥秘:ICE协议详解

“后”疫情时代,以线上为主的学习、工作、交流、娱乐方式成了常态,这一现象背后是实时音视频技术的不断创新和突破。为了给企业和开发者提供极致的音视频体验,拍乐云技术团队除了采用广布 DC,将服务下沉到最后一公里之外, 还会根据应用场景切换技术方案,如果仅有两个终端参与通信,会选择媒体直连方案以降低服务器开销。现在的电脑和设备通常都位于防火墙之后,无法简单建立直连,于是防火墙穿越技术应运而生。穿越防火墙的技术方案多种多样,本文将详细介绍其中一个框架——ICE协议,帮助大家掌握防火墙穿越的基本流程。

#01
什么是直连?

直连模式也称为 P2P 模式(Peer to Peer 下文称 peer 为终端),而 P2P 模式成功的第一步就是要建立连接。如何让处在各自 NAT[RFC3489]后面的设备建立连接,也就是在系统设计的时候尽量提高 P2P 的连接成功率显得非常重要。接下来我们就是选一种标准协议[RFC 8445] ICE (Interactive Connectivity Establishment)进行分析,一探NAT后的设备是如何尝试 Peer to Peer 通信的。
在这里插入图片描述

(经典系统架构图)
#02

ICE的建连过程

ICE实现NAT穿透的所要完成的核心处理包括候选地址信息的收集,之后对收集到的地址进行排序、配对,然后执行连通性检查。

一个终端有多种候选传输地址(ip地址和端口用于特定传输协议)用以与其他终端进行通信, 它可能包含:

o 直接连接的网络接口上的传输地址(网卡地址)

o NAT公共端的翻译后的传输地址 (Server reflexive 服务反向地址)
o turn 服务分配的传输地址 (Relayed address 服务中继地址)
01

名词解释

Transport Address:包含IP、port和传输协议。
Candidate:除了Transport Address 外还包括类型、优先级、foundation还有Base。

Base:Host candidate 关联一个 Server reflexive candidate 。
在这里插入图片描述

02

候选地址收集

终端必须确定所有的候选的地址。这些地址包括本地网络接口的地址和由它派生的其他所有地址。本地网络地址包括本地网卡地址、VPN 网络地址、MIP 网络地址等。派生地址指的是通过本地地址向 STUN 服务器发送 STUN 请求获得的网络地址,这些地址分为两类,一类是通过 STUN 的绑定得到的地址,称为服务器反向候选地址(Server Reflexive Candidates)或服务器反向地址。另一类是通过 turn 服务中继得到的,称为中继候选地址(Relay Candidates)。

终端通过各个主机候选地址向 STUN server 发送一个 Bind Request 和向 Turn server 发送 Allocate 消息获取额外的服务器反向地址和服务器中继地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值