相关博客:
RTSP协议 http://blog.csdn.net/andyweike/article/details/6210711 注:说明了概念,及一些命令参数的解释 http://baike.baidu.com/view/70534.htm?fr=aladdin RTSP、HTTP、HTTPS、SDP四种协议详解 http://blog.csdn.net/matthew0618band/article/details/9816485 http持久连接概念等,较详细。 RTSP协议的概念,用途以及默认端口 http://blog.csdn.net/chaigang1983/article/details/4708444 (二)RTSP提供的Methods http://blog.csdn.net/chaigang1983/article/details/4713325 RTSP、HTTP、HTTPS、SDP四种协议详解 http://blog.csdn.net/matthew0618band/article/details/9816485 SDP协议学习笔记 http://www.rosoo.net/a/201005/9494.html m=video 0 RTP/AVP 96 m=audio 0 RTP/AVP 97 symbian live5555 & rtsp & rtp & tcp & sdp & udp汇总 http://blog.csdn.net/linzhiji/archive/2010/11/19/6022141.aspx RFC2326(中文版)-实时流协议(RTSP) 第10章 http://www.myfavor.org/e/DoPrint/?classid=3&id=37 RFC2326(中文版)-实时流协议(RTSP) http://www.myfavor.org/network/2008-03-27/35.html RTSP 协议详解 http://hi.baidu.com/13764969808/blog/item/268ff5fd86bb70f4fd037f79.html RTSP 协议详解 http://blog.csdn.net/chenyanxu/article/details/2728427 基于RTSP的实现多媒体文件下载 http://www.jsembed.com/?About/biji/97.html
RTSP协议
http://blog.csdn.net/andyweike/article/details/6210711
注:说明了概念,及一些命令参数的解释
http://baike.baidu.com/view/70534.htm?fr=aladdin
RTSP、HTTP、HTTPS、SDP四种协议详解
http://blog.csdn.net/matthew0618band/article/details/9816485
http持久连接概念等,较详细。
RTSP协议的概念,用途以及默认端口
http://blog.csdn.net/chaigang1983/article/details/4708444
(二)RTSP提供的Methods
http://blog.csdn.net/chaigang1983/article/details/4713325
RTSP、HTTP、HTTPS、SDP四种协议详解
http://blog.csdn.net/matthew0618band/article/details/9816485
SDP协议学习笔记
http://www.rosoo.net/a/201005/9494.html
m=video 0 RTP/AVP 96
m=audio 0 RTP/AVP 97
symbian live5555 & rtsp & rtp & tcp & sdp & udp汇总
http://blog.csdn.net/linzhiji/archive/2010/11/19/6022141.aspx
RFC2326(中文版)-实时流协议(RTSP) 第10章
http://www.myfavor.org/e/DoPrint/?classid=3&id=37
RFC2326(中文版)-实时流协议(RTSP)
http://www.myfavor.org/network/2008-03-27/35.html
RTSP 协议详解
http://hi.baidu.com/13764969808/blog/item/268ff5fd86bb70f4fd037f79.html
RTSP 协议详解
http://blog.csdn.net/chenyanxu/article/details/2728427
基于RTSP的实现多媒体文件下载
http://www.jsembed.com/?About/biji/97.html
需要注意的问题:
(1):RTSP协议与HTTP协议的联系与区别
RTSP协议负责在服务器和客户端之间建立并控制一 个或多个时间上同步的连续流媒体,其目标是象HTTP协议为用户提供文字和图形服务那样为用户提 供连续媒体服务。因此,RTSP协议的设计在语法和操作上与HTTP协议很相似,这样,对于HTTP的大部分扩展也适用于RTSP。
但是RTSP协议和HTTP协议在很多方面有着区别:
1. HTTP是一个无状态协议,而RTSP协议是有状态的。
2. HTTP本质上是一个非对称协议,客户端提出请求而服务器响应;而RTSP是对称的,服务器和客户端都可发送和响应请求。
注:非对称即服务器无法知道客户端的网络情况,不能进行双向的对话了解对端情况,另外http是基于tcp的,对于网络质量要求较高,而rtsp可以选择的
协议就有很多。
(2):
请求示例:
SETUP rtsp://video.fjtu.com.cn:80/vs01/flws/flws_01.rm/streamid=1 RTSP/1.0
CSeq: 3
Transport: RTP/AVP;unicast;client_port=0
响应示例:
解释:
uri中 带有trackID=0,表示对该通道进行设置。
Transport参数设置了传输模式,包的结构。
RTP/AVP表示默认使用UDP传输RTP包,RTP/AVP/TCP表示通过TCP传输RTP包。
unicast表示单一传播。
client_port值中-前的表示客户端的接收RTP包的端口,-后的表示客户端的接收RTCP包的端口。
如果采用TCP方式传送,传送的RTP,RTCP包都在同一个链路上,需要区分,所以有了interleaved,0表示是RTP的通道,1表示是 RTCP的通道,interleaved值有两个:0和1,0表示RTP包,1表示RTCP包,接收端根据interleaved的值来区别是哪种数据包。
(3):
1.协议特点
RTSP协议具有如下的特点:
● 可扩展性:新方法和参数很容易加入RTSP。
● 易解析:RTSP可由标准 HTTP或MIME解析器解析。
● 安全:RTSP使用网页安全机制。
● 独立于传输:RTSP传输通道,可使用不可靠数据包协议(UDP)或可靠数据包协议(RDP),如要实现应用级可靠,可使用诸如TCP的可靠流协议。
● 记录设备控制:协议可控制记录和回放设备。
● 适合专业应用:通过SMPTE 时标,RTSP支持帧级精度,允许远程数字编辑。
● 演示描述中立:协议未强加特殊演示或元文件,可传送所用格式类型;然而,演示描述至少需包含一个RTSP URI。
● 代理与防火墙友好:协议可由应用和传输层防火墙处理。防火墙需要理解SETUP方法,为UDP媒体流打开一个“缺口”。
● 适当的服务器控制:如用户启动一个流,则也可以停止一个流。
● 传输协调:实际处理连续媒体流前,用户可协调传输方法。
● 性能协调:如基本特征无效,则必须有一些清理机制让用户决定那种方法不生效。这允许用户提出适合自己的界面。
(4):
Methods: PLAY
direction: Client to Server
requirement: required
目的: Client 利用 PLAY method 告知 Server 可以开始传送資料, 而且是经由 SETUP method 所选定的 mechanism. 因此, 在尚未收到 Server 对于 SETUP method 的 acknowledge 时, Client 不能发出 PLAY 的 request.
PLAY method 可利用 Range 这个 header 来告知 Server 端它所需的 data 范围, 亦即 Range header 会將 stream 的起始及結束的范围告知 Server. 另外, PLAY request 可以被 pipelined ( queued ), Server 应照 PLAY request 送达的順序來处理.
一个沒有附上 Range header 的 PLAY request 也是合法的, 表示由 stream 的关头一直播放到結束或被 pause 为止. 如果一个 stream 因为 PAUSE request 而暂停, 那这个stream 的关头就改为被 pause 的 point.
(5):
3:建立连接的方式
HTTP支持2中建立连接的方式:非持久连接和持久连接(HTTP1.1默认的连接方式为持久连接)。
1) 非持久连接
让我们查看一下非持久连接情况下从服务器到客户传送一个Web页面的步骤。假设该贝面由1个基本HTML文件和10个JPEG图像构成,而且所有这 些对象都存放在同一台服务器主机中。再假设该基本HTML文件的URL为:gpcuster.cnblogs.com/index.html。
下面是具体步骡:
1.HTTP客户初始化一个与服务器主机gpcuster.cnblogs.com中的HTTP服务器的TCP连接。HTTP服务器使用默认端口号80监听来自HTTP客户的连接建立请求。
2.HTTP客户经由与TCP连接相关联的本地套接字发出—个HTTP请求消息。这个消息中包含路径名/somepath/index.html。
3.HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息,再从服务器主机的内存或硬盘中取出对象/somepath/index.html,经由同一个套接字发出包含该对象的响应消息。
4.HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这个响应消息之后才会真正终止这个连接)。
5.HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件,加以分析后发现其中有10个JPEG对象的引用。
6.给每一个引用到的JPEG对象重复步骡1-4。
上述步骤之所以称为使用非持久连接,原因是每次服务器发出一个对象后,相应的TCP连接就被关闭,也就是说每个连接都没有持续到可用于传送其他对 象。每个TCP连接只用于传输一个请求消息和一个响应消息。就上述例子而言,用户每请求一次那个web页面,就产生11个TCP连接。
2) 持久连接
非持久连接有些缺点。首先,客户得为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接,TCP得在客户端和服务器端分配TCP缓冲区, 并维持TCP变量。对于有可能同时为来自数百个不同客户的请求提供服务的web服务器来说,这会严重增加其负担。其次,如前所述,每个对象都有2个RTT 的响应延长——一个RTT用于建立TCP连接,另—个RTT用于请求和接收对象。最后,每个对象都遭受TCP缓启动,因为每个TCP连接都起始于缓启动阶 段。不过并行TCP连接的使用能够部分减轻RTT延迟和缓启动延迟的影响。
在持久连接情况下,服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上 例中为包含一个基本HTMLL文件和10个图像的页面)自不用说可以通过单个持久TCP连接发送:甚至存放在同一个服务器中的多个web页面也可以通过单 个持久TCP连接发送。通常,HTTP服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。这种情况下,web页面所引用的每个对象 (上例中的10个图像)都经历1个RTT的延迟,用于请求和接收该对象。与非持久连接2个RTT的延迟相比,不带流水线的持久连接已有所改善,不过带流水 线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是,服务器送出一个对象后开始等待下一个请求,而这个新请求却不能马上到达。这段时间服 务器资源便闲置了。
HTTP/1.1的默认模式使用带流水线的持久连接。这种情况下,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个 紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。(注:不用等到前一个请求的响应即可请求下一个对象)如果所有的请求和响应都是紧挨着发送的,那么所有引用到的对 象一共只经历1个RTT的延迟(而不是像不带流水线的版本那样,每个引用到的对象都各有1个RTT的延迟)。另外,带流水线的持久连接中服务器空等请求的 时间比较少。与非持久连接相比,持久连接(不论是否带流水线)除降低了1个RTT的响应延迟外,缓启动延迟也比较小。其原因在于既然各个对象使用同一个 TCP连接,服务器发出第一个对象后就不必再以一开始的缓慢速率发送后续对象。相反,服务器可以按照第一个对象发送完毕时的速率开始发送下一个对象。
aa