WebRTC核心之SDP详解 十一、第二节 WebRTC中的SDP

今天我们来看看在WebRTC中使用的SDP,在WebRTC中使用SDP相比正常的SDP规范有一些出入,那主要是为了让SDP更能适应WebRTC里面的一些设置以及会话的描述,那么下面我们来看一下,在WebRTC中的SDP组成是包括了5部分

WebRTC核心之SDP详解 十一、第二节 WebRTC中的SDP_第1张图片

第一部分是会话元也就是会话层,这个与上节所讲的是一致的。它是最不重要的。

第二、另外它有专门的网络描述信息,而不是利用以前SDP规范中媒体层的Ip地址和端口了,所以它要单独的进行网络端信息描述。

第三个以前在SDP中是没有的,这个是流的相关的描述,那么在 WebRTC中它将这个视频音频,每路视频每路音频都形成一个音频轨和视频轨,然后最终形成一个流,将音频轨、视频轨放入一个流中作处理。以前的SDP正常的规范就没有流相关的信息。

第四个是一些安全相关的描述,因为webRTC最初的愿景是在浏览器与浏览器之间快速的创建音频与视频的应用,那么在浏览器中安全性就非常的重要,包括你是否有权利打开这个音频设备,那么在整个浏览器的数据传输之间你的数据的安全性这些都是非常重要的,所以它又加了这个安全相关的描述。

第五个再有的就是服务质量,在整个传输的过程中,网络的质量如何,会不会影响我这个视频音频 整体的感受,那么音频与视频的质量实际与这个传输的质量是密切相关的。

所以WebRTC的SDP就有五大部分组成了。网络描述、流描述、安全描述、服务质量这四大类实际是非常关键的。那下面我们就来看看每一项

  

WebRTC核心之SDP详解 十一、第二节 WebRTC中的SDP_第2张图片

会话元包括v=、t=、o=

网络描述包括c=、除了包括原始的这个c之外它还包括一个candidate,candidate通过什么去描述呢通过属性a去描述,所以这个就特别重要,a能用到各种各样的地方。我们描述一个网络的属性candidate,那么网络主要是这两部分,一个是c一个是candidate

流描述里面实际就是m媒体,在webRTC中把整个流当作一个媒体来看待,那么多个媒体可以绑定到一起,首先的是m(media),然后紧接着是它的属性a=rtpmap,对m这个的进一步的说明。还有一个是对每一个payload type格式的详细的设置a=fmtp,这也是一个属性。这就是流相关的一些描述。

安全描述一般都通过属性来设置的,第一个是使用的算法,加密算法是通过什么,通过这个属性a=crypto,那么整个WebRTC是通过整个ICE收集的整个网络地址和连通性检测,最终选出一个最有效的路径来,那么选出这个最有效的路径怎么知道这两台机子的会话是合法的呢?那就是通过这个a=ice-frag,它代表的是一个用户名的片段也就是整个用户名需要加一个片段,还有一个是a=ice-pwd,那就是通过这个ice-frag和ice-pwd然后对这个用户进行连通性检测的时候,对这个用户进行判断,也就是如果我通过SDP将这个信息将这个对方的frag和pwd传给你,那当真正建立连接性检测的时候,它就通过这个密码去验证,跟你连通的时候我将这个ice-frag和这个ice-pwd传给你,传给你之后如果你验证通过了,那说明咱们确实是应该建立连接的,那如果你是一个第三方,你想和我进行偷偷的连接,我传给你的用户名和密码,然后你在给我发回来,发出来的用户名和密码与我真正放出去的用户名和密码是不一致的,那说明你是一个非法用户。通过这种方式来保证整个链路的连接是安全的。这就是安全描述。还有一个就是a=fingerprint也就是指纹,那指纹是用来干什么的呢?指纹就是用来我们进行数据加密的时候,来验证这个证书的。那它首先通过信令层将SDP中的证书的指纹下发给对方,那么下次对数据加密的时候跟之前的它进行一下数据证书的交换,交换证书的时候通过的是DPLS,那么通过DPS和LS进行证书交换的时候,通过这个指纹去验证你这个证书的有效性,那如果这个证书验证是有效性的,然后后面你才能进行数据加密然后进行传输。如果通过指纹这个证书不匹配,那说明你这个连接也是有问题的。那这个时候就不能进行传输。通过以上这个种种方式呢,在打通的时候进行一次验证,在传数据的时候在交换证书的时候也要进行验证,那么通过这个层层的安全的验证,才能保证整个webRTC传输的安全性。以上就是安全性相关的一些描述。当然最后进行算法加密的时候你可以使用这个a=crypto指定的加密算法,也可以通过DPLS交换的证书里的指定的加密算法进行加密,那就是具体的加密算法 了,就是另外的话题了。

服务质量 那么对于WebRTC它的整个服务质量包括网络质量的反馈,包括丢包重传的反馈,那么这些是通过a=rtcp-fb进行信息的反馈,通过这个信息反馈无论是发送方还是接收方,它的这个网络质量的是什么样子的,然后我使用的评估方法是什么?这些它都可以获取到的,所以这个就是用户服务质量的rtcp-fb,那它里面有很多的参数 ,后面我们讲具体的例子的时候,大家会看到。在有一个是a=group,就是这个group是可以将多个音频媒体绑定到一起形成一个媒体流,比如说音频和视频绑定到一起,那它们可以用同样的数据通道,底层的网络通道是可以复用的,他们绑定一起就可以复用,就是通过这种方式。

像这些网络安全和服务质量的都属于attribute属性的描述,作进一步说明的,所以说SDP复杂在哪呢?就是它的整个规范并不复杂,但是你真正用的时候就可以通过这个属性attribute去作各种各样的限制,那么这个时候每一套限制都有一套这个规范,这样就增加了这个SDP的复杂性,但是实际如果你了解了这个整个的过程的话,了解它这个整个规范的话其实就很容易理解它了。还有一个是a=rtcpmux复用,也就是这个rtcp与这个rtp复用同样的网络地址和端口,一般情况下这个rtcp与rtp的端口是不一致的,比如说我的rtp端口是1024,那么一般rtcp就是在rtp的端口号加1是1025,那么你如果设置了这个属性之后那么rtp和rtcp就复用了同一个端口,这个就是服务质量相关的,那么通过这个质量介绍。

那么就可以看到WebRTC的SDP是由5大部分组成。

你可能感兴趣的:(WEBRTC相关)