流媒体协议

本文作者:杉木@涂鸦智能安全实验室

流媒体协议介绍

流媒体协议是用于网络上音视频数据传输的一组规则和标准。这些协议确保了数据可以以流的形式从服务器传输到客户端,同时为用户提供了播放、暂停、快进和倒带等控制功能。

流媒体协议有很多,主要分为三大类:

  • 传统视频流协议
  • 基于 HTTP 的自适应协议
  • 新技术

传统视频流协议

传统视频流协议主要有:

  • RTMP
  • RTSP

基于 HTTP 的自适应协议

基于 HTTP 的自适应协议主要有:

  • Apple HLS
  • Low-Latency HLS
  • MPEG-DASH
  • Adobe HDS

新技术

新技术主要有:

  • SRT
  • WebRTC

RTSP

RTSP(Real Time Streaming Protocol,实时流协议)是最早的视频传输协议,定义了一对多应用程序如何通过IP网络高效传输多媒体数据。RTSP位于RTP和RTCP之上,在体系结构上,它是一种双向实时数据传输协议,允许客户端向服务器端发送如回放、快进、倒退等操作的请求。RTSP可基于RTP传送数据,也可以选择TCP、UDP、组播UDP等通道发送数据,具有优良的扩展性。

  • 底层协议:TCP 和 UDP
  • 网络控制协议
  • 视频编解码器:H.265
  • 音频编解码器:AAC
  • 延迟:2 秒
  • 常见端口:554/8554

RTP/RTCP

RTP(Real-time Transport Protocol, 实时传输协议)是互联网上针对多媒体数据流的一种实时传输协议。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。

RTCP(Real-time Transport Control Protocol或RTP Control Protocol,实时传输控制协议)与RTP配合使用的协议,也是RTP协议中不可分割的一部分。RTCP的主要功能:服务质量的监督和反馈,媒体数据间的同步,以及多播组中成员的标志。

RTCP的五种分组类型:

  • 200: SR: sender report
  • 201: RR: receiver report
  • 202: SDES: source description items
  • 203: BYE: indicates end of participation
  • 204: APP: application specific functions

SRTP/SRTCP

安全实时传输协议(Secure Real-time Transport Protocol或SRTP)是在实时传输协议(Real-time Transport Protocol或RTP)基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。

网络层关系

请添加图片描述

RTSP协议分析与安全实践

RTSP协议分析与安全实践

RTSP Client RTSP Server OPTIONS request OPTIONS response DESCRIBE request DESCRIBE response SETUP request SETUP response (with Session ID) PLAY request (with Session ID) PLAY response Streaming Data (RTP over UDP/TCP) PAUSE request (with Session ID) PAUSE response TEARDOWN request (with Session ID) TEARDOWN response RTSP Client RTSP Server

RTMP

RTMP(Real Time Messaging Protocol)实时消息传送协议是 Adobe 公司为 Flash 播放器和服务器之间进行音频、视频和数据传输而开发的流媒体协议。

  • 底层协议:TCP
  • 应用级视频流协议
  • 视频编解码器:H.264
  • 音频编解码器:AAC
  • 延迟:3 - 30 秒
  • 常见端口:1935

RTMP 基于 TCP,是一个协议族,包括 RTMP 基本协议以及 RTMPT、RTMPS、RTMPE 等多种变体。它是一种用于实时数据通信的网络协议,主要用于 Flash/AIR 平台和支持 RTMP 协议的流媒体/交互服务器之间的音视频和数据通信。

RTMP Client RTMP Server TCP Handshake Acknowledge TCP Handshake RTMP Handshake (C0+C1) RTMP Handshake (S0+S1+S2) RTMP Handshake (C2) Connect Command (AMF0/AMF3) Window Acknowledgement Size Set Peer Bandwidth Connect Command Response (AMF0/AMF3) Create Stream Command (AMF0/AMF3) Create Stream Command Response (AMF0/AMF3) Publish Command (AMF0/AMF3) Publish Command Response (AMF0/AMF3) Video/Audio Data (Stream) Acknowledge Data Receipt Play Command (AMF0/AMF3) Play Command Response (AMF0/AMF3) Video/Audio Data (Stream) Acknowledge Data Receipt alt [Publishing Stream] [Playing Stream] Close Stream Command (AMF0/AMF3) Close Stream Command Response (AMF0/AMF3) RTMP Disconnect Acknowledge RTMP Disconnect RTMP Client RTMP Server

HLS

HLS(HTTP Live Streaming,HTTP 实时流媒体协议)是由 Apple 公司提出的一种基于 HTTP 的流媒体传输协议。HLS 原先是为了实现 iOS 设备上的流媒体播放,但随着时间的推移,HLS 得到了越来越广泛的应用,已经成为事实上的流媒体传输标准。

HLS 工作方式是将多媒体流切成一系列连续的 HTTP 文件下载,每次下载一小段,通过串连它们的播放,可以做到所谓的"实时"播放。在开始播放之前,客户端会下载一个包含元数据的 m3u8 文件,用来获取媒体流的信息。

HLS 的主要优点在于可以根据网络状况调整视频质量,从而提供更好的用户体验。此外,由于 HLS 使用的是 HTTP 协议,因此可以直接利用现有的网络基础设施,如 CDN、缓存服务器等。

  • 底层协议:HTTP
  • 应用级视频流协议
  • 视频编解码器:H.264
  • 音频编解码器:AAC
  • 延迟:10 - 30 秒
  • 常见端口:80/443
HLS Client HLS Server HTTP GET Master Playlist (.m3u8) Master Playlist Response HTTP GET Media Playlist (.m3u8) for selected quality Media Playlist Response HTTP GET Media Segment (.ts) Media Segment Response loop [Download Segments] HTTP GET updated Media Playlist (.m3u8) Updated Media Playlist Response If live content, the client repeatedly requests updated playlists HLS Client HLS Server

MMS

MMS(Microsoft Media Server Protocol,微软媒体服务协议)是微软公司开发的一种流媒体协议。MMS主要用于流式应用(Streaming Media),包括音频、视频、图像等多媒体数据。

  • 底层协议:UDP和TCP
  • 应用级视频流协议
  • 视频编解码器:H.264
  • 音频编解码器:Windows Media Video
  • 延迟:几秒到几十秒
  • 常见端口:1755
MMS Client MMS Server MMS Describe Request MMS Describe Response MMS Setup Request MMS Setup Response MMS Play Request MMS Play Response Streaming Data MMS Pause Request (optional) MMS Pause Response (optional) MMS Teardown Request MMS Teardown Response MMS Client MMS Server

其他使用流媒体协议的技术介绍

WebRTC

WebRTC(Web Real-Time Communication)是一种开放标准,允许网页浏览器之间进行实时的音频、视频和数据通信,无需安装额外的插件或第三方软件。它是由World Wide Web Consortium (W3C)和Internet Engineering Task Force (IETF)共同开发的,旨在通过简单的API集成,使得网页应用能够直接进行P2P(点对点)通信。

主要特点:

  • 实时通信:支持浏览器间的实时音频、视频和数据传输。
  • 点对点连接:能够直接在不同用户的浏览器之间建立连接,减少服务器负载和延迟。
  • 无插件:所有功能都内置于支持WebRTC的浏览器中,无需下载或安装额外软件。
  • 高度安全:利用安全的协议,如DTLS(Datagram Transport Layer Security)和SRTP(Secure Real-time Transport Protocol)来保护通信数据。

核心组件:

  • MediaStream:获取用户媒体信息,如摄像头和麦克风输入。
  • RTCPeerConnection:建立和维护两个浏览器之间稳定的通信连接。
  • RTCDataChannel:允许浏览器之间交换任意数据,支持高吞吐量和低延迟的数据通信。

关联协议:

  • ICE(Interactive Connectivity Establishment):负责找到两个终端之间最有效的通信路径。
  • STUN(Session Traversal Utilities for NAT):用于NAT穿透,允许在私有网络后的设备发现其公共地址。
  • TURN(Traversal Using Relays around NAT):在STUN不足以建立连接时,作为备用方案,提供中继服务器以确保连接的建立。
  • SDP(Session Description Protocol):用于在通信双方之间协商媒体参数。
  • DTLS:在UDP上提供安全层,用于加密媒体和数据通道。
  • SRTP:用于加密和认证实时传输的音视频流。

P2P

P2P(Peer-to-Peer)是一种分布式网络架构,它允许网络中的每个节点既作为数据的提供者(服务器)也作为接收者(客户端)。这种架构使得数据(如视频和音频流)可以在没有中央服务器的情况下直接在用户之间传输,从而提高了数据传输的效率和可扩展性。

主要特点:

  • 分布式传输:数据直接在用户之间传输,减少了中央服务器的负载。
  • 可扩展性:随着网络中节点数量的增加,网络的总体带宽也相应增加。
  • 成本效益:节省了建立和维护大型中央服务器的成本。
  • 抗脆弱性:由于缺乏中心化的结构,网络更能抵抗单点故障和攻击。

核心技术和协议:

  1. BitTorrent:一种广泛使用的P2P文件分享协议,也被用于流媒体技术,如BitTorrent Live。
  2. WebRTC:虽然通常用于浏览器之间的实时通信,但其数据通道(RTCDataChannel)也可以用于P2P流媒体传输。
  3. Ace Stream:结合了BitTorrent协议和VLC媒体播放器技术的P2P流媒体解决方案。
  4. IPFS (InterPlanetary File System):一种分布式文件系统,通过创建一个持久的、全球性的点对点网络来存储和共享数据。
  5. SopCastPPLive (PPStream):基于P2P技术的流媒体平台,主要用于直播电视和视频。

ONVIF

ONVIF协议本身定义了一系列用于网络视频兼容性的规则和接口,包括设备发现、媒体配置、IP管理、服务能力、事件管理、PTZ(云台摄像头)控制等。对于流媒体的传输,ONVIF通常使用RTSP(Real Time Streaming Protocol)作为其底层传输协议。

RTSP负责建立和控制媒体流的传输,允许用户在不同的时间点开始播放,以及暂停和停止播放。RTSP是一个应用层协议,它建立和控制两个端点之间的一对一的连接,使得客户端可以实时地从服务器请求数据流。

流媒体相关著名项目

FFmpeg

VLC

live555

EasyDarwin

NGINX-RTMP

ZLMediaKit

参考

https://github.com/0voice/audio_video_streaming/blob/main/article/008-流媒体协议介绍.md
音视频解码介绍参考:常见的流媒体协议-音视频开发中文网 (0voice.com)

漏洞悬赏计划:涂鸦智能安全响应中心(https://src.tuya.com)欢迎白帽子来探索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值