浏览器中的 WebRTC

WebRTC web 应用程序(通常以 HTML 和 JavaScript 的混合形式编写) 通过标准化的 WebRTC API 与 web 浏览器交互,从而允许它适当地利用和控制实时浏览器功能(参见 图1-3 )。WebRTC web 应用程序还使用 WebRTC 和其他标准化 api 与浏览器进行交互,既可以主动地(例如,查询浏览器功能),也可以被动地(例如,接收浏览器生成的通知)。

因此,WebRTC API 必须提供广泛的功能集,例如连接管理(以对等方式),编码/解码功能协商,选择和控制,媒体控制,防火墙和 NAT 元素遍历等。


网络地址转换(NAT)

网络地址转换器(NAT) (RFC1631)已经标准化,以缓解 IPv4 地址的稀缺和耗尽。

私有本地网络边缘的 NAT 设备负责维护私有本地 IP 和端口元组到一个或多个全局惟一的公共 IP 和端口元组的表映射。这使得 NAT 背后的本地 IP 地址可以在许多不同的网络中重用,从而解决了 IPv4 地址耗尽的问题。


图1-3

图1-3 浏览器中的实时通信

WebRTC API 的设计确实代表了一个具有挑战性的问题。 它设想通过网络连续不断地实时传输数据流,以允许两个浏览器之间进行直接通信,而沿路径没有其他中介。 这显然代表了基于 Web 的通信的革命性方法。

让我们想象一下两个浏览器之间的实时音频和视频通话。 在这种情况下,通信可能涉及两个浏览器之间的直接媒体流,并通过涉及以下实体的复杂交互序列来协商和实例化媒体路径:

  • 调用者浏览器和调用者 JavaScript 应用程序(例如,通过提到的 JavaScript API)
  • 调用者 JavaScript 应用程序和应用程序提供者(通常是 web 服务器)
  • 应用程序提供者和被调用的 JavaScript 应用程序
  • 被调用方 JavaScript 应用程序和被调用方浏览器(同样通过应用程序浏览器 JavaScript API)