IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 7┃音视频直播系统之 WebRTC 中的连接的创建、STUN/TURN 以及 NAT 穿越 -> 正文阅读

[网络协议]7┃音视频直播系统之 WebRTC 中的连接的创建、STUN/TURN 以及 NAT 穿越

〝 古人学问遗无力,少壮功夫老始成 〞

随着5G技术的发展,音视频直播领域发生了翻天覆地的变化,尤其是 2011 年 Google 推出 WebRTC 技术后,大大降低了音视频技术的门槛,你再也不必自己去实现回音消除算法了,也不用自己去实现各种音视频的编解码器了,更不必去考虑跨平台的问题了。如果这篇文章能给你带来一点帮助,希望给飞兔小哥哥一键三连,表示支持,谢谢各位小伙伴们。

目录

一、Candidate

二、STUN 协议

三、TURN 协议

四、NAT 打洞 /P2P 穿越

五、ICE

六、完全锥型 NAT

七、IP 限制锥型 NAT

八、端口限制锥型

九、对称型 NAT


一、Candidate

  • 即 ICE Candidate(ICE 候选者)。表示 WebRTC 与远端通信时使用的协议、IP 地址和端口

  • 一般组成包括: 本地 IP 地址、本地端口号、候选者类型,包括 host、srflx 和 relay、优先级、传输协议等等

  • 当 WebRTC 通信双方彼此要进行连接时,每一端都会提供许多候选者,比如你的主机有多块网卡,那么每块网卡的不同端口都是一个候选者

  • WebRTC 会按照上面描述的格式对候选者进行排序,然后按优先级从高到低的顺序进行连通性测试,当连通性测试成功后,通信的双方就建立起了连接

  • 在WebRTC 中,它首先会尝试 NAT 穿越,即尝试端到端直连。如果能够穿越成功,那双方就通过直连的方式传输数据,这是最高效的。但如果 NAT 穿越失败,为了保障通信双方的连通性,WebRTC 会使用中继方式,当然使用这种方式传输效率会低一些

  • 在众多候选者中,host 类型的候选者优先级是最高的。在 WebRTC 中,首先对 host 类型的候选者进行连通性检测,如果它们之间可以互通,则直接建立连接。其实,host 类型之间的连通性检测就是内网之间的连通性检测。WebRTC 就是通过这种方式巧妙地解决了大家认为很困难的问题

  • 同样的道理,如果 host 类型候选者之间无法建立连接,那么 WebRTC 则会尝试次优先级的候选者,即 srflx 类型的候选者。也就是尝试让通信双方直接通过 P2P 进行连接,如果连接成功就使用 P2P 传输数据;如果失败,就最后尝试使用 relay 方式建立连接

  • 如果用代码结构表示,大概可以是如下:

  • host:表示本机候选者

  • srflx:表示内网主机映射的外网的地址和端口

  • relay:表示中继候选者

{
	IP: 127.0.0.1,
	port: 3333,
	type: host/srflx/relay,
	priority: number,
	protocol: UDP/TCP,
	usernameFragment: string
}

二、STUN 协议

  • 如果主机没有公网地址,是无论如何都无法访问公网上的资源的

  • 而一般情况下,主机都只有内网 IP 和端口,那它是如何访问外网资源的呢

  • 在内网的网关上都有 NAT (Net Address Transport) 功能

  • NAT 的作用就是进行内外网的地址转换

  • 这样当你要访问公网上的资源时,NAT 首先会将该主机的内网地址转换成外网地址,然后才会将请求发送给要访问的服务器;服务器处理好后将结果返回给主机的公网地址和端口,再通过 NAT 最终中转给内网的主机

  • 而想让内网主机获得它的外网 IP 地址,就只需要在公网上架设一台服务器,并向这台服务器发个请求即可获得,也就是 STUN 协议,我们只要遵守这个协议就可以拿到自己的公网 IP 了

三、TURN 协议

  • 我们经常说的 relay 服务器或 TURN 服务器它们是同一个意思,都是指中继服务器

  • 而relay 服务是通过 TURN 协议实现的

  • relay 型候选者的优先级与其他类型相比是最低的,但在其他候选者都无法连通的情况下,relay 候选者就成了最好的选择。因为它的连通率是所有候选者中连通率最高的

四、NAT 打洞 /P2P 穿越

  • NAT解决的问题: IPv4 地址不够用的、安全问题

  • 当收集到 Candidate 后,WebRTC 就开始按优先级顺序进行连通性检测了。它首先会判断两台主机是否处于同一个局域网内,如果双方确实是在同一局域网内,那么就直接在它们之间建立一条连接

  • 但如果两台主机不在同一个内网,WebRTC 将尝试NAT 打洞,即 P2P 穿越。在 WebRTC中,NAT 打洞是极其复杂的过程,它首先需要对 NAT 类型做判断,检测出其类型后,才能判断出是否可以打洞成功,只有存在打洞成功的可能性时才会真正尝试打洞

  • WebRTC 将 NAT 分类为 4 种类型:完全锥型 NAT、IP 限制型 NAT、端口限制型 NAT、对称型 NAT

五、ICE

  • ICE 就是包括了 STUN、TURN 协议的一套框架

  • 其实 ICE 就是上面所讲的获取各种类型 Candidate 的过程

  • 就是:在本机收集所有的 host 类型的 Candidate,通过 STUN协议收集 srflx 类型的 Candidate,使用 TURN 协议收集 relay 类型的 Candidate

六、完全锥型 NAT

  • 完全锥型 NAT 的特点是,当 host 主机通过 NAT 访问外网的 B 主机时,就会在 NAT 上打个“洞”,所有知道这个“洞”的主机都可以通过它与内网主机上的侦听程序通信

  • 所谓的“打洞”就是在 NAT 上建立一个内外网的映射表,并且一般会使用UDP 是无连接协议,也就是说只要你发送数据给它,它就能收到

七、IP 限制锥型 NAT

  • IP 限制锥型要比完全锥型 NAT 严格得多

  • 它主要的特点是,host 主机在 NAT 上“打洞”后,NAT 会对穿越洞口的 IP 地址做限制

  • 只有指定的 IP 地址才可以通过,也就是说,只有 host 主机访问过的外网主机才能穿越 NAT

八、端口限制锥型

  • 端口限制锥型比 IP 限制锥型 NAT 更加严格

  • 它主要的特点是,在 NAT 上对打洞时对IP 地址做了限制,还对具体的端口做了限制

?

九、对称型 NAT

  • 对称型 NAT 是所有 NAT 类型中最严格的一种类型

  • 对称型 NAT 对每个连接都使用不同的端口,甚至更换 IP 地址,会建立多个内外网的映射表

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-25 11:44:25  更:2022-05-25 11:44:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:12:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码