WebRTC传输协议(webrtc协议详解)

webrtc使用的协议栈如下图:左侧为传统的浏览器HTTP相关协议, 右侧为webrtc所使用的协议栈。

WebRTC传输协议
  • 最上面一层为API层
  • 对于http来说 他的下层使用的TLS协议 如果是https则有这一项,用于加密
  • SRTP可以使用底层的DTLS, 也可以不用.DTLS时参照TLS实现的一套协议
  • Webrtc中的ICE,STUN,TURN 用于链路检测
  • HTTP底层使用的流式的传输协议 – TCP
  • Webrtc底层使用数据报的形式传输数据 – UDP
  • 最底层都是使用的IP协议

webrtc中需要重点了解的协议

  • RTP / SRTP : 未加密数据 / 加密数据, 消息格式都一样
  • RTCP / SRTCP : 同上, 传输的内容是传输质量的报告, 例如 : 抖动、丢包…
  • DTLS : 加密之前都要通过DTLS进行证书的检测和加密算法的协商.

RTP协议结构

WebRTC传输协议
  • V : 2位, RTP版本号
  • P : 1位, 填充标识, 填充保持32位对齐,填充字节的个数(包含自己)
  • X : 1位, 扩展标识, 即RTP可以增加用户自定义的扩展头
  • CC : 4位, CSRC(共享者)个数
  • M : 1位, 标识帧边界, 一个包1500字节包含包头, 一帧数据需要多个包承载,该帧数据的最后一个包M位置1 表示数据边界(还可以根据不同的编解码的配置表不同的含义去设定)
  • PT : 7位, payload type, 用于区分不同的编解码器
  • seq number : 16位, 标识包的顺序, 正常是连续增长的
  • timestamp : 32位, 时间戳, 组包时 同一帧数据的包时间戳是相同的
  • SSRC : 32位, 每个视频源/音频源使用一个SSRC
  • CSRC : 32位, 多路混音时使用, 每一路的SSRC都会放在CSRC中

RTCP协议

WebRTC传输协议
  • RTCP的端口为RTP端口+1, 一般RTCP会与RTP复用同一个端口
  • 一个RTCP包中一般包含多个报告

C++音视频开发学习资料:点击领取→音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

RTCP payload type

WebRTC传输协议
  • 200 : 发送报告, 相比接收报告, 增加了发送者的描述信息
  • 201 : 接收报告
  • 202 : 源的描述, 其中有一个重要内容, 即 源的名字cname, 人类可以识别的属性, 一个源可以对应多个ssrc, 但是在某个时刻只能对应一个ssrc, 当ssrc与别的源发生冲突时会发生变化, 但是cname不变
  • 203 : 停止共享源
  • 204 : 自定义类型 – subtype

RTCP Header

WebRTC传输协议
WebRTC传输协议
WebRTC传输协议

Sender Info 说明

WebRTC传输协议
WebRTC传输协议

Receive Report block

WebRTC传输协议

RTCP SR/RR发送时机

  • 接收端只发送RR
  • 既是发送端又是接收端时, 在上一次报告之后有发送过数据时, 则发送SR.
WebRTC传输协议

注 : webrtc基本不使用SDES消息, 因为在SDP中已经有了cname的描述, 除非发生了ssrc的变化才会使用SDES消息.

WebRTC传输协议

SDES item

WebRTC传输协议
WebRTC传输协议

注 : 协议中…代表了一系列要关闭的流.

WebRTC传输协议
WebRTC传输协议

DTLS

WebRTC传输协议

大致流程:

WebRTC传输协议
  1. hello
  2. 交换证书 、加密算法和key(公钥)
  3. 传输数据
  4. 私钥解密
  • webrtc在使用srtp的时候 要进行证书的交换, 之后是密钥的交换, 之后才是数据的加密解密.
  • 双发交换证书后如何证明证书是正确的?
  • DTLS之前进行的媒体协商 其中的fingerprint就是证书唯一标识, 协商时互相交换了fingerprint, 在后面使用fingerprint对证书进行验证.

SRTP

WebRTC传输协议

DTLS 与SRTP的关系

  • DTLS用于交换公钥
  • SRTP用于对数据加密

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论