webrtc-dtls、sctp、srtp
Webrtc通道协议总览图
WebRtc媒体建立流程图
SCTP:
当我们在网上搜索SCTP时,会看到相关的描述,将SCTP介绍为与UDP,TCP同一层次的传输层协议。最早STCP是把窄带7号信令的可靠性传输机制引入到IP协议、优化TCP协议的不能分帧传输的局限性提出来的,不过后来应用不是很广泛。在WebRTC中实现数据通道使用的SCTP是基于改良剪切版的,有两个草案描述了该改良版本《draft-ietf-rtcweb-data-channel-13》、《draft-ietf-rtcweb-data-protocol-09》(此处描述来源于webrtc数据通道之SCTP over DTLS简介)。WebRTC要求使用SCTP必须开启DTLS,协议的分层图如上图:可以得知WebRTC中的SCTP实际上是基于UDP在应用层提供的相关实现,而非常规意义上的OSI模型中的传输层。
DTLS:
DTLS(Datagram Transport Layer Security) 的作用:给数据通道数据加密(保证数据安全性)、增加链路证书校验机制(防止网络攻击),提供了 UDP 传输场景下的安全机制,能防止窃听、篡改、冒充等问题。在 WebRTC中使用 DTLS 的地方包括两部分:
1、datachannel数据通道,在datachannel数据通道中,webrtc完全使用dtls来进行协商和加解密
2、MediaChannel媒体通道,在媒体通道中,webrtc使用srtp来进行数据的加解密,dtls的作用仅仅用来做密钥交换,RTP/RTCP的书为了与历史设备兼容性考虑,完全通过SRTP来实现
dtls交互流程如下:
Webrtc 中DTLS的参数
WebRTC 中的 DTLS 参数需要通过 SDP 信息来设置和传递,而且只需要两种 a line 表示:
a=setup
a=fingerprint
a=setup 表示 DTLS 的协商过程中角色,有三个可能值:
a=setup:actpass 既可以是 client 角色,也可以是 server 角色
a=setup:active client 角色
a=setup:passive server 角色
根据 RFC5763,SDP请求的 a=setup 属性必须是 actpass,由应答方决定谁是 DTLS client,谁是 DTLS server。
a=fingerprint 的内容是证书的摘要签名,用于验证证书的有效性,防止冒充。
SRTP:
通过 DTLS 协商后,RTC 通信的双方完成 MasterKey 和 MasterSalt 的协商。接下来,我们继续分析在 WebRTC 中,如何使用交换的密钥,来对 RTP 和 RTCP 进行加密,实现数据的安全传输。
RTP/RTCP 协议并没有对它的负载数据进行任何保护。因此,如果攻击者通过抓包工具,如 Wireshark,将音视频数据抓取到后,通过该工具就可以直接将音视频流播放出来,这是非常恐怖的事情。
在 WebRTC 中,为了防止这类事情发生,没有直接使用 RTP/RTCP 协议,而是使用了 SRTP/SRTCP 协议 ,即安全的 RTP/RTCP 协议。WebRTC 使用了非常有名的 libsrtp 库将原来的 RTP/RTCP 协议数据转换成 SRTP/SRTCP 协议数据。
SRTP 要解决的问题:
・对 RTP/RTCP 的负载 (payload) 进行加密,保证数据安全;
・保证 RTP/RTCP 包的完整性,同时防重放攻击。
SRTP/SRTCP 结构
SRTP结构:**
从 SRTP 结构图中可以看到:
- 加密部分 Encrypted Portion,由 payload, RTP padding 和 RTP pad count 部分组成。也就是我们通常所说的仅对 RTP 负载数据加密。
- 需要校验部分 Authenticated Portion,由 RTP Header, RTP Header extension 和 Encrypted Portion 部分组成。
通常情况下只需要对 RTP 负载数据进行加密,如果需要对 RTP header extension 进行加密,RFC6904 给出了详细方案,在 libsrtp 中也完成了实现。
SRTCP 结构
文中部分引用来源:
https://blog.csdn.net/aggresss/article/details/108019570
https://blog.csdn.net/alitech2017/article/details/118089200
webrtc-dtls、sctp、srtp相关推荐
- OFDM、FTTx、SCTP、Ad Hoc、WSN术语简介
上课提到一些术语,下来查了一下,总结在这里. OFDM: OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(M ...
- [架构之路-43]:目标系统 - 系统软件 - Linux下的网络通信-3-TCP/IP协议族:IP、TCP/UDP/SCTP、Socket、应用层协议
目录 第1章 TCP/IP协议简介 1.1 简介 1.2 协议栈 1.3 IP网络 第2章 IP协议 2.1 简介 2.2 IP功能 2.4 IP V4地址 2.5 IP V6地址 2.6 IPV4地 ...
- 计算机网络协议(IP、TCP、UDP、HTTP)
1.计算机网络发展 与其说计算机改变了世界,倒不如说是计算机网络改变了世界.彼时彼刻,你我都因网络而有了交集,岂非一种缘分? 计算机与网络发展大致经历如下过程: 2.计算机的模式变化 起初的计算机主要 ...
- 低延迟流媒体协议SRT、WebRTC、LL-HLS、UDP、TCP、RTMP详解
低广播延迟已经成为任何关于建设源端站和CDN的招标和竞争中的必要特性.以前这种标准只适用于体育广播,但现在运营商要求每个领域的广播设备供应商提供低延迟,比如:广播新闻.音乐会.表演.采访.谈话节目.辩 ...
- 实时视频直播客户端技术盘点:Native、HTML5、WebRTC、微信小程序
1.视频直播客户端技术之Native APP 原生 APP 终端音视频引擎的结构框图如下,基本包括了音频引擎.视频引擎和网络传输,合称实时语音视频终端引擎.这里还包含底层的音视频采集和渲染,还有网络的 ...
- webrtc下的媒体网络连接STUN、TURN、UDP、TCP
一.理想的网络 媒体流创建流程: 1. PeerA.PeerB分别把自己的IP地址(包含端口号)和媒体能力(本地能支持的音视频编解码类型)告诉信令服务器. 2. 信令服务器对媒体能力进行协商,找到一组 ...
- Akamai首席架构师Will:WebRTC、QUIC、DASH、AV1都前景可观
William Robert Law是Akamai媒体业务群的首席架构师,自从去年邀请他参加LiveVideoStackCon 2017后,我们就亲切的称他Will.在对他的邮件采访中,他谈到了中美科 ...
- 《深入浅出DPDK》读书笔记(十):硬件加速与功能卸载(VLAN、IEEE1588、IP TCP/UDP/SCTP checksum、Tunnel)
Table of Contents 109.硬件卸载简介 110.网卡硬件卸载功能 111.DPDK软件接口 接收侧: 发送侧: 112.硬件与软件功能实现 113.VLAN硬件卸载 1. 收包时VL ...
- Android WebRtc 桌面投屏、视频源码
Android WebRtc 桌面投屏.视频源码 Android/iOS/PC/Web 四大平台,可以说Android/Web得天独厚,几乎被Google给完全封装,C端只需建立好信令,架设好webs ...
最新文章
- java 导出csv 格式,java导出csv格式文件的方法
- 百度牵头,全球首个面向商业化运营的Robotaxi技术标准正式发布
- LiveVideoStackCon 2022 上海站 专题抢先看(3)
- 【重大修改】动态时间规整(Dynamic Time Warping)
- 基于gstreamer的支持动态获取多路流的rtsp server(笔记)
- Android studio中常用快捷键
- 用三张图宏观把握数据库
- Python 完整学习路线,非常赞!
- 从零基础入门Tensorflow2.0 ----一、2. 实战回归模型
- MongoDB密码设置(基于windows)
- Simulink视频和图像处理模块介绍
- 诸如zxing二维码调用摄像头旋转角度问题解决方法
- 58域内路由和域间路由
- 本地通用验证码识别DLL/通用滑块识别/文字点选/图标点选/OCR文字识别/本地识别DLL
- sqlserver 数据误删除恢复
- 在Ubuntu中出现权限不够和找不到文件的解决方法
- Ansible 部署的时候提示错误 SSH password instead
- 二项分布和泊松分布,二者的关系
- java时间戳是什么类型_java 获取时间戳的三种方式
- 家用计算机相比工控机优点,具体分析工控机比一般的PC的优势