mediasoup transport dtls

一、总叙述

1.1 webrtc连接过程

  1. 通过服务器使用安全协议(https/wss等)获取对端的sdp
  2. 双方dtls协商连接后,通过SSL_get_peer_certificate获取对端fingerprint
  3. 比较sdp中的fingerprint,相同表示连接成功
  4. 调动SSL_export_keying_material接口获取srtp接收和发送秘钥对
  5. 初始化接收和发送srtp
  6. 接收rtp/rtcp消息,使用recv srtp进行解码
  7. 发送rtp/rtcp消息,使用send srtp进行编码

1.2 dtls的作用

dtls主要作用是交换srtp的秘钥对

1.3 技术

  1. https/wss
  2. ssl/dtls
  3. srtp

1.4 mediasoup如何调用

  1. mediasoup接收wss消息通过unixsocket传递给worker
  2. woker找到router创建webrtcTransport
  3. 建立tcp/udp server,等待客户端进行dtls连接
  4. dtls连接成功后,交换srtp密钥对
  5. 发送加密数据

二、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相关推荐

  1. spring boot 实现 Kurento 一对一浏览器视频聊天

    一.环境配置 1. 安装了Kurento Media Server(KMS)的 Ubuntu16.04(Xenial). 首先解决服务系统,若有腾讯云或阿里云的Ubuntu16服务器则直接安装KMS服 ...

  2. WebRTC学习笔记七 pion/webrtc

    一.Usage用法 1.使用Go Modules Go Modules are mandatory for using Pion WebRTC. So make sure you set export ...

  3. linphone用户注册与sip交互过程分析

    linphone用户注册与sip交互过程分析 在linphone_core_init 在linphone_configuring_terminated 在linphone_core_start 在 s ...

  4. mediaSoup源码分析-dtls操作

    dtls主要用来交换srtp的 #在ICE完成后,开始dtls过程 void WebRtcTransport::MayRunDtlsTransport(){MS_TRACE();// Do nothi ...

  5. 网络协议文档阅读笔记-Introduction to DTLS(Datagram Transport Layer Security)

    在互联网中安全的数据传输是至关重要的.很多敏感数据都通过互联网交互数据如金融交易数据,医药数据,媒体流数据等.SSL/TLS和IPSec就是为了确保互联网中传输数据的安全而创建的.许多网站使用的是SS ...

  6. mediasoup 源码分析(十九)dtls 握手

    目录 一.DTLS 作用 二.DTLS 关注点 1.角色 2.fingerprint 指纹 3.自签名证书 一.DTLS 作用 dtls是udp层的安全传输协议,用来交换srtp的解密的秘钥.需要注意 ...

  7. 流媒体服务器——Licode Janus-gateway Mediasoup Medooze 分析

    目录 前言 Licode Janus-gateway Mediasoup Medooze 前言 已知的多方通信框架有:Mesh MCU SFU 三种.<三种方案的详细介绍> 其中SFU是目 ...

  8. mediasoup create/connect WebRtcTransport 流程分析

    一. 前言 在这篇博客中我们介绍了 mediasoup-demo 启动流程与信令交互,关键信令包括 getRouterRtpCapabilites,join, createWebRtcTranspor ...

  9. mediasoup详解

    Mediasoup 是完全兼容webrtc的高性能sfu服务器,采用单进程模式,多少核心数开启多少个进程.另外,mediasoup使用 Nodejs 做 信令处理及业务的管理 工作,流媒体转发工作由M ...

最新文章

  1. box-shadow属性
  2. Xamarin XAML语言教程Xamarin.Forms中程序状态与进度(一)
  3. IBASE archive pre-processing report RIBARCHV
  4. c语言二分法_14个经典C语言算法你就不看一眼?(附详细代码)
  5. Oracle忽略hint的几种情形
  6. android 8.0 以后 uiautomator 无法直接使用的问题
  7. 大坑:用SQLyog连mysql的部分操作不能同步到从库
  8. SVN汉化包安装后,没有出现对应的语言选项问题解决(附SVN1.12.1汉化包下载地址)
  9. ipad2 白苹果惊魂
  10. 07 -MATLAB数值微积分与方程求解
  11. php开发oa系统的插件下载不了,什么是oa系统软件
  12. 安卓python编辑器-10 个平板电脑上的 Python 编辑器
  13. 3D游戏编程与设计作业02
  14. 嵌入式了解 以及学习路线
  15. 全解Google(谷歌)基础设施架构安全设计
  16. (转)CTA大佬Winton创始人:人工智能会颠覆传统投资吗?
  17. Zigbee,esp8266(wifi),蓝牙协议三种通信方式
  18. 百度搜索过滤指定网站
  19. 简历中特长爱好怎么写
  20. 算法中的『前缀和』及『差分』思想详解

热门文章

  1. ERP软件费用包括哪些?总共多少钱
  2. 发现谁用 kill -9 关闭程序就开除!
  3. go项目标准化工程结构解析
  4. Crypto如何塑造数字革命 |链捕手
  5. PDF去除数字身份证,完美破解支持打印修改
  6. 【工具】XP超级终端的设置与使用
  7. 无人机小知识:Pitch Yaw Roll的经典解释
  8. 《如何在WordPress上添加微信/支付宝打赏功能》
  9. 《Dynamic Filter Networks》动态过滤网络
  10. python 乘法运算定律_乘法运算定律专项练习题整理