WebRTC 基础:WebRTC 如何以及为什么使用你的浏览器地址

原作者:Tsahi Levent-Levi
原文地址:

这里写图片描述

最近我被要求写一些以WebRTC 基础为主题的文章,解释一下它是如何工作的。这里是其中一篇。

《纽约时报》使用WebRTC搜集用户IP地址引发了暴怒。广告的欺诈检测机制使用WebRTC来寻找本地地址,以决定用户是真实的还是机器。作为一个基于广告费用的猫捉老鼠游戏,意味着继续使用兵器库中的每件武器。(Being a cat and mouse game over ad money means this will continue with every piece of arsenal both sides have at their disposal) WebRTC 在里面发挥了有趣的角色。现在问题来了 —— 为什么WebRTC需要浏览器的IP地址?它用IP地址来做什么?

为了回答这个问题,我们首先需要明确 web 通常是如何工作的 (这要先于WebRTC)

这里写图片描述

上面这张图解释了整个过程。Web 服务器位于云端的某个地方。你通过它的 IP 地址来访问它。但通常是通过域名访问它,并且通过域名得到它的 IP 地址。然后浏览器发送请求到服务器。

现在假定这是不同的社交网络,一个用户想要和另外一个用户互动。用浏览器来实现这个互动的唯一方式是设定一个所有消息的服务器代理 —— 任何从A到B的消息都会经过web服务器。即便web服务器并不想储存这些消息或者了解它们。

WebRTC allows working differently. 它使用端到端技术,即所谓的P2P。

这里写图片描述

上面这张图对于VoIP开发者来说并不陌生,但是有一个非常重要的区别:在引入WebRTC之前,web是如何工作的?两个浏览器之间的直接连线吗?这是第一次web浏览器可以使用HTML和另外一个浏览器直接通信,而不用经过web服务器。

这就是导致需要IP地址的差异的原因。(This is what makes all the difference in the need for IP addresses.)

当你和一个web服务器通信时,你的浏览器负责初始化通信。它发送请求到服务器,然后通过你的浏览器创建的相同的路径进行响应。所以不论哪种情况你的浏览器都没有必要宣布它的IP地址。但是,当一个浏览器需要向另一个浏览器发送信息时 —— 如果没有 IP 地址,要如何实现?

所以,浏览器之间需要交换IP地址。图示中的web服务器在浏览器间传递信息,这些信息包括SDP,包含了未来在浏览器之间直接进行数据交换需要使用到的IP地址。

为什么需要P2P?仅通过服务器来实现不可以吗?

当然我们可以通过服务器来实现。事实上,大量的使用案例都是用服务器来对各种不同的需求进行终结 —— 像记录会话,多方或者连接到其他网络这些不得不使用服务器的场合。

但是在很多例子中,你可能会想要跳过服务器部分:

  • 音频和视频需要很大的带宽,将这个负担放到服务器上意味着服务开销增加
  • 音频和视频需要消耗更多的CPU功耗,将这个负担放到服务器上意味着服务开销增加
  • 通过服务器传输音频和视频意味着更大延迟以及更多丢包可能,从而导致媒体质量下降。
  • 隐私顾虑,当我们通过服务器发送媒体时,信息应该是私密的

所以我们希望媒体或者消息通过端到端而不是服务器进行传输。基于此我们考虑使用WebRTC,但是需要在浏览器之间交换IP地址,来使得它可以运行。

现在,这个交换或许并不总需要翻译成两个web浏览器的直接通信 —— 我们还是需要根据消息或者媒体进行终结。如果你想了解更多,请访问:the introduction to NATs and Firewalls on webrtcHacks

展开阅读全文

没有更多推荐了,返回首页