流媒体传输协议RTP、RTCP、RTSP、RTMPS、HLS,究竟是个啥东东?

互联网技术的本质就是通信协议,各种通信协议将各种终端连接了起来。流媒体协议是建立在互联网TCP/IP协议上的多媒体数据流传输分发协议。它主要为主播端和观众端提供数据传输和分发的解决方案。

现在互联网上的流数据占据带宽的大部分,音频、短视频、长视频占据了互联网应用的主流。数据流通过传输技术被运来运去,那么流数据遵循哪些传输规则和协议呢,各个协议有什么优缺点呢?

RFC请求评论文档

在讨论流数据传输技术之前,我们先了解一下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、RTCP、RTSP、RTMPS、HLS,究竟是个啥东东?

流数据协议族

RTP数据流协议

流数据具有数据量大、实时传输等特点,它对网络传输有高带宽、低时延、同步和高可靠性的要求。为了保证好的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等通道来传输数据。

流媒体传输协议RTP、RTCP、RTSP、RTMPS、HLS,究竟是个啥东东?

协议栈

RSVP协议

RSVP英文全称Resource reSerVation Protocol资源预留协议,该协议是网络层协议,它是针对IP网络传输层不能保证QoS和支持多点传输而提出的协议。RSVP事先在业务流传输前预约网络资源,建立静态或动态的传输逻辑通路,保证每一业务流都有足够的带宽,这样能够提高传输质量。

RSVP是由接收方执行操作的协议,接收方决定预留资源的优先级,并对预留资源进行初始化和管理。RSVP共有三种预留资源类型,无滤包器、固定滤包器和动态滤包器。

流媒体传输协议RTP、RTCP、RTSP、RTMPS、HLS,究竟是个啥东东?

数据流协议的作用


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表现良好。

展开阅读全文

页面更新:2024-05-13

标签:苹果公司   串流   数据流   英文   明文   全称   流媒体   数据传输   服务器端   实时   带宽   定义   协议   文档   数据   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top