Webrtc (一):协议

前言

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

webrtc属实好玩,来好好学一下。今天先了解一下webrtc中经常出现的不熟悉的名词,其实是各种协议和框架。

大部分内容来自 mozilla

ICE

交互式连接设施 Interactive Connectivity Establishment ,一个允许两个浏览器建立连接的协议框架(framework)。在实际的网络中有很多原因会导致两端不能正常连接。这需要绕过阻止建立连接的防火墙,给你的设备分配一个唯一可见的地址(通常情况下我们的大部分设备没有一个固定的公网地址)。如果路由器不允许主机直接相连,还需要通过一台服务器转发数据。 ICE 使用 STUN and/or TURN servers 来完成这件事。

STUN

前面说到,我们需要给自己的设备分配一个唯一可见的地址,这就需要 Session Traversal Utilities for NAT (STUN)。这是一个允许位于NAT后的客户端找出自己的公网地址,判断出路由器阻止直连的限制方法的协议。
在这里插入图片描述
可以看到两个端点分别询问了STUN自己的公网IP后才去进行连接。

NAT

前面又说到STUN服务的是位于NAT后的客户端,那么NAT是什么呢?
网络地址转换协议Network Address Translation (NAT) 。一般情况下,路由器的WAN口有一个公网IP,所有连接这个路由器LAN口的设备会分配一个私有网段的IP地址(例如192.168.1.3)。私网设备的IP被映射成路由器的公网IP和唯一的端口,通过这种方式不需要为每一个私网设备分配不同的公网IP,但是依然能被外网设备发现。你的(私网)设备映射一个公网的IP地址的协议。

注意,公网和私网是互联网两种接入方式。

  • 公网接入,IP能连上外网被各个计算机发现
  • 内网(私网)接入,多个IP共用一个公网IP,不被外网发现

还有一个问题就是,一些路由器严格限制部分私网设备的对外连接,这时候就算是有STUN能够穿透NAT获得公网IP和端口的映射(have the public IP address found by the STUN server)也还是不能和这个设备建立连接。 这时候就需要改为TURN协议。

例:一些路由器使用一种“对称型NAT” ( ‘Symmetric NAT’) 的NAT模型。这意味着路由器只接受和对端先前建立的连接(就是下一次请求建立新的连接映射)。

TURN

NAT的中继穿越方式 Traversal Using Relays around NAT (TURN),通过TURN服务器中继所有数据的方式来绕过“对称型NAT”。你需要在TURN服务器上创建一个连接,然后告诉所有对端设备发包到服务器上,TURN服务器再把包转发给你。很显然这种方式是开销很大的,所以只有在没得选择的情况下采用。
在这里插入图片描述

SDP

上面的内容告诉了我们两端如何找到对方,但是双方交流的语言必须一致啊,不然大家能对话了却有语言障碍,所以就要设计出数据格式。

会话描述协议Session Description Protocol (SDP) 诞生了。这是一个描述多媒体连接内容的协议,例如分辨率,格式,编码,加密算法等。所以在数据传输时两端都能够理解彼此的数据。本质上,这些描述内容的元数据并不是媒体流本身。

小结

大部分是 mozilla的内容,那真的是个很棒的网站,一开始看别的文章网站总是搞不定这些常见词的概念,今天算是了解了一波。

参考资料
1、RFC 8489-STUN
2、mozilla(真的是超棒的网站)
3、RFC 8565-TURN
4、SDP-百度文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值