互联网技术的本质就是通信协议,各种通信协议将各种终端连接了起来。流媒体协议是建立在互联网TCP/IP协议上的多媒体数据流传输分发协议。它主要为主播端和观众端提供数据传输和分发的解决方案。
现在互联网上的流数据占据带宽的大部分,音频、短视频、长视频占据了互联网应用的主流。数据流通过传输技术被运来运去,那么流数据遵循哪些传输规则和协议呢,各个协议有什么优缺点呢?
RFC 概要
RFC英文全称为Request For Comments,中文字面意思是“请求评论”,它是一系列编号文件。
RFC文档最初由Steve Crocker(史迪夫·科洛克)在1969年发明,发明的初衷是记录ARPANET开发中的非官方注解信息。
现在RFC文档由IETF(Internet Engineering Task Force,Internet工程特别行动组)产生,并由专家组、RFC编辑在编辑后发布。现在RFC文档已经成为互联网规范标准和事件的官方记录库。RFC文档是最全面的关于互联网协议标准的记录库,目前已经超过了9000个文档。
绝大部分互联网技术协议都包含在RFC文档中,包括TCP、IP、FTP、RTP等
| 协议 | 协议内容 |
|---|---|
| RTP | 实时传输协议,RTP本身并没有服务质量保证机制。 |
| RTCP | RTP数据流协议的一个姐妹协议,为RTP提供服务质量反馈。 |
| SRTP | RTP安全版本,提供数据加密,消息认证。 |
| SRTCP | RTCP安全版本。 |
| RTSP | 控制声音或影像的多媒体数据流协议 |
| RSVP | 资源预留协议,该协议是网络层协议,真出传输层的QoS(带宽控制)的协议 |
| RTMP | ADOBE公司播放器和服务器之间多媒体刘淑娟传输的开放协议 |
| HLS | 苹果公司实现的基于HTTP的流数据传输协议,边下载边播放 |
| SRT | 基于UDT传输协议,是用户级别的协议,安全可靠的数据传输 |
| QUIC | 谷歌制定的一种基于UDP的低时延的互联网传输层协议,很好地解决了当今传输层和应用层面临的各种需求,包括处理更多的连接,安全性,和低延迟。QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输。 |
流数据具有数据量大、实时传输等特点,它对网络传输有高带宽、低时延、同步和高可靠性的要求。为了保证好的QoS质量,传输模式、协议栈和应用体系控制等问题就显得非常重要。
RTP数据流协议
RTP英文全称Real-time Transport Protocol实时流传输协议。在RFC中定义为RFC3550/RFC3551。RTP由IETF(Internet Engineering Task Force,互联网工程任务组)工作组制定。
该协议主要实现实时数据的传输,它在数据包头中提供编码类型,包中数据的采样时刻、数据包的序号,依据这些信息传输双方可以协商编码类型,可以对数据包进行排序。
RTP 本身并没有服务质量保证机制,它依赖于低层服务去实现这一过程。
RTCP数据流协议
RTCP英文全称Real-time Transport Control Protocol,实时传输控制协议,该协议是RTP数据流协议的一个姐妹协议。RTCP为RTP数据流提供信道外控制。RTCP并不传输数据,它和RTP协作将多媒体数据打包和发送。RTCP的主要功能是保证服务质量,为RTP提供服务质量反馈。
SRTP & SRTCP数据流协议
SRTP英文全称为Secure Real-time Transport Protocol安全实时传输协议,该协议是在实时传输协议RTP基础上定义的一个协议,旨在为RTP数据提供加密、消息认证、完整性保证和重放保护。可以参考文档RFC3711。
RTCP同样也有一个伴生协议,它被称为安全实时传输控制协议Secure RTCP或SRTCP。在使用实时传输协议或实时传输控制协议时,是应用安全传输协议还是明文传输在数据传输过程中是可以选择的。
RTSP数据流协议
RTSP英文全称Real Time Streaming Protocol实时串流协议,该协议由Real Networks和Netscape共同提出的,它是用来控制流数据串的协议。该协议定义了一对多应用程序如何有效地通过IP网络传送流数据。RTSP提供了一个可扩展框架,使实时数据,如音视频的受控、点播成为可能。
它允许同时对多个串流控制,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,能容忍网络延迟。详情可以参考文档RFC2326。
RTSP 和RTP的区别与联系
RTSP与RTP最大的区别在于,RTSP是RTP的上层协议,是一种类似与http协议的网络应用层协议。RTSP允许双向实时数据传输,它允许客户端向服务器端发送控制操作,例如回放、快进、倒退等操作。此外,RTSP既可以使用RTP来传送数据,还可以选择TCP、UDP等通道来传输数据。
RSVP协议
RSVP英文全称Resource reSerVation Protocol资源预留协议,该协议是网络层协议,它是针对IP网络传输层不能保证QoS和支持多点传输而提出的协议。RSVP事先在业务流传输前预约网络资源,建立静态或动态的传输逻辑通路,保证每一业务流都有足够的带宽,这样能够提高传输质量。
RSVP是由接收方执行操作的协议,接收方决定预留资源的优先级,并对预留资源进行初始化和管理。RSVP共有三种预留资源类型,无滤包器、固定滤包器和动态滤包器。
RTP、RTCP、RTVP、RTSP功能图示 |
|---|

RTMP和RTMPS协议
RTMP英文全称Real Time Messaging Protocol实时消息传送协议。它是Adobe Systems公司为Flash播放器和服务器之间流数据传输开发的开放协议。RTMP协议既可以传输AMF格式数据,也可以传输FLV格式数据。
RTMP协议有三个分支,第一种是工作在TCP协议上的明文传输,它使用的端口是1935;第二种是RTMPT,RTMPT被封装在HTTP请求之中,可以穿越防火墙进行传输;第三种是RTMPS,它也是封装在HTTP之中,不过与RTMPT不同的是,它使用HTTPS安全连接,可以保证传输的安全。
目前,大多数互联网数据流传输使用该协议。
HLS数据流传输协议
HLS英文全称HTTP Live Streaming在线流传输协议,该协议是由美国苹果公司实现的基于HTTP的流数据传输协议,可以实现流媒体的直播和点播。该协议主要为iOS系统服务。
HLS实际上并不是真正的实时流协议,HLS协议在服务器端将数据流存储为连续的、短时长的MPEG-TS格式文件,客户端不断下载并解析播放这些小文件从而实现实时流效果。可以认为,HLS是以点播流技术方式来实现实时流的协议。这样的缺点是延时高。
RTMP和HLS比较
RTMP是APP中最常用的数据流传输协议,它可以做到低延时。RTMP协议进行数据传输时,它将一整条数据流封装成FLV通过HTTP打包、TCP长连接分发出去,在服务器端不产生落地文件,延时通常为 1至3秒,远超HLS。
HLS协议通过切片传输数据,边下载边传输,所以传输延时要比RTMP长。但是,HLS基于HTTP/80 传输,很少会被防火墙拦下。HLS基于无状态协议(HTTP)支持平滑扩展,RTMP对视频服务器进行平滑扩展困难。
做APP数据流时一般会选择RTMP而不是HLS,特殊情况是微信端不支持RTMP,所以HLS表现良好。
SRT数据流传输协议
SRT英文全称(Secure Reliable Transport),SRT由Haivision和Wowza合作成立的,管理和支持SRT协议开源应用的组织,这个组织致力于促进视频流解决方案的互通性,以及推动视频产业先驱协作前进,实现低延时网络视频传输。
SRT允许直接在信号源和目标之间建立连接,这与许多现有的视频传输系统形成了鲜明对比,这些系统需要一台集中式服务器从远程位置收集信号,并将其重定向到一个或多个目的地。基于中央服务器的体系结构有一个单点故障,在高通信量期间,这也可能成为瓶颈。通过集线器传输信号还增加了端到端信号传输时间,并可能使带宽成本加倍,因为需要实现两个链接:一个从源到中心集线器,另一个从中心到目的地。通过使用直接从源到目的地的连接,SRT可以减少延迟,消除中心瓶颈,并降低网络成本。
QUIC数据流传输协议
QUIC英文全称(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议。在2016年11月国际互联网工程任务组(IETF)召开了第一次QUIC工作组会议,受到了业界的广泛关注。这也意味着QUIC开始了它的标准化过程,成为新一代传输层协议。
QUIC很好地解决了当今传输层和应用层面临的各种需求,包括处理更多的连接,安全性,和低延迟。QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输。QUIC的一个主要目标就是减少连接延迟,当客户端第一次连接服务器时,QUIC只需要1RTT(Round-Trip Time)的延迟就可以建立可靠安全的连接,相对于TCP+TLS的1-3次RTT要更加快捷。之后客户端可以在本地缓存加密的认证信息,在再次与服务器建立连接时可以实现0-RTT的连接建立延迟。QUIC同时复用了HTTP/2协议的多路复用功能(Multiplexing),但由于QUIC基于UDP所以避免了HTTP/2的线头阻塞(Head-of-Line Blocking)问题。因为QUIC基于UDP,运行在用户域而不是系统内核,使得QUIC协议可以快速的更新和部署,从而很好地解决了TCP协议部署及更新的困难 。