RSTP协议以客户服务器方式工作,如:暂停/继续、后退、前进等。他是一个多媒体播放控制协议,用来使用户播放从英特网下载的实时数据能够进行控制
,因此RSTP又称为“因特网录像机遥控协议”。

  • 其实就个人理解,RSTP协议就是一种控制协议,它并不实现流媒体的实体传输,但是它可以控制流媒体的传输,可以让流媒体暂停、播放、倒退,就好像我们看电影可以通过按钮实现暂停、播放、后退、快进。RSTP协议就像是流媒体的按钮。
  • RSTP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RSTP协议与HTTP协议类似。是TCP/IP协议体系中的一个应用层协议。
  • 该协议定义了一对多应用程序如何有效地通过IP网络传输多媒体数据。RSTP在体系结构上位于RTP和RTCP之上。它使用TCP或RTP完成数据传输。
  • RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演"网络远程控制"的角色。尽管有时可以把RSTP控制信息和媒体数据流交织在一起,但是一般情况RSTP本身并不用于传送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。
  • 该协议用于C/S模型,是一个基于文本的协议,用于在客户端和服务器端建立和协商实时流会话。
  • 借用网络上的流媒体体系结构图:
一次基本的RSTP操作过程
  • 客户端连接到流服务器并发送一个RSTP描述命令(DESCRIBE)
  • 流服务器通过一个SDP描述进行反馈,反馈信息包括流数量、媒体类型等信息。
  • 客户端再分析该SDP描述,并为会话中的每一个流发送一个RSTP建立命令(SETUP),RSTP建立命令告诉服务器客户端用于接收媒体数据的端口。
  • 客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。在播放过程中客户端还可以向服务器发送命令来控制快进、快退、暂停等。
  • 最后客户端可以发送终止命令TERADOWN来结束流媒体会话
协议特点
  • 可扩展性:新方法和参数很容易加入RSTP
  • 易解析:RSTP可由标准HTTP或者MIME解析器解析
  • 安全:RSTP使用网页安全机制
  • 独立传输:RSTP可以使用不可靠数据报协议(EDP),可靠数据报协议(RDP),如果实现应用级可靠,可以使用可靠流协议。
  • 多服务器支持:每个流可放在不同服务器上,用户端自动与不同服务器建立几个并发控制连接,媒体同步在传输层执行。
  • 记录设备控制:协议可控制记录和回放设备
  • 流控与会议开始分离:仅要求会议初始化协议提供,或可用来创建唯一会议标识号。特殊情况下,可以使用SIP或者H.323来邀请服务器入会。
  • 适合专业应用:通过SMPTE时标,RTSP支持帧级精度,允许远程数字编辑。
  • 演示描述中立:协议没强加特殊演示或元文件,可传送所用格式类型。然而,演示描述至少必须包括一个RSTP URL。
  • 代理与防火墙友好:协议可由应用和传输层防火墙处理。防火墙需要理解SETUP方法,为UDP媒体流打开一个"缺口"。
  • HTTP友好:RSTP采用HTTP观念,使现在结构都可重用。结构包括Internet内容选择平台(PICS)。由于现在大多数情况下控制连续媒体需要服务器状态。
  • 适当的服务器控制:如用户启动一个流,必须也可以停止一个流。
  • 传输协调:实际处理连续媒体流前,用户可协调传输方法。
  • 性能协调:如基本特征无效,必须有一些清理机制让用户决定那种方法没生效,这允许用户提出适合的用户界面,这个就好像视频播放器上面我们可以选择倍速播放一个道理。
RSTP和HTTP的区别
  • RSTP引入了几种新方法,如DESCRIBE、PLAY、SETUP等,并且有不同的协议 标识符。RSTP为rstp 1.0,HTTP为http 1.1;
  • RSTP协议的客户端和服务器端都可以发送Request请求,而在HTTP协议中,只能客户端发送Request请求。
  • 在RSTP协议中,载荷数据一般通过带外方式传送(除了交织的情况),及通过RTP协议在不同的通道中来传送载荷数据。而HTTP协议的载荷数据都是通过带内方式传送的,比如请求的网页数据都是在回应的消息体中携带。
  • RSTP使用ISO 10646(UTF-8),而不是ISO8859-1,以配合当前HTML的国际化;
  • RSTP使用URL请求时包含绝对URL.而由于历史原因造成的向后兼容性问题。HTTP 1.1只在请求中包含绝对路径,把主机名放入单独的标题域中。
RSTP组成

报文结构:
rtsp_url = (“rtsp:” | “rtspu:” ) “//” host [ :port ] / [abs_path]/content_name
解释:

  1. host:主机ip或者域名,和http一样
  2. port:端口号,缺省端口为554
  3. 剩下的和http请求报文一个意思
简单的RSTP消息交互过程

C: rstp客户端
S: rstp服务端

第一步: 查询服务器端可用的方法

C->S OPTION request //询问S有哪些方法可用
S->C OPTION response //S回应信息的public头字段中包括提供的所有可用方法

第二步:得到媒体描述信息

C->S DESCRIBE request //请求得到S提供的媒体描述信息
S->C DESCRIBE response //S回应媒体描述信息,一般是SDP信息。

第三步:建立RSTP会话

C->S SETUP request //通过Transport头字段列出可接受的传输选项,请求S建立会话
S->C SETUP response //S建立会话,通过Transport 头字段返回选择的具体传输选项,并返回建立的Session ID;

第四步:请求开始传送数据

C->S PLAY request //C请求S开始发送数据
S->C PLAY response //S回应该请求的信息

第五步:数据传送播放中

S->C 发送媒体数据 //通过RTP协议传送数据

第六步:关闭会话、退出

C->S EARDOWN request //客户端请求关闭会话
S->C EARDOWN response //服务器回应请求

注意: 上述过程只是标准的、友好的rstp流程,但实际的需求中并不一定按此过程。其中第三步和第四步时必须的。第一步,只要服务器和客户端约定好有哪些方法可用,则option请求可以不要。第二步,如果我们有其他途径得到媒体初始化描述信息(比如http请求等等),则我们也不需要通过rstp中的describe请求完成。

简单的RSTP请求响应示例

C: rstp客户端
S: rstp服务端

OPTIONS:

C->S OPTION request //询问有哪些方法可用
S->C OPTION response //回应消息中包括提供的所有可用方法

客户端请求服务端

OPTIONS rstp://127.0.0.1:554/demo/resource RSTP/1.0
Cseq: 1

服务端回应

RTSP/1.0 200 OK
Server: PVSS/1.4.8 (Build/20090111; Platform/Win32; Release/StarValley; )
Cseq: 1
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD

DESCRIBE

C->S: DESCRIBE request //要求得到S提供的媒体初始化描述信息
S->C: DESCRIBE response //S回应媒体初始化描述信息,主要是sdp

客户端到服务端的这种请求方式,得到的媒体描述信息一般是SDP信息。客户端通过Accept头指定客户端可以接受的媒体描述信息类型

DESCRIBE rstp://127.0.0.1:554/demo/resource.sdp RSTP/1.0
Cseq: 2

补充
  • EDP(Enhanced Device Protocol 增强设备协议)是OneNET平台根据物联网特点专门定制的完全公开的基于TCP的协议,可以广泛应用于家居、交通、物流、能源、以及其他行业中。它适用于设备和平台需要保持长连接点对点控制的使用场景,功能包括数据上传、数据下发、数据转发、离线数据等。
  • RDP(Remote Desktop Protocol 远程桌面协议),是一个多通道(multil-channel)的协议,让用户(客户端、本地电脑)连接上提供微软终端服务的电脑(服务器)。大部分的Windows、Linux、FreeBSD等都有相应的客户端,服务器端监听 TCP 3389端口的数据。
  • SIP(Session Initation Protocol ,会话初始协议) 是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。他是一个基于文本的应用层控制协议,用于创建、修改和释放一个或者多个参与者的会话。SIP是一种源于互联网的IP语音会话控制协议,具有灵活、易于实现、便于扩展等特点。
  • H.323协议也是一种通信协议,应用领域为通信。也是一种建立通信会话的协议,他和SIP的作用相似,但是应用领域不同。
  • SDP( Session Description Protocol)与其说是一个协议不如确切的说是一种文本封装格式,关于SDP的传输需要使用到其他协议传输,比如Http,RTSP等,SDP文本中主要包含会话信息和媒体信息,按照规定的格式进行填写和扩展。