Web前端WebRTC 攻略(五) NAT 穿越与 ICE

WebRTC 进行端对端进行实时音视频通讯时,常常一方或者双方都是隐藏在 NAT 之后的内网地址。ICE 则用于寻找一条传输数据通道连接。本文介绍了 NAT 穿越和 ICE 框架的基础知识和主要步骤。

我们知道使用 WebRTC 进行端对端进行实时音视频通讯时,WebRTC 本身是基于点对点(Peer-to-Peer)连接的,最便捷的方式就是通话的双方通过 IP 直连,摆脱原始的直播服务器中转的方式。

如果连接双方都是公网地址,则可以直接访问到对方,从而建立连接。但是在现实的应用场景中,大部分情况下其中一方或者双方都不是公网地址,而是隐藏在 NAT(Network Address Translation,网络地址转换)之后的内网地址。

比如局域网 A 中的 192.168.2.232 和局域网 B 中的 192.168.2.161 之间是不能直接连接通讯的。由于需要连接的个人设备绝大多数都隐藏在各自的内网当中,导致无法直接获取客户端 IP 地址,也无法直接进行 P2P 的音视频通信。

为了解决这个问题,WebTRTC 采用了 ICE 技术框架来实现 NAT 穿越。

1、NAT 网络地址转换

1.1 什么是 NAT

或许你在之前听闻过 IPv4 地址枯竭的报道,IPv4 地址只有 32 位长,理论最多 42.9 亿条。大概在 94 年时候,提出了 NAT( Network Address Translation 网络地址转换)RFC 规范,作为一个临时方案来解决 IPv4 地址枯竭的问题。

这个方案就是把 IP 地址重用,在边缘网络引入 NAT 设备,由它来负责维护本地服务 IP 和端口的映射到公网 IP 和端口。NAT 内部的本地 IP 地址空间可以被许多不同的子网络重用,从而解决地址耗尽的问题。

可是临时方案很快成为了最终方案,成为了互联网基础设施的组成部分。它不仅用来解决 IP 地址枯竭的问题,你能发现路由器、防火墙、代理设备都具备 NAT 功能。

1.2 NAT 类型

关于 NAT 被人们研究总结过,大体两种:锥型和对称型。而锥型又可分细分为三种。

所以归纳起来,总共四种类型:完全锥型、IP 限制锥型、端口限制锥型对称型。

a. 完全锥型

当内网 Host 与外网机器通讯,就会在 NAT 上打洞,这个过程就是指在 NAT 建立内外网映射表,这个表上记录内外网 IP 端口映射关系。外网机器与 P 地址 p 端口的通讯,都会在 NAT 上转发到对应的内网地址与端口,从而实现和内网 host 机器通讯。

b. IP 限制型

IP 限制锥型更加严格,在完全锥形基础上,只允许 Host 访问过的 IP 通过打洞。(映射表多记录了被访问外网的 IP 地址&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值