请点击上方蓝字TonyBai订阅公众号!

2023年下旬,OpenAI与Livekit的合作[1]在科技圈引起了不小的轰动。这两家公司联手,通过WebRTC技术和大型语言模型(LLM)的结合,使AI模型具有了看、听和说话的能力[2]。这一举动不仅彰显了WebRTC在现代通信技术中的重要地位,也为我们揭示了AI与实时通信融合的无限可能。WebRTC技术在大流行后再一次进入技术人的视野,恰好在我们今年打造的产品中,WebRTC也是技术栈的核心。
在去年9月份,我写了一篇WebRTC入门科普的文章:使用Go和WebRTC data channel实现端到端实时通信,在那篇文章中,我对WebRTC技术做了一些概述说明,并通过一个基于Go语言的实例,展示了如何实现端到端的实时通信。大家可以通过那篇文章了解WebRTC技术的基础概念和核心架构。
WebRTC端到端实时通信的效果主要取决于两个重要因素,一个通信质量,一个是音视频编解码质量。对于入门类文章来说,改进通信质量或音视频编解码质量还为时尚早,我们亟需了解的是其背后的原理。
在这篇文章以及后续的几篇文章中,我们先来关注一下“WebRTC网络通信”。我们会先了解一下WebRTC网络架构,然后对WebRTC中的难点,诸如NAT打洞、基于信令与ICE的建连等做深入分析。
在这篇文章中,我们先来学习NAT的工作原理,探讨不同类型的NAT网络行为是如何影响点对点通信的,为后续理解WebRTC的NAT打洞(也称为NAT穿透)和端到端建连做准备。
1. WebRTC网络架构
我们知道WebRTC(Web Real-Time Communication)是一种支持网页浏览器/应用进行端到端实时语音对话或视频对话的技术,其中支持端到端建立连接和后续数据传输的网络架构是十分重要的,这也是理解WebRTC技术栈的一个重点。下面是WebRTC网络架构图的示意图:

这个架构包含以下主要组件:
浏览器/App:这是进行WebRTC的端(Peer),可以是浏览器,也可以是App。WebRTC API在浏览器中实现,使得web应用能够直接访问媒体设备和建立点对点连接。App也可以利用WebRTC的实现(比如Pion[4])与对端进行RTC通信。
信令服务器(Signaling Server):虽然不是WebRTC标准的一部分,但对于WebRTC建立连接至关重要,任何non-trivial的基于WebRTC的系统都会有专属的信令服务器,它会帮助通信双方交换会话描述协议(SDP)信息和ICE候选地址。这个在使用Go和WebRTC data channel实现端到端实时通信[5]一文中介绍过,在后续的文章中还会有系统说明。
STUN服务器(Session Traversal Utilities for NAT):该服务器可以帮助客户端发现自己的公网IP地址和端口,这个服务器是NAT打洞时所必须的。
TURN服务器(Traversal Using Relays around NAT):当通过常规方式点对点连接失败时(通常是NAT打洞失败),可以使用TURN服务器作为媒体数据的中继服务器使用。两端发送的数据都会要通过TURN的中继才能转发给对端。
ICE框架(Interactive Connectivity Establishment):综合使用各种NAT打洞技术来协助两端建立连接,这个我们会在后面文章中系统说明。
我们看到这个架构略有些复杂,但该架构允许WebRTC应用在复杂的网络环境中建立直接的点对点连接,即使客户端位于NAT或防火墙后面。
2. 网络世界的真相:我们都在NAT后面
在理想的网络世界中,每个设备都有一个唯一的公网IP地址,可以直接相互连接和通信。这种理想状态下,网络是完全开放和对等的,没有任何障碍阻止设备之间的直接交互。
但现实情况却很骨感,出于IPv4地址空间的限制(IPv4地址的数量不够了)、网络管理以及网络安全的考虑,大多数设备都隐藏在NAT(网络地址转换)后面。
NAT(网络地址转换)技术于1994年由Egevang等人在RFC 1631[6]中提出,旨在作为缓解IPv4地址不足问题的临时技术方案。通过将私有IP地址和端口映射到公共IP地址和端口,NAT使得在私有网络中的设备可以使用公共地址(共享一个或多个)访问互联网。

这种技术的出现大大缓解了IPv4地址的紧张状况,并成为当时乃至现在(IPv6的推广与使用未及预期)网络地址管理的重要手段。不过,NAT技术的广泛应用也意味着大部分设备只有私网IP,无法从外网直接访问,这一定程度上限制了端到端的直接通信。另外,由于不同类型的NAT行为有所不同,进一步增加了端到端网络连接的复杂性。
注:私网IP地址是指在局域网(LAN)中使用的IP地址,这些地址不能在公共互联网(公网)中被路由。私网IP地址主要用于内部网络中设备之间的通信,通常用于家庭、企业或组织的网络。根据IETF的标准,私网IP地址的范围包括(以CIDR(无类域间路由)格式表示):10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。
于是便有了NAT打洞技术(N

最低0.47元/天 解锁文章
1126

被折叠的 条评论
为什么被折叠?



