WebRTC网络基础 九、第一节 WebRTC网络传输基本知识

今天我们来介绍WebRTC传输相关的基本知识,那么在介绍这些基础知识之前 ,我们首先要清楚使用WebRTC的目的以及解决的根本问题是什么?

那么WebRTC首先要解决的是两个浏览器之间如何实现音视频的实时互动,对于底层来说就是如何实现两个端点之间高效的网络传输,为了解决这个问题WebRTC引入了很多的传输协议,下面我们就来介绍一下。

NAT (Network Address Translator)

下面我们以传统的邮件作为例子,给大家说明NAT是什么?比如A和B两个人要发信,那B告诉A它在某个楼的某层时,这个时候A 可以给B发消息或者信件吗?这肯定不行,因为它并不知道一个具体的地址是多少?你必须告诉它具体哪个省哪个市哪个区哪个小区哪号楼哪层时,只有这种公共的地址,也就是大家都认识的地址,邮局才能帮你把这封信送达。你说哪号楼哪层这个只有你小区内的人才知道。那这个就和我们的网络是相关的。

那对于网络上的主机,你必须要有个公网的地址,那相互之间才能进行通讯,如果告诉它一个私网(内网)的地址,那它根本 找不到你。那对于我们现实中大部分主机都是在网关之后的,他们之间都是有自己的内网IP地址,并不知道自己的外网是多少。那怎么办呢?实际是有一个映射,在网关上有个NAT功能,它可以使你的内网地址变成外网地址。所以他就是一个资源组,映射之后就将你的内网IP端口映射成外网IP端口。那有了外网的IP端口之后,其他的主机就可以通过内网的IP地址与你通讯了。这就是NAT。NAT的穿越和类型我们后面在说。

STUN(Simple Traversal of UDP Through NAT)

有了NAT之后,可以将内网地址转成公网地址,那两个公网之间是不是就可以通讯了呢?那中间还是缺了一步的,他们虽然 都存在这个世界上,但是彼此并不认识,怎么办呢?那必须要有一个第三方的服务做一个介绍,这个就是STUN服务。

STUN服务说白了就是做一个中介,把各自的公网信息进行一下交换,让他们彼此进行认识,这个STUN服务也非常简单。

TURN(Traversal Using Relays around NAT)

经过介绍认识之后,A和B这两台主机就可以建立连接了,连接一旦建立完毕就可以传输数据,那光有STUN服务他们之间是不是就一定能够创建成功这个连接呢?其实不一定,在美国有一项数据表示在进行P2P穿越的时候,有70%是可以穿越成功的,但是实际上在国内来说就很难达到这个70%的成功率,50%可能都到不了。那在现实过程中,我又要实现浏览器之间的传输,那当P2P连接不成功的情况下,如何保证音视频还能互通呢?

这就引入了TURN服务,TURN 就是在云端架设一个服务器,这个服务器就负责之间双方流媒体数据的转发,让他们进入到同一个房间里之后呢,这个TURN就会给房间里的所有人进行转发,那么对 端就能收到了,A 发送信息通过TURN到了B,同样的B发送信息通过TURN发送给A。这样就在P2P连接不成功的情况下 ,它有了一条路线可以进行音视频的传输。这就是TURN服务。

ICE (Interactive Connectivity Establishment)

ICE就是将上面介绍的NAT、TURN等服务打包一起做一个最优的选择,那它首先尝试进行P2P,P2P在你的主机上有可能有双网卡或者是多个端口,当其中有一个端口或者某一个网卡不通的时候,它可以换 其他 的,如果两条都是通 的时候,它选择一条更高效的,也就是说哪个网卡性能更好它会使用哪个。那当P2P不通的时候它又会选择TURN服务中转,TURN也不一定能通,尤其是中国,很有可能被拦掉,那怎么办呢?那有可能选择了多个节点,有可能是在上海一个节点,在日本东京一个节点,当上海的节点不通的时候还可以 选择东京的节点,ICE就是将这些所有的可能性都罗列好,会在这其中找到一条最优的路径,将数据传送过去。

以上就是WEBRTC涉及到的一些基本知识。

后面我再来看这些具体是怎么做的。

首先是NAT,这张图就表现的非常清楚,这就是一个地址映射,左边的分别 是内网的几台机子,通过内网的IP他们之间是可以相互通信的,但是与互联网之间是不通的,那么如何访问互联网的资源呢,那就必须通过NAT,将我们的内网地址转换成外网地址。

那么由于每台主机都要映射不同的端口,NAT产生的原因有两种,一种是IPv4的地址不够,解决IPv4地址不够有两种方案,其中最好的是使用IPv6,IPv6的地址池更多,基本上每台主机都有自己的IP地址。还有一种就是进行NAT穿越,就是内网数万台主机都有自己的IP地址,但是映射到外网只有一个IP地址或者几个IP地址,它通过端口好来区分每一台主机,那就形成了一对几百或者以对几万,大大减少了公网IP地址的使用。第二个是处于网络安全的考虑。

NAT种类

完全锥型NAT (Full Cone NAT)

什么是完全锥型,就是当内网中的某一台主机经过NAT映射形成一个外网的IP地址和端口,也就是外网所有的主机,只要知道这个地址都可以向这个地址发送数据,基本上就是没有什么限制,这就是安全性比较低的一种类型,也就是谁都能来。

 

地址限制锥型NAT(Address  Restricted Cone NAT)

也就是大家觉得完全锥型安全性问题太大了,那就做一些限制,也就是请求出去的时候会记录一下出去的IP地址,那么当你回来的时候只有这台地址的主机才能给我回消息,对于公网上的其他地址来说,我一检查IP地址不对,就给PASS掉。这种就是地址限制型。只要我没向你发送过请求,你直接向我发数据,这是不允许的。

 

端口限制锥型NAT (Port Restricted Cone NAT)

端口限制型就是在IP地址的限制基础上又增加了对端口的限制,也就是我发送信息的时候会给主机的某个应用的某个端口发送数据,那么你回来的时候 ,只有这个端口回来的数据才接受,对于同一台主机其他端口发送过来的数据都拒绝接收。更何况 是其他的主机 了,所以它的限制更加严格。

 

对称型NAT (Symmetric NAT)

当我进行NAT转换的时候,内网的主机出外网的时候形成的映射,并不是形成一个IP地址和端口,它会形成多个,对于访问不同的主机,它会形成不同的IP地址和端口,这就更加严格,想知道IP地址都很困难,比如说你通过这个地址请求A,那么A告诉B通过这个IP地址是可以访问,那B实际上是访问不通的。内网的主机与第三个主机连接的时候,它会新建一个IP地址 和端口,这个就更加复杂,这个对NAT穿越就提出了更高的要求,对于对称型的NAT基本上都是不能穿越的,现在 只要知道这几种类型就好了,对于NAT的穿越打洞以及工作原理我们后面再说。

通过更改Chrome的隐私设置来配置WebRTC网络流量。 在Chrome的隐私设置中配置WebRTC流量路由选项。 ★它做什么: 这配置WebRTC不使用某些IP地址或协议: - 公共互联网不可见的私人IP地址(例如地址192.168.1.2) - 与不用于网络流量的网络接口相关联的任何公共IP地址(例如,当通过VPN浏览时,ISP提供的地址) - 要求WebRTC流量通过Chrome中配置的代理服务器。由于大多数代理服务器不处理UDP,所以这会有效地关闭UDP,直到Chrome中提供UDP代理支持,并且这些代理被广泛部署。   当扩展程序安装在M48之前的Chrome版本上时,WebRTC将仅使用与用于Web通信的接口关联的公共IP地址,通常是已经提供给浏览器HTTP请求中的站点的相同地址。对于Chrome版本M48以及之后的版本,此扩展提供了一个允许WebRTC使用默认公共地址的配置,对于NAT后面的机器,则使用与公共地址关联的默认私有地址。在Chrome M48的全新安装扩展之后,所述行为将是默认的。对于升级方案,以前选择的配置不应该改变。 该扩展也可能会禁用非代理UDP,但默认情况下不会启用,并且必须使用扩展的“选项”页面进行配置。 ★注意事项: 此扩展可能会影响使用WebRTC进行音频/视频或实时数据通信的应用程序的性能。因为它限制了潜在的网络路径和协议,所以WebRTC可能选择导致明显更长的延迟或更低质量(例如,通过VPN)的路径,或者仅通过代理服务器使用TCP,这对于实时通信不是理想的。我们正试图确定这是多么普遍。 安装此项目即表示您同意Google服务条款和隐私权政策,网址为https://www.google.com/intl/zh-CN/policies/。 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值