mediasoup transport dtls
mediasoup transport dtls
一、总叙述
1.1 webrtc连接过程
- 通过服务器使用安全协议(https/wss等)获取对端的sdp
- 双方dtls协商连接后,通过SSL_get_peer_certificate获取对端fingerprint
- 比较sdp中的fingerprint,相同表示连接成功
- 调动SSL_export_keying_material接口获取srtp接收和发送秘钥对
- 初始化接收和发送srtp
- 接收rtp/rtcp消息,使用recv srtp进行解码
- 发送rtp/rtcp消息,使用send srtp进行编码
1.2 dtls的作用
dtls主要作用是交换srtp的秘钥对
1.3 技术
- https/wss
- ssl/dtls
- srtp
1.4 mediasoup如何调用
- mediasoup接收wss消息通过unixsocket传递给worker
- woker找到router创建webrtcTransport
- 建立tcp/udp server,等待客户端进行dtls连接
- dtls连接成功后,交换srtp密钥对
- 发送加密数据
二、TCP调用流程
2.1 tcp的建立
2.1.1 tcp是被谁建立的
- router收到创建webrtctransport的请求
- 创建webrtctransport类
- 解析router传入大参数,获取到enableTcp选项
- 创建TcpServer类
2.1.2 tcp创建和调用流程
- Router::HandleRequest //router收到创建webrttransport的请求
- WebRtcTransport::WebRtcTransport //产生WebRtcTransport
- TcpServer::TcpServer //解析参数,使用tcp协议,创建TcpServer
- TcpServerHandler::TcpServerHandler //一下为通过libuv设置回调等
- onConnection
- TcpServerHandler::OnUvConnection
- TcpServer::UserOnTcpConnectionAlloc
- TcpServerHandler::AcceptTcpConnection
- TcpConnectionHandler::Start
- onRead
- TcpConnectionHandler::OnUvRead
- TcpConnection::UserOnTcpConnectionRead
- WebRtcTransport::OnTcpConnectionPacketReceived //webrtc收到tcp回调
2.2 处理流程
- WebRtcTransport::OnTcpConnectionPacketReceived
- WebRtcTransport::OnPacketReceived
- WebRtcTransport::OnDtlsDataReceived
- DtlsTransport::ProcessDtlsData
- DtlsTransport::CheckStatus
- DtlsTransport::ProcessHandshake
- DtlsTransport::CheckRemoteFingerprint //指纹判断
- DtlsTransport::ExtractSrtpKeys //生成srtp加密和解密
- WebRtcTransport::OnDtlsTransportApplicationDataReceived
- Transport::ReceiveSctpData
- SctpAssociation::ProcessSctpData //返回处理成功
三、UDP处理流程
3.1 udp的建立
3.1.1 udp是被谁建立的
- router收到创建webrtctransport的请求
- 创建webrtctransport类
- 解析router传入大参数,获取到enableUdp选项
- 创建UdpSocket类
3.1.2 udp创建和调用流程
- Router::HandleRequest //router收到创建webrttransport的请求
- WebRtcTransport::WebRtcTransport //产生WebRtcTransport
- UdpSocket::UdpSocket
- UdpSocketHandler::UdpSocketHandler
- onRecv
- UdpSocketHandler::OnUvRecv
- UdpSocket::UserOnUdpDatagramReceived
- OnUdpSocketPacketReceived // 每种协议都创建了udp
- PipeTransport::OnUdpSocketPacketReceived
- PlainTransport::OnUdpSocketPacketReceived
- WebRtcTransport::OnUdpSocketPacketReceived
- WebRtcTransport::OnPacketReceived
3.2 处理流程
- WebRtcTransport::OnDtlsDataReceived
- 同2.2
四、srtp的key交换
- DtlsTransport::ProcessHandshake
- DtlsTransport::ExtractSrtpKeys
- WebRtcTransport::OnDtlsTransportConnected
mediasoup transport dtls相关推荐
- spring boot 实现 Kurento 一对一浏览器视频聊天
一.环境配置 1. 安装了Kurento Media Server(KMS)的 Ubuntu16.04(Xenial). 首先解决服务系统,若有腾讯云或阿里云的Ubuntu16服务器则直接安装KMS服 ...
- WebRTC学习笔记七 pion/webrtc
一.Usage用法 1.使用Go Modules Go Modules are mandatory for using Pion WebRTC. So make sure you set export ...
- linphone用户注册与sip交互过程分析
linphone用户注册与sip交互过程分析 在linphone_core_init 在linphone_configuring_terminated 在linphone_core_start 在 s ...
- mediaSoup源码分析-dtls操作
dtls主要用来交换srtp的 #在ICE完成后,开始dtls过程 void WebRtcTransport::MayRunDtlsTransport(){MS_TRACE();// Do nothi ...
- 网络协议文档阅读笔记-Introduction to DTLS(Datagram Transport Layer Security)
在互联网中安全的数据传输是至关重要的.很多敏感数据都通过互联网交互数据如金融交易数据,医药数据,媒体流数据等.SSL/TLS和IPSec就是为了确保互联网中传输数据的安全而创建的.许多网站使用的是SS ...
- mediasoup 源码分析(十九)dtls 握手
目录 一.DTLS 作用 二.DTLS 关注点 1.角色 2.fingerprint 指纹 3.自签名证书 一.DTLS 作用 dtls是udp层的安全传输协议,用来交换srtp的解密的秘钥.需要注意 ...
- 流媒体服务器——Licode Janus-gateway Mediasoup Medooze 分析
目录 前言 Licode Janus-gateway Mediasoup Medooze 前言 已知的多方通信框架有:Mesh MCU SFU 三种.<三种方案的详细介绍> 其中SFU是目 ...
- mediasoup create/connect WebRtcTransport 流程分析
一. 前言 在这篇博客中我们介绍了 mediasoup-demo 启动流程与信令交互,关键信令包括 getRouterRtpCapabilites,join, createWebRtcTranspor ...
- mediasoup详解
Mediasoup 是完全兼容webrtc的高性能sfu服务器,采用单进程模式,多少核心数开启多少个进程.另外,mediasoup使用 Nodejs 做 信令处理及业务的管理 工作,流媒体转发工作由M ...
最新文章
- box-shadow属性
- Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)
- IBASE archive pre-processing report RIBARCHV
- c语言二分法_14个经典C语言算法你就不看一眼?(附详细代码)
- Oracle忽略hint的几种情形
- android 8.0 以后 uiautomator 无法直接使用的问题
- 大坑:用SQLyog连mysql的部分操作不能同步到从库
- SVN汉化包安装后,没有出现对应的语言选项问题解决(附SVN1.12.1汉化包下载地址)
- ipad2 白苹果惊魂
- 07 -MATLAB数值微积分与方程求解
- php开发oa系统的插件下载不了,什么是oa系统软件
- 安卓python编辑器-10 个平板电脑上的 Python 编辑器
- 3D游戏编程与设计作业02
- 嵌入式了解 以及学习路线
- 全解Google(谷歌)基础设施架构安全设计
- (转)CTA大佬Winton创始人:人工智能会颠覆传统投资吗?
- Zigbee,esp8266(wifi),蓝牙协议三种通信方式
- 百度搜索过滤指定网站
- 简历中特长爱好怎么写
- 算法中的『前缀和』及『差分』思想详解