当前位置: 首页 > news >正文

做网站名词教育培训机构有哪些

做网站名词,教育培训机构有哪些,网站开发前端就业前景,公众号网页怎么制作协议简介 ICE(Interactive Connectivity Establishment,交互式连接建立)是一种 NAT穿透协议,在 WebRTC、VoIP 和视频会议等实时通信场景中被广泛使用。它的主要目标是解决由于 NAT(网络地址转换)和防火墙带…

协议简介

ICE(Interactive Connectivity Establishment,交互式连接建立)是一种 NAT穿透协议,在 WebRTC、VoIP 和视频会议等实时通信场景中被广泛使用。它的主要目标是解决由于 NAT(网络地址转换)和防火墙带来的连接问题,使通信双方能够建立可靠的端到端连接。

广泛用于:

  • WebRTC(浏览器实时通信)
  • VoIP(语音通话)
  • 视频会议系统
  • P2P 文件传输系统

其核心思想是:从多个路径中自动发现一条可用路径,并建立连接

核心目标

  • 发现并测试连接路径:通过不同网络路径和地址尝试建立连接。
  • NAT穿透:穿越 NAT 和防火墙建立点对点连接。
  • 选择最佳连接路径:根据连通性检查的结果选择延迟最低、可用性最好的候选地址对。
  • 必要时使用 TURN 进行中继

基本概念

Candidate(候选地址)

ICE 会收集本地、映射和中继地址作为候选:

类型描述优先级是否穿透
Host Candidate本地地址(如 192.168.x.x)
Server Reflexive Candidate使用 STUN 获取的公网映射地址
Peer Reflexive Candidate连通性检查动态发现的对端地址中等偏高
Relay CandidateTURN 分配的地址,中继传输是,最稳定

STUN(Session Traversal Utilities for NAT)

  • 用于查询 NAT 映射后的公网地址,获取 Server Reflexive Candidate。
  • 提供最轻量级的 NAT 穿透方式。

TURN(Traversal Using Relays around NAT)

  • 当 STUN 穿透失败时,TURN 中继服务器作为数据转发中介。
  • 成本高,延迟大,但可靠性高。

ICE Agent

  • 每个通信端都运行一个 ICE Agent,它负责候选地址的收集、连通性检查、优先级比较、协商等工作。

工作流程

步骤 1:候选地址收集(Gathering)

每个通信端收集自己的候选地址,包括:

  • 本地地址(Host)
  • STUN服务器反射地址(Server Reflexive)
  • TURN中继地址(Relay)

步骤 2:交换候选地址(Candidate Exchange)

  • 使用信令协议(如 SDP,通常通过 SIP、WebRTC 的信令通道)交换候选地址。

步骤 3:连通性检查(Connectivity Checks)

  • 使用 STUN 消息对候选地址对(candidate pair)进行测试,看是否能成功通信。
  • 成功的连接对会被 ICE 标记为可用。

步骤 4:选择优选连接路径

  • 每对候选地址都有优先级(由 ICE 算法计算得出)。
  • ICE 会选择具有最高优先级且可达的候选对作为最终连接路径。

步骤 5:建立连接(Nomination)

  • 确认并锁定最终使用的候选对。
  • 对于双向通信(例如 WebRTC 的数据通道),双方都要确认连接对。

优先级与候选对选择

ICE 候选优先级受以下因素影响:

  • 地址类型优先级:Host > Server Reflexive > Relay
  • 网络接口类型:有线 > 无线
  • 类型偏好(type preference)
  • 本地优先级(local preference)

单个候选优先级

priority = (2^24) * type preference +(2^8)  * local preference +256 - component ID
  • Type Preference:Host > Reflexive > Relay
  • Local Preference:用于多网卡排序
  • Component ID:RTP/RTCP 区分

候选对优先级(candidate pair)

pair_priority = 2^32 * min(local_priority, remote_priority) + 2 * max(...) + (local > remote ? 1 : 0)

WebRTC 中 ICE 实现

整体架构

WebRTC 使用 ICE 协议结合 STUNTURN,在浏览器内部由 ICE Agent 实现,流程如下:

浏览器 A                      信令通道                    浏览器 B
────────────► Gather candidates ◄────────────
─────────────► Exchange SDP (包含 candidates) ◄─────────────
──────────────► Connectivity checks (STUN) ◄───────────────
───────────────► Nomination and Selection ◄───────────────
───────────────► 建立数据通道(DTLS + SRTP)◄──────────────

ICE 流程详解(WebRTC 版本)

步骤 1:候选地址收集(ICE Gathering)

浏览器调用 WebRTC API(如 RTCPeerConnection)时:

  • 浏览器会自动:
    • 检查本地网络接口,生成 Host 候选地址
    • 使用配置的 STUN 服务器获取 Server Reflexive 地址
    • 使用配置的 TURN 服务器申请 Relay 候选地址
const pc = new RTCPeerConnection({iceServers: [{ urls: "stun:stun.l.google.com:19302" },{ urls: "turn:your.turn.server", username: "...", credential: "..." }]
});

步骤 2:信令交换(SDP 内部包含候选地址)

通过 createOffer() 生成包含候选的 SDP,交换给对方。

const offer = await pc.createOffer();
await pc.setLocalDescription(offer);// 将 offer.sdp 通过信令(如 WebSocket)发送给对端

对端通过 setRemoteDescription() 接收 SDP 并回传 answer。

步骤 3:候选地址交换(Trickle ICE)

候选地址并不是一次性全部发送,而是逐步收集并发送(trickle ICE)

  • onicecandidate 事件触发时,每收集到一个 candidate 就发送给对端;
  • 对端通过 addIceCandidate() 添加该地址。
// 接收远端的 candidate
pc.addIceCandidate(new RTCIceCandidate(remoteCandidate));

步骤 4:连通性检查(STUN 交叉测试)

  • 双方根据候选地址对进行连通性检查(connectivity check)
  • 使用 STUN Binding Request 消息进行握手;
  • 浏览器使用 STUN over UDP/TCP 判断路径可用性;
  • 若某对候选可通信,则标记为成功。

步骤 5:候选优选(Nomination)

  • 每个候选对被赋予优先级;
  • 浏览器选择最优的一对进行“提名”(nomination);
  • 一旦确认,浏览器锁定该候选对用于媒体通信。

步骤 6:连接建立并切换至 DTLS/SRTP

ICE 建立连接后,WebRTC 进入安全协商阶段:

  • 使用 DTLS(Datagram TLS)建立安全数据通道;
  • 使用 SRTP 加密媒体流;
  • 数据通道使用 SCTP over DTLS。

候选地址优先级逻辑(WebRTC)

WebRTC 默认优先选择:

  1. Host(最快,最原始);
  2. Reflexive(可 NAT 穿透);
  3. Relay(TURN,中继,最慢但最稳定);

每个候选地址有一个类型优先级(type preference)和本地优先级(local preference)组成:

priority = (2^24) * typePref + (2^8) * localPref + (2^0) * componentId

WebRTC 默认使用此策略排序所有候选对并逐个测试。

ICE 状态机(WebRTC)

可以监听 ICE 状态变化:

pc.oniceconnectionstatechange = () => {console.log('ICE 状态:', pc.iceConnectionState);
};

状态可能值包括:

  • new:未开始
  • checking:进行连通性检查
  • connected:至少有一个连接建立
  • completed:所有连接建立完毕(非 Trickle)
  • disconnected:网络临时中断
  • failed:连接失败
  • closed:连接已关闭

总结

步骤关键点
候选地址收集Host、STUN(Reflexive)、TURN(Relay)
候选交换通过 SDP + trickle ICE
连通性检查STUN 探测路径可用性
优选与提名基于优先级选最优地址对
连接建立最终选中路径,建立 DTLS/SRTP

相关协议标准

协议说明
RFC 8445ICE 规范(最新)
RFC 5245旧版 ICE 标准
RFC 5389STUN 协议标准
RFC 5766TURN 协议标准
RFC 7589TURN over TCP

优缺点

优点缺点
适应多种网络环境,穿透强实现复杂,调试难
自动化建立连接,提升体验TURN 中继性能和成本问题
标准成熟,兼容性好STUN、TURN 可用性影响大
http://www.hkea.cn/news/794388/

相关文章:

  • 如何网站开发1688网站
  • 丽水专业网站建设价格青岛网站优化
  • 网站开发专业培训学校百度推广登录官网入口
  • 贵阳做网站公司网站热度查询
  • 做课件最好的素材网站考拉seo
  • 网站建设玖首选金手指seo网站优化收藏
  • 台州卓远做网站好不好广州seo教程
  • dz网站数据备份bt磁力猪
  • github 可以做网站吗360seo
  • 杭州 企业门户网站建设爱链
  • dj那个网站做的好长沙公司网络营销推广
  • 设计师培训招生视频黑帽seo联系方式
  • 做网上贸易哪个网站好西宁网站seo
  • 电子烟网站建设杯子软文营销300字
  • 广州企业网站制作怎么做营销推广
  • 网站建设服务器在香港郑州网站建设专业乐云seo
  • 河北建设工程交易信息网海口关键词优化报价
  • 全国网站建设公司有多少家微信朋友圈广告投放收费标准
  • 免费做网站公司黑帽seo排名技术
  • apk连接wordpress上海seo
  • 企业建网站租用服务器好还是买一个好石家庄网站关键词推广
  • wordpress文件解析外贸网站优化
  • 建设工程竣工备案网站百度保障中心人工电话
  • 韶关城乡建设部网站首页营销型网站建设策划书
  • 建设银行手机银行下载官方网站谷歌浏览器网页版入口在哪里
  • 网站建设 好域名注册信息
  • 公众号微网站建设认证哪个推广网站好
  • 爬取1024上传到wordpress蔡甸seo排名公司
  • 流感吃什么药更好seo的方法
  • 营销型网站建设市场seo黑帽技术有哪些