RFC2326(中文版+英文版+可鏈接目錄)-RTSP_第1頁(yè)
RFC2326(中文版+英文版+可鏈接目錄)-RTSP_第2頁(yè)
RFC2326(中文版+英文版+可鏈接目錄)-RTSP_第3頁(yè)
RFC2326(中文版+英文版+可鏈接目錄)-RTSP_第4頁(yè)
RFC2326(中文版+英文版+可鏈接目錄)-RTSP_第5頁(yè)
已閱讀5頁(yè),還剩176頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)時(shí)流協(xié)議(RTSP)(RealTimeStreamingProtocol(RTSP))備忘錄的狀態(tài):本文檔講述了一種Internet社區(qū)的Internet標(biāo)準(zhǔn)跟蹤協(xié)議,它需要進(jìn)一步進(jìn)行討論和建議以得到改進(jìn)。請(qǐng)參考最新版的“Internet正式協(xié)議標(biāo)準(zhǔn)”(STD1)來(lái)獲得本協(xié)議的標(biāo)準(zhǔn)化程度和狀態(tài)。本備忘錄的發(fā)布不受任何限制。版權(quán)聲明:版權(quán)為TheInternetSociety所有。所有權(quán)利保留。摘要:實(shí)時(shí)流協(xié)議(RTSP)是應(yīng)用層協(xié)議,控制實(shí)時(shí)數(shù)據(jù)的傳送。RTSP提供了一個(gè)可擴(kuò)展框架,使實(shí)時(shí)數(shù)據(jù),如音頻與視頻的受控、點(diǎn)播成為可能。數(shù)據(jù)源包括現(xiàn)場(chǎng)數(shù)據(jù)與存儲(chǔ)在剪輯中數(shù)據(jù)。該協(xié)議目的在于控制多個(gè)數(shù)據(jù)發(fā)送連接,為選擇發(fā)送通道,如UDP、組播UDP與TCP,提供途徑,并為選擇基于RTP(RFC1889)上傳送機(jī)制提供方法。目錄:TOC\o"1-4"\h\z\u實(shí)時(shí)流協(xié)議(RTSP) 1摘要: 2目錄: 31緒論 101.1目的 101.2要求 111.3術(shù)語(yǔ) 111.4協(xié)議特點(diǎn) 121.5RTSP擴(kuò)展 131.6操作模式 141.7RTSP狀態(tài) 141.8與其他協(xié)議關(guān)系 152符號(hào)協(xié)定 153協(xié)議參數(shù) 173.1RTSP版本 173.2RTSPURL 173.3會(huì)議標(biāo)識(shí) 193.4會(huì)話標(biāo)識(shí) 193.5SMPTE相對(duì)時(shí)間戳 193.6正常播放時(shí)間 203.7絕對(duì)時(shí)間 213.8選擇標(biāo)簽 213.8.1用IANA注冊(cè)新的選擇標(biāo)簽 214RTSP消息 214.1消息類型 224.2消息標(biāo)題 234.3消息主體 234.4消息長(zhǎng)度 245普通標(biāo)題域 246請(qǐng)求 246.1請(qǐng)求隊(duì)列 256.2請(qǐng)求標(biāo)題域 257回應(yīng) 267.1狀態(tài)行 267.1.1狀態(tài)代碼和原因分析 267.1.2回應(yīng)標(biāo)題域 298實(shí)體 298.1實(shí)體標(biāo)題域 308.2實(shí)體主體 309連接 309.1流水線操作 319.2可靠性及確認(rèn) 3110方法定義 3110.1OPTIONS 3310.2DESCRIBE 3310.3ANNOUNCE 3510.4SETUP 3710.5PLAY 3810.6PAUSE 4010.7TEARDOWN 4210.8GETPARAMETER 4210.9SETPARAMETER 4310.10REDIRECT 4410.11RECORD 4510.12Embedded(Interleaved)BinaryData 46英文版全部 481Introduction 561.1Purpose 561.2Requirements 581.3Terminology 581.4ProtocolProperties 611.5ExtendingRTSP 641.6OverallOperation 651.7RTSPStates 661.8RelationshipwithOtherProtocols 672NotationalConventions 683ProtocolParameters 693.1RTSPVersion 693.2RTSPURL 693.3ConferenceIdentifiers 713.4SessionIdentifiers 723.5SMPTERelativeTimestamps 723.6NormalPlayTime 733.7AbsoluteTime 743.8OptionTags 743.8.1RegisteringNewOptionTagswithIANA 754RTSPMessage 754.1MessageTypes 764.2MessageHeaders 764.3MessageBody 774.4MessageLength 775GeneralHeaderFields 786Request 787Response 807.1Status-Line 817.1.1StatusCodeandReasonPhrase 817.1.2ResponseHeaderFields 868Entity 878.2EntityBody 889Connections 889.1Pipelining 899.2ReliabilityandAcknowledgements 8910MethodDefinitions 9010.1OPTIONS 9210.2DESCRIBE 9210.3ANNOUNCE 9410.4SETUP 9510.5PLAY 9710.6PAUSE 9910.7TEARDOWN 10110.8GET_PARAMETER 10110.9SET_PARAMETER 10210.10REDIRECT 10410.11RECORD 10410.12Embedded(Interleaved)BinaryData 10511StatusCodeDefinitions 10711.1Success2xx 10711.2Redirection3xx 10711.3ClientError4xx 10811.3.1405MethodNotAllowed 10811.3.2451ParameterNotUnderstood 10811.3.3452ConferenceNotFound 10811.3.4453NotEnoughBandwidth 10811.3.5454SessionNotFound 10911.3.6455MethodNotValidinThisState 10911.3.7456HeaderFieldNotValidforResource 10911.3.8457InvalidRange 10911.3.9458ParameterIsRead-Only 11011.3.10459AggregateOperationNotAllowed 11011.3.11460OnlyAggregateOperationAllowed 11011.3.12461UnsupportedTransport 11011.3.13462DestinationUnreachable 11011.3.14551Optionnotsupported 11112HeaderFieldDefinitions 11112.1Accept 11412.2Accept-Encoding 11412.3Accept-Language 11412.4Allow 11512.5Authorization 11512.6Bandwidth 11512.7Blocksize 11612.8Cache-Control 11612.9Conference 11912.10Connection 11912.11Content-Base 11912.12Content-Encoding 12012.13Content-Language 12012.14Content-Length 12012.15Content-Location 12012.16Content-Type 12012.17CSeq 12112.18Date 12112.19Expires 12112.20From 12212.21Host 12312.22If-Match 12312.23If-Modified-Since 12312.24Last-Modified 12412.25Location 12412.26Proxy-Authenticate 12412.27Proxy-Require 12412.28Public 12512.29Range 12512.30Referer 12612.31Retry-After 12612.32Require 12612.33RTP-Info 12812.34Scale 12912.35Speed 13012.36Server 13112.37Session 13112.38Timestamp 13212.39Transport 13312.40Unsupported 13712.41User-Agent 13812.42Vary 13812.43Via 13812.44WWW-Authentica 13813Caching 13814Examples 13914.1MediaonDemand(Unicast) 14014.2StreamingofaContainerfile 14214.3SingleStreamContainerFiles 14514.4LiveMediaPresentationUsingMulticast 14714.5Playingmediaintoanexistingsession 14914.6Recording 15015Syntax 15215.1BaseSyntax 15216SecurityConsiderations 153AppendixA:RTSPProtocolStateMachines 157AppendixB:InteractionwithRTP 161AppendixC:UseofSDPforRTSPSessionDescriptions 162AppendixD:MinimalRTSPimplementation 169AppendixE:Authors'Addresses 173AppendixF:Acknowledgements 174中文版以下部分沒(méi)有翻譯:11狀態(tài)代碼定義(StatusCodeDefinitions)2911.1成功2xx(Success2xx)3011.1.1存儲(chǔ)空間低2503011.2重定向(Redirection3xx)3111.3客戶端錯(cuò)誤(ClientError)4xx3111.3.1方法不允許3211.3.2參數(shù)不能理解3211.3.3會(huì)議未找到3311.3.4帶寬不足3311.3.5會(huì)話未找到3411.3.6本狀態(tài)下該方法無(wú)效3411.3.7標(biāo)題域?qū)Y源無(wú)效3411.3.8無(wú)效范圍3511.3.9參數(shù)只讀3511.3.10不允許合操作3611.3.11只允許合操作3611.3.12不支持的傳輸3611.3.13目標(biāo)不可達(dá)3711.3.14選擇不支持3712標(biāo)題域定義(HeaderFieldDefinitions)3812.1接受3812.2接受編碼3812.3接受語(yǔ)言3912.4允許(Allow)3912.5授權(quán)(Authorization)4012.6帶寬4012.7塊大小4012.8緩存控制4112.9會(huì)議4112.10連接4112.11基本內(nèi)容4212.12內(nèi)容編碼(Content-Encoding)4212.13內(nèi)容語(yǔ)言4312.14內(nèi)容長(zhǎng)度(Content-Length)4312.15內(nèi)容位置4312.16內(nèi)容類型(Content-Type)4412.17序列號(hào)4412.18日期(Date)4412.19過(guò)期(Expires)4512.20來(lái)自(From)4512.21主機(jī)4512.22如果匹配4512.23從何時(shí)更改(If-Modified-Since)4612.24最近更改(Last-Modified)4612.25位置(Location)4612.26代理授權(quán)4712.27代理要求4712.28公用性4712.29范圍4912.30提交方(Referer)4912.31稍后再試4912.32要求4912.33RTP信息4912.34比例4912.35速度4912.36服務(wù)器(Server)4912.37會(huì)話4912.38時(shí)間戳4912.39傳輸4912.40不支持4912.41用戶代理(User-Agent)4912.42變化4912.43通過(guò)4912.44WWW-授權(quán)(WWW-Authenticate)5013緩存5014實(shí)例5014.1要求媒體(單播)5014.2容器文件的流5114.3單個(gè)流容器文件5114.4組播現(xiàn)場(chǎng)媒體表示5114.5在存在的會(huì)話中播放媒體5114.6錄制5215語(yǔ)法5215.1基本語(yǔ)法5216安全考慮(SecurityConsiderations)52附錄ARTSP協(xié)議狀態(tài)機(jī)53A.1客戶端狀態(tài)機(jī)53A.2服務(wù)器端狀態(tài)機(jī)53附錄B同RTP協(xié)議的交互53附錄C使用SDP進(jìn)行RTSP會(huì)話描述54C.1定義54C.1.1控制URL55C.1.2媒體流55C.1.3有效載荷類型55C.1.4詳細(xì)格式參數(shù)55C.1.5表示的范圍56C.1.6有效時(shí)間56C.1.7連接信息56C.1.8實(shí)體標(biāo)簽57C.2合控制不可用57C.3合控制可用57附錄D最簡(jiǎn)單的RTSP實(shí)現(xiàn)58D.1客戶端58D.1.1回放58D.1.2授權(quán)58D.2服務(wù)器59D.2.1回放59D.2.2授權(quán)59附錄E作者地址60附錄F致謝60參考書(shū)目60版權(quán)申明611緒論1.1目的實(shí)時(shí)流協(xié)議(RTSP)建立并控制一個(gè)或幾個(gè)時(shí)間同步的連續(xù)流媒體。盡管連續(xù)媒體流與控制流有可能交叉,但RTSP本身通常并不發(fā)送連續(xù)媒體流。換言之,RTSP充當(dāng)多媒體服務(wù)器的網(wǎng)絡(luò)遠(yuǎn)程控制。表示描述(presentationdescription)定義了被控流,但本文并沒(méi)有定義表示描述的格式。這里沒(méi)有使用RTSP連接的概念,而由RTSP會(huì)話(session)代替(每次服務(wù)由服務(wù)器端保持一個(gè)帶標(biāo)簽的會(huì)話)。RTSP會(huì)話沒(méi)有綁定到傳輸層連接(如TCP連接)。因?yàn)殡m然在RTSP會(huì)話期間,RTSP客戶端可打開(kāi)或關(guān)閉多個(gè)對(duì)服務(wù)器端的可靠傳輸連接以發(fā)出RTSP請(qǐng)求。但此外,也可能使用無(wú)連接傳輸協(xié)議,比如用UDP發(fā)送RTSP請(qǐng)求。RTSP控制的流可能用到RTP,但RTSP操作并不依賴用于攜帶連續(xù)媒體的傳輸機(jī)制。實(shí)時(shí)流協(xié)議在語(yǔ)法和操作上與HTTP/1.1類似,因此HTTP的擴(kuò)展機(jī)制大都可加入RTSP。盡管如此,RTSP在很多方面還是和HTTP有很大的不同:2RTSP引入了很多新方法并且有不同的協(xié)議標(biāo)識(shí)符。2RTSP服務(wù)器在大多數(shù)默認(rèn)情況下需要維持一個(gè)狀態(tài),但HTTP是無(wú)狀態(tài)協(xié)議。2RTSP客戶機(jī)和服務(wù)器都可以發(fā)出請(qǐng)求。2數(shù)據(jù)由另一個(gè)協(xié)議傳送(有一特例除外)。2RTSP使用ISO10646(UTF-8)而不是ISO8859-1,以配合當(dāng)前HTML的國(guó)際化。2RTSP使用URI請(qǐng)求時(shí)包含絕對(duì)URI。而由于歷史原因造成的向后兼容性問(wèn)題,HTTP/1.1只在請(qǐng)求中包含絕對(duì)路徑,把主機(jī)名放入單獨(dú)的標(biāo)題域中。這使得“虛擬主機(jī)”實(shí)現(xiàn)更為簡(jiǎn)便,一個(gè)單獨(dú)IP地址的主機(jī)可虛擬為幾個(gè)文件樹(shù)主機(jī)。協(xié)議支持的操作如下:從媒體服務(wù)器上檢索媒體:用戶可通過(guò)HTTP或其它方法請(qǐng)求一個(gè)表示描述。如表示是組播,表示描述就包含用于連續(xù)媒體的的組播地址和端口。如表示僅通過(guò)單播發(fā)送給用戶,用戶為了安全應(yīng)提供目的地址。媒體服務(wù)器邀請(qǐng)進(jìn)入會(huì)議:媒體服務(wù)器可被邀請(qǐng)參加正進(jìn)行的會(huì)議,或回放媒體,或記錄其中一部分,或全部。這種模式在分布式教育應(yīng)用上很有用,會(huì)議中幾方可輪流按遠(yuǎn)程控制按鈕。將媒體加到現(xiàn)成講座中:如服務(wù)器告訴用戶可獲得附加媒體內(nèi)容,對(duì)現(xiàn)場(chǎng)講座顯得尤其有用。如HTTP/1.1中類似,RTSP請(qǐng)求可由代理、通道與緩存處理。1.2要求在本文檔中的關(guān)鍵字“必須”,“一定不能”,“要求”,“會(huì)”,“不會(huì)”,“應(yīng)該”,“不應(yīng)該”,“被推薦的”,“可以”,和“可選擇的”都在RFC2119中解釋。1.3術(shù)語(yǔ)一些術(shù)語(yǔ)原由HTTP/1.1采用。在HTTP/1.1中定義的術(shù)語(yǔ)這里不再列舉。合控制:服務(wù)器使用單條時(shí)間線對(duì)多個(gè)流的控制。對(duì)音頻/視頻回饋來(lái)講,這就意味著客戶端僅需發(fā)送一條播放或者暫停消息就可同時(shí)控制音頻和視頻的回饋。會(huì)議:多方參與的多媒體表示,這里的多方意味著大于或者等于一方??蛻舳耍褐刚?qǐng)求媒體服務(wù)器上連續(xù)流媒體數(shù)據(jù)的客戶端。連接:兩個(gè)應(yīng)用程序以通訊為目的在傳輸層建立虛擬電路。容器文件:可以容納多個(gè)共同播放時(shí)包含表示(presentation)的媒體流的文件。RTSP服務(wù)器可以為這些容器文件提供合控制,但容器文件的概念本身并不是本協(xié)議內(nèi)容。連續(xù)媒體:接受器和數(shù)據(jù)源之間存在時(shí)序關(guān)系的數(shù)據(jù)。也就是說(shuō),接受器需要重新產(chǎn)生存在于源數(shù)據(jù)中的時(shí)序關(guān)系。最普通的連續(xù)媒體的例子是音頻和動(dòng)畫(huà)視頻。連續(xù)媒體可以是實(shí)時(shí)的(但是不交互的),它們?cè)谠春徒邮芷髦g是一種緊密的時(shí)序關(guān)系;或者是流的形式,這種關(guān)系就沒(méi)有那么嚴(yán)格了。實(shí)體:作為請(qǐng)求或者回應(yīng)的有效負(fù)荷傳輸?shù)男畔?。由以?shí)體標(biāo)題域(entity-headerfield)形式存在的元信息和以實(shí)體主體(entitybody)形式存在的內(nèi)容組成,如第八章所述。媒體的初始化:數(shù)據(jù)類型/編碼的具體初始化,這些包括時(shí)鐘輸率,顏色表等。用戶請(qǐng)求媒體回放的任何獨(dú)立傳輸信息,是在創(chuàng)建流時(shí)初始化媒體流相位時(shí)產(chǎn)生的。媒體參數(shù):針對(duì)回放前或回放過(guò)程中有可能改變的媒體類型而專門設(shè)定的參數(shù)。媒體服務(wù)器:可對(duì)一個(gè)或多個(gè)媒體流提供回放和錄制服務(wù)的服務(wù)器。同一個(gè)表示(presentation)中不同的媒體流可能來(lái)自于不同的媒體服務(wù)器。媒體服務(wù)器可以建立在作為傳送請(qǐng)求表示(presentation)的Web服務(wù)器的主機(jī)上,也可以建立在不同的主機(jī)上。媒體服務(wù)器重定向:重新定向媒體客戶端到另外一個(gè)媒體服務(wù)器。(媒體)流:?jiǎn)蝹€(gè)媒體實(shí)例,比如,在應(yīng)用中共用音頻流或視頻流。當(dāng)使用RTP時(shí),流包括由RTP會(huì)話(session)中源所創(chuàng)建的所有RTP和RTCP包。這和定義DSM-CC流時(shí)相同。消息:RTSP通訊的基本單元。由15章語(yǔ)法定義的一串八位位組組成,并通過(guò)連接或者無(wú)連接協(xié)議傳送。參與者:一個(gè)會(huì)議成員。參與者可以是機(jī)器,比如是媒體記錄或回放服務(wù)器。表示(presentation):對(duì)用戶請(qǐng)求所回饋的一組流,其使用下面的表示描述(presentationdescription)形式。在本文中的多數(shù)情況下,其意味著對(duì)流進(jìn)行總體控制,但這并不是必須的。表示描述(presentationdescription):表示描述包含在表示(presentation)中一個(gè)或者多個(gè)媒體流的信息。比如,編碼,網(wǎng)絡(luò)地址和內(nèi)容的信息。另外,其他IETF協(xié)議,如SDP協(xié)議使用會(huì)話(session)代替現(xiàn)場(chǎng)presentation。表示描述可以采用包括會(huì)話描述(sessiondescription)SDP在內(nèi)的多種格式?;貞?yīng):RTSP回應(yīng)。如果能理解HTTP回應(yīng),就能清楚的理解RTSP回應(yīng)。請(qǐng)求;RTSP請(qǐng)求。如果能理解HTTP請(qǐng)求,就能清楚的理解RTSP請(qǐng)求。RTSP會(huì)話(session):RTSP交互的全過(guò)程。比如,一個(gè)電影的觀看過(guò)程。會(huì)話(session)包括由客戶端建立連續(xù)媒體流傳輸機(jī)制(SETUP),使用播放(PLAY)或錄制(RECORD)開(kāi)始傳送流,用停止(TEARDOWN)關(guān)閉流。傳輸初始化:客戶端和服務(wù)器端之間傳輸信息(端口號(hào),傳輸協(xié)議等)的交互。1.4協(xié)議特點(diǎn)RTSP特性如下:可擴(kuò)展性:RTSP中很容易加入新方法和參數(shù)。易解析:RTSP可由標(biāo)準(zhǔn)HTTP或MIME解析器解析。安全:RTSP使用網(wǎng)頁(yè)安全機(jī)制。所有HTTP授權(quán)機(jī)制如basic和digest授權(quán)都可直接使用。也可以傳輸層或網(wǎng)絡(luò)層安全機(jī)制。獨(dú)立于傳輸:RTSP可使用不可靠數(shù)據(jù)報(bào)協(xié)議(UDP)、可靠數(shù)據(jù)報(bào)協(xié)議(RDP),如要實(shí)現(xiàn)應(yīng)用級(jí)可靠,可使用可靠流協(xié)議。多服務(wù)器支持:表示(presentation)中的每個(gè)流可放在不同服務(wù)器上,用戶端自動(dòng)同不同服務(wù)器建立幾個(gè)并發(fā)控制連接,媒體同步在傳輸層執(zhí)行。記錄設(shè)備控制:協(xié)議可控制記錄和回放設(shè)備,也可控制可在記錄和回放切換的設(shè)備。流控與會(huì)議開(kāi)始分離:流控與邀請(qǐng)媒體服務(wù)器入會(huì)分離;僅要求會(huì)議初始化協(xié)議提供,或可用來(lái)創(chuàng)建唯一會(huì)議標(biāo)識(shí)號(hào)。特殊情況下,SIP或H.323可用來(lái)邀請(qǐng)服務(wù)器入會(huì)。適合專業(yè)應(yīng)用:通過(guò)SMPTE時(shí)標(biāo),RTSP支持幀級(jí)精度,允許遠(yuǎn)程數(shù)字編輯。表示描述中立:協(xié)議沒(méi)強(qiáng)加特殊表示或元文件,可傳達(dá)所用格式類型;然而,表示描述至少必須包含一個(gè)RTSPURI。代理與防火墻友好:協(xié)議可由應(yīng)用和傳輸層防火墻處理。防火墻需要理解SETUP方法,為UDP媒體流打開(kāi)一個(gè)\"缺口\"。HTTP友好:此處,RTSP明智的采用HTTP觀念,使現(xiàn)在結(jié)構(gòu)都可重用。結(jié)構(gòu)包括Internet內(nèi)容選擇平臺(tái)(PICS)。由于在大多數(shù)情況下控制連續(xù)媒體需要服務(wù)器狀態(tài),RTSP不僅僅向HTTP添加方法。適當(dāng)?shù)姆?wù)器控制:如用戶能啟動(dòng)一個(gè)流,它必須也能停止一個(gè)流。服務(wù)器不能啟動(dòng)一個(gè)用戶不能停止的流。傳輸協(xié)調(diào):實(shí)際處理連續(xù)媒體流前,用戶可協(xié)調(diào)傳輸方法。性能協(xié)調(diào):如基本特征無(wú)效,必須有一些清理機(jī)制讓用戶決定那種方法沒(méi)生效。這允許用戶提出適合的用戶界面。例如,如果不允許尋找,用戶界面必定能禁止位置條滑動(dòng)。以前要求RTSP必須能支持多用戶,但現(xiàn)在得出一個(gè)更好的方法就是保證RTSP能很容易擴(kuò)展成支持多用戶即可。因?yàn)榱鞯臉?biāo)志可以被多個(gè)控制流使用,因此”遠(yuǎn)程通過(guò)”成為可能。協(xié)議不涉及到多個(gè)客戶端如何協(xié)調(diào)入口,其由下層“社會(huì)協(xié)議”或其他下層控制機(jī)制提供。1.5RTSP擴(kuò)展由于不是所有媒體服務(wù)器有著相同的功能,媒體服務(wù)器有必要支持不同請(qǐng)求集。例如:?服務(wù)器可能只須支持回放,因此不必不支持錄制功能。?對(duì)于支持現(xiàn)場(chǎng)播放的服務(wù)器可能不支持尋找功能。?一些服務(wù)器可能不支持設(shè)置流參數(shù),因此不支持GET_PARAMETER和SET_PARAMETER。但服務(wù)器應(yīng)該實(shí)現(xiàn)所有12章中要求的標(biāo)題域。表示描述(presentationdescription)應(yīng)當(dāng)保證不提出服務(wù)器不支持的功能,這種情形和HTTP/1.1中[H19.6]描述方法不支持acrossserver的情形一致。RTSP可以如下三種方式擴(kuò)展,這里以改變大小排序:?以新參數(shù)擴(kuò)展。如用戶需要拒絕通知,而方法擴(kuò)展不支持,相應(yīng)標(biāo)記就加入要求的段中。?加入新方法。如信息接收者不理解請(qǐng)求,返回501錯(cuò)誤代碼(還未實(shí)現(xiàn)),發(fā)送者不應(yīng)再次嘗試這種方法。用戶可使用OPTIONS方法查詢服務(wù)器支持的方法。服務(wù)器使用公共回應(yīng)標(biāo)題列出支持的方法。?定義新版本協(xié)議,允許改變所有部分。(除了協(xié)議版本號(hào)位置)1.6操作模式每個(gè)表示和媒體流可用RTSPURL識(shí)別。表示組成的整個(gè)表示與媒體屬性由表示描述(presentationdescription)文件定義,表示描述格式不在本協(xié)議中定義。使用HTTP或其它途徑用戶可獲得這個(gè)文件,它沒(méi)有必要保存在媒體服務(wù)器上。為了說(shuō)明,假設(shè)表示描述(presentationdescription)描述了多個(gè)表示(presentation),其中每個(gè)表示(presentation)維持了一個(gè)公共時(shí)間軸。為簡(jiǎn)化說(shuō)明,且不失一般性,假定表示描述(presentationdescription)的確包含這樣一個(gè)表示(presentation)。表示(presentation)可包含多個(gè)媒體流。表示描述(presentationdescription)即組成表示的流的描述,包括它們的編碼,語(yǔ)言和使用戶可以選擇最符合要求媒體的其他參數(shù)。在表示描述中,被RTSP分別控制的媒體流由RTSPURL表示。RTSPURL指出了處理具體媒體流的服務(wù)器以及存在于該服務(wù)器上流的名字。多個(gè)媒體流可以放到不同的服務(wù)器上,比如音頻和視頻流可以分別放到不同服務(wù)器而負(fù)載共享。描述(description)還列出了服務(wù)器傳輸可使用的方法。除媒體參數(shù)外,網(wǎng)絡(luò)目標(biāo)地址和端口也需要決定。下面區(qū)分幾種操作模式:?jiǎn)尾ィ阂杂脩暨x擇的端口號(hào)將媒體發(fā)送到RTSP請(qǐng)求源。組播,服務(wù)器選擇地址:媒體服務(wù)器選擇組播地址和端口,這是現(xiàn)場(chǎng)直播或準(zhǔn)點(diǎn)播常用的方式。組播,用戶選擇地址:如服務(wù)器加入正在進(jìn)行的組播會(huì)議,組播地址、端口和密匙由會(huì)議描述給出。1.7RTSP狀態(tài)RTSP控制通過(guò)單獨(dú)協(xié)議發(fā)送的流,與控制通道無(wú)關(guān)。例如,RTSP控制可通過(guò)TCP連接,而數(shù)據(jù)流通過(guò)UDP。因此,即使媒體服務(wù)器沒(méi)有收到請(qǐng)求,數(shù)據(jù)也會(huì)繼續(xù)發(fā)送。在會(huì)話生命期,單個(gè)媒體流可通過(guò)不同TCP連接順序發(fā)出請(qǐng)求來(lái)控制。所以,服務(wù)器需要維持能聯(lián)系流與RTSP請(qǐng)求的會(huì)話狀態(tài)。RTSP中很多方法與狀態(tài)無(wú)關(guān),但下列方法在定義服務(wù)器流資源的分配與應(yīng)用上起著重要的作用:SETUP:讓服務(wù)器給流分配資源,啟動(dòng)RTSP會(huì)話。PLAY與RECORD:?jiǎn)?dòng)SETUP分配流的數(shù)據(jù)傳輸。PAUSE:臨時(shí)停止流,而不釋放服務(wù)器資源。TEARDOWN:釋放流的資源,RTSP會(huì)話停止。標(biāo)識(shí)狀態(tài)的RTSP方法使用會(huì)話(session)標(biāo)題域識(shí)別RTSP會(huì)話,為回應(yīng)SETUP請(qǐng)求,服務(wù)器生成會(huì)話標(biāo)識(shí)。1.8與其他協(xié)議關(guān)系RTSP在功能上與HTTP有重疊,與HTTP相互作用體現(xiàn)在與流內(nèi)容的初始接觸是通過(guò)網(wǎng)頁(yè)的。目前的協(xié)議規(guī)范目的在于允許在網(wǎng)頁(yè)服務(wù)器與實(shí)現(xiàn)RTSP媒體服務(wù)器之間存在不同傳遞點(diǎn)。例如,表示描述(presentationdescription)可通過(guò)HTTP和RTSP檢索,這降低了瀏覽器的往返傳遞,也允許獨(dú)立RTSP服務(wù)器與用戶不全依靠HTTP。但是,RTSP與HTTP的本質(zhì)差別在于數(shù)據(jù)發(fā)送以不同協(xié)議進(jìn)行。HTTP是不對(duì)稱協(xié)議,用戶發(fā)出請(qǐng)求,服務(wù)器作出回應(yīng)。RTSP中,媒體用戶和服務(wù)器都可發(fā)出請(qǐng)求,且其請(qǐng)求都是無(wú)狀態(tài)的;在請(qǐng)求確認(rèn)后很長(zhǎng)時(shí)間內(nèi),仍可設(shè)置參數(shù),控制媒體流。重用HTTP功能至少在兩個(gè)方面有好處,即安全和代理。要求非常接近,在緩存、代理和授權(quán)上采用HTTP功能是有價(jià)值的。當(dāng)大多數(shù)實(shí)時(shí)媒體使用RTP作為傳輸協(xié)議時(shí),RTSP沒(méi)有綁定到RTP。RTSP假設(shè)存在表示描述格式可表示包含幾個(gè)媒體流的表示的靜態(tài)與臨時(shí)屬性。2符號(hào)協(xié)定既然很多定義和語(yǔ)法與HTTP/1.1中相同,這里僅指出它們?cè)贖TTP/1.1中定義的位置而并沒(méi)有拷貝它們到本文檔。為簡(jiǎn)便起見(jiàn),本文檔中[HX.Y]表示對(duì)應(yīng)HTTP/1.1(RFC2068)中的X.Y部分。([譯者注:]為更方便學(xué)習(xí)RTSP,本翻譯文檔將相關(guān)段落完全譯出)與[H2.1]類似,本文對(duì)所有機(jī)制的說(shuō)明都是以散文和補(bǔ)充反饋的方式來(lái)描述的。除RTSP中以”1#”代替”,”為分隔符不同外,其余在RFC2234中有詳細(xì)的描述。簡(jiǎn)單說(shuō)明補(bǔ)充反饋方式如下:補(bǔ)充反饋方式(augmentedBNF)包括下面的結(jié)構(gòu):要解釋的名詞=名詞解釋(name=definition)規(guī)則的名字(name)就是它本身(不帶任何尖括號(hào),“<”,“>”),后面跟個(gè)等號(hào)=,然后就是該規(guī)則的定義。如果規(guī)則需要用多個(gè)行來(lái)描述,利用空格進(jìn)行縮進(jìn)格式排版。某些基本的規(guī)則使用大寫(xiě),如SP,LWS,HT,CRLF,DIGIT,ALPHA,等等。定義中還可以使用尖括號(hào)來(lái)幫助理解規(guī)則名的使用。字面意思("literal")文字的字面意思放在引號(hào)中間,除非特別指定,該段文字是大小寫(xiě)敏感的。規(guī)則1|規(guī)則2(rule1|rule2)“|”表示其分隔的元素是可選的,比如,“是|否”要選擇‘是’或‘否’。(規(guī)則1規(guī)則2)((rule1rule2))在圓括號(hào)中的元素表明必選其一。如(元素1(元素2|元素3)元素4)可表明兩種意思,即“元素1元素2元素4”和“元素1元素3元素*規(guī)則(*rule)在元素前加星號(hào)“*”表示循環(huán),其完整形式是“<n>*<m>元素”,表明元素最少產(chǎn)生<n>次,最多<m>次。缺省值是0到無(wú)限,例如,“1*元素”意思是至少有一個(gè),而“1*2元素”表明允許有1個(gè)或2個(gè)。[規(guī)則]([rule])方括號(hào)內(nèi)是可選元素。如“[元素1元素2]”與“*1(元素1元素2)”是一回事。N規(guī)則(Nrule)表明循環(huán)的次數(shù):“<n>(元素)”就是“<n>*<n>(元素)”,也就是精確指出<n>取值。因而,2DIGIT就是2位數(shù)字,3ALPHA就是由三個(gè)字母組成字符串。#規(guī)則(#rule)“#”與“*”類似,用于定義元素列表。完整形式是“<n>#<m>元素”表示至少有<n>個(gè)至多有<m>個(gè)元素,中間用“,”或任意數(shù)量的空格(LWS-linearwhitespace)來(lái)分隔,這將使列表非常方便,如“(*LWS元素*(*LWS","*LWS元素))”就等同于“1#元素”??赵卦诮Y(jié)構(gòu)中可被任意使用,但不參與元素個(gè)數(shù)的計(jì)數(shù)。也就是說(shuō),“(元素1),,(元素2)”僅表示2個(gè)元素。但在結(jié)構(gòu)中,應(yīng)至少有一個(gè)非空的元素存在。缺省值是0到無(wú)限,即“#(元素)”表示可取任何數(shù)值,包括0;而“1#元素”表示至少有1個(gè);而“1#2元素”表示有1個(gè)或2個(gè)。;注釋(;comment)分號(hào)后面是注釋,僅在單行使用。隱含*LWS(implied*LWS)本文的語(yǔ)法描述是基于單詞的。除非另有指定,線性空格(LWS)可以兩個(gè)鄰近符號(hào)或分隔符(tspecials)之間任意使用,而不會(huì)對(duì)整句的意思造成影響。在兩個(gè)符號(hào)之間必須有至少一個(gè)分隔符,因?yàn)樗鼈円惨鰹閱为?dú)的符號(hào)來(lái)解釋。實(shí)際上,應(yīng)用程序在產(chǎn)生HTTP結(jié)構(gòu)時(shí),應(yīng)當(dāng)試圖遵照“通常方式”,因?yàn)楝F(xiàn)在的確有些實(shí)現(xiàn)方式在通常方式下無(wú)法正常工作。在本備忘錄中,我們用縮進(jìn)的小型段落來(lái)提供動(dòng)機(jī)和背景資料。這將使沒(méi)有參與制定RTSP規(guī)范的讀者更容易理解RTSP中各部分為什么要以該方式來(lái)實(shí)現(xiàn)。3協(xié)議參數(shù)3.1RTSP版本同[H3.1]定義,僅用RTSP代替HTTP即可。如下:RTSP采用主從(<major>.<minor>)數(shù)字形式來(lái)表示版本。協(xié)議的版本政策傾向于讓發(fā)送方表明其消息的格式及功能,而不僅僅為了獲得通訊的特性,這樣做的目的是為了與更高版本的RTSP實(shí)現(xiàn)通訊。只增加擴(kuò)展域的值或增加了不影響通訊行為的消息組件都不會(huì)導(dǎo)致版本數(shù)據(jù)的變化。當(dāng)協(xié)議消息的主要解析算法沒(méi)變,而消息語(yǔ)法及發(fā)送方的隱含功能增加了,將會(huì)導(dǎo)致從版本號(hào)(<minor>)增加;當(dāng)協(xié)議中消息的格式變化了,主版本號(hào)(<major>)也將發(fā)生改變。RTSP消息的版本由消息第一行中的RTSP版本域來(lái)表示。RTSP-Version="RTSP""/"1*DIGIT"."1*DIGIT注意,主從版本應(yīng)當(dāng)被看作單獨(dú)的整數(shù),因?yàn)樗鼈兌加锌赡茉黾?,從而超過(guò)一位整數(shù)。因而,RTSP/2.4比RTSP/2.13版本低,而RTSP/2.13又比RTSP/12.3版本低。版本號(hào)前面的0將被接收方忽略,而在發(fā)送方處也不應(yīng)產(chǎn)生。本文檔定義了RTSP協(xié)議的1.0版本。發(fā)送本規(guī)范定義的請(qǐng)求(Request)或回應(yīng)(Response)消息的應(yīng)用必須指明RTSP的版本為“RTSP/1.0”應(yīng)用的RTSP版本即為應(yīng)用至少能有條件遵循的RTSP版本中的最高版本。當(dāng)代理及網(wǎng)關(guān)收到與其自身版本不同的RTSP請(qǐng)求時(shí),必須小心處理請(qǐng)求的推送,因?yàn)閰f(xié)議版本表明發(fā)送方的能力,代理或網(wǎng)關(guān)不應(yīng)發(fā)出高于自身版本的消息。如果收到高版本的請(qǐng)求,代理或網(wǎng)關(guān)必須降低該請(qǐng)求的版本,并回應(yīng)一個(gè)錯(cuò)誤。而低版本的請(qǐng)求也應(yīng)在被推送前升級(jí)。代理或網(wǎng)關(guān)回應(yīng)請(qǐng)求時(shí)必須和請(qǐng)求的版本相同。3.2RTSPURL“rtsp”和“rtspu”表示要通過(guò)RTSP協(xié)議來(lái)定位網(wǎng)絡(luò)資源。本節(jié)詳細(xì)定義了RTSPURL的語(yǔ)法和語(yǔ)義。rtsp_URL=("rtsp:"|"rtspu:")"http://"host[":"port][abs_path]host=<合法的Internet主機(jī)域名或IP地址(用十進(jìn)制數(shù)及點(diǎn)組成),見(jiàn)RFC1123,2.1節(jié)定義>port=*DIGITabs_path在[H3.2.1]中定義如下:abs_path="/"rel_pathrel_path=[path][";"params]["?"query]path=fsegment*("/"segment)fsegment=1*pcharsegment=*pcharparams=param*(";"param)param=*(pchar|"/")scheme=1*(ALPHA|DIGIT|"+"|"-"|".")net_loc=*(pchar|";"|"?")query=*(uchar|reserved)fragment=*(uchar|reserved)pchar=uchar|":"|"@"|"&"|"="|"+"uchar=unreserved|escapeunreserved=ALPHA|DIGIT|safe|extra|nationalescape="%"HEXHEXreserved=";"|"/"|"?"|":"|"@"|"&"|"="|"+"extra="!"|"*"|"'"|"("|")"|","safe="$"|"-"|"_"|"."unsafe=CTL|SP|<">|"#"|"%"|"<"|">"national=<anyOCTETexcludingALPHA,DIGIT,reserved,extra,safe,andunsafe>權(quán)威的URL語(yǔ)法及語(yǔ)義信息請(qǐng)參見(jiàn)RFC1738[4]和RFC1808[9]。[注意]:段(fragment)和詢問(wèn)(query)標(biāo)識(shí)符在這時(shí)沒(méi)有明確的定義,需要到RTSP服務(wù)器上解釋。rtsp要求使用可靠協(xié)議(Internet的TCP協(xié)議)發(fā)出命令,而rtspu則使用不可靠協(xié)議(Internet的UDP協(xié)議)。如是端口為空或沒(méi)指定,則缺省為80端口。對(duì)于rtsp_URI來(lái)說(shuō),擁有被請(qǐng)求的資源的服務(wù)器主機(jī)通過(guò)偵聽(tīng)該端口的TCP連接(rtsp)或UDP包(rtspu)來(lái)接收該URI請(qǐng)求。只要可能,應(yīng)盡量避免的在URL中直接使用IP地址。(請(qǐng)參考RFC1924)文本媒體標(biāo)識(shí)符使用URL中的字符集及轉(zhuǎn)義規(guī)則(參考RFC1738)來(lái)標(biāo)識(shí)一個(gè)表示(presentation)與單個(gè)流(stream)。URL可以用于單個(gè)流或者多個(gè)流的集合,比如表示(presentation)。因此,在第十章所描述的請(qǐng)求(request)可以用于整個(gè)表示(presentation)或表示中的單個(gè)流。注意,有些請(qǐng)求方法僅能用于流而不能用于表示,反之亦然。例如:RTSPURL:rtsp://:554/twister/audiotrack標(biāo)識(shí)了twister表示(presentation)中,可以通過(guò)554端口的TCP連接發(fā)送RTSP請(qǐng)求來(lái)控制的音頻流。也可以是這樣RTSPURL:rtsp://:554/twister標(biāo)識(shí)了由音頻和視頻流組成的twister表示(presentation)。這并沒(méi)有給出URL中相關(guān)流的標(biāo)準(zhǔn)方法。表示描述定義了表示中的層次關(guān)系以及單獨(dú)流的URL。如一個(gè)表示描述可能將一個(gè)流命名為a.mov,而將整個(gè)表示命名為b.mov。RTSPURL的路徑組成對(duì)客戶端來(lái)說(shuō)不可見(jiàn)并且也并沒(méi)有給出服務(wù)器的具體文件系統(tǒng)結(jié)構(gòu)。只需進(jìn)行簡(jiǎn)單替換后,表示描述同樣可以用于非RTSP媒體控制協(xié)議。3.3會(huì)議標(biāo)識(shí)會(huì)議標(biāo)識(shí)采用URI標(biāo)準(zhǔn)編碼方法編碼,并對(duì)RTSP來(lái)說(shuō)是不可見(jiàn)的。它們能包含任一八位位組值。必須保證會(huì)議標(biāo)識(shí)在全局中的唯一性。在H.323中,將用到會(huì)議的標(biāo)識(shí)值。conference-id=1*xchar會(huì)議標(biāo)識(shí)允許RTSP會(huì)話從媒體服務(wù)器參與的多媒體會(huì)議中獲取參數(shù)。比如,可以要求媒體服務(wù)器用會(huì)議描述中的標(biāo)識(shí)值來(lái)代替RTSP客戶端以提供詳細(xì)的傳輸信息。多媒體會(huì)議的建立不屬于本協(xié)議內(nèi)容,具體請(qǐng)參見(jiàn)H.323或SIP協(xié)議。3.4會(huì)話標(biāo)識(shí)會(huì)話標(biāo)識(shí)符是不可見(jiàn)的任意長(zhǎng)度的字符串。線性空格必須是URL-escaped。會(huì)話標(biāo)識(shí)符必須隨機(jī)產(chǎn)生并且至少應(yīng)有8個(gè)八位位組長(zhǎng)以保證其難以被猜出。(詳見(jiàn)16章)session-id=1*(ALPHA|DIGIT|safe)3.5SMPTE相對(duì)時(shí)間戳SMPTE相對(duì)時(shí)間戳表示相對(duì)于開(kāi)始剪輯的時(shí)間。相對(duì)時(shí)間戳以SMPTE時(shí)間編碼形式表示而可以達(dá)到幀級(jí)量級(jí)的精度。時(shí)間編碼的格式為:時(shí):分:秒;幀.子幀,并以剪輯開(kāi)始為起點(diǎn)。缺省的SMPTE格式為“SMPTE30drop”格式,其幀速是29.97幀每秒??赏ㄟ^(guò)選擇使用不同“SMPTEtime”來(lái)選擇其他SMPTE編碼格式(如“SMPTE25”smpte-range=smpte-type"="smpte-time"-"[smpte-time]smpte-type="smpte"|"smpte-30-drop"|"smpte-25";還可以加入其他時(shí)間編碼smpte-time=1*2DIGIT":"1*2DIGIT":"1*2DIGIT[":"1*2DIGIT]["."1*2DIGIT]比如:smpte=10:12:33:20-smpte=10:07:33-smpte=10:07:00-10:07:33:05.01smpte-25=10:07:00-10:07:33:05.013.6正常播放時(shí)間正常播放時(shí)間(NPT)指出了流相對(duì)于表示(presentation)開(kāi)始時(shí)的絕對(duì)位置。時(shí)間戳由一個(gè)十進(jìn)制小數(shù)組成,以秒為單位,小數(shù)點(diǎn)左邊可以直接以秒表示或者以小時(shí):分:秒的形式表示。表示開(kāi)始時(shí)對(duì)應(yīng)0.0秒。負(fù)值沒(méi)有意義。特殊的常數(shù)now定義為現(xiàn)場(chǎng)事件當(dāng)前瞬間。它只能用于現(xiàn)場(chǎng)事件。在DSM-CC中,正常播放時(shí)間(NPT)是這樣定義的:“直觀地講,NPT是用戶和程序聯(lián)系的時(shí)鐘。它經(jīng)常作為數(shù)字顯示在VCR上。當(dāng)處于普通播放模式(scale=1)時(shí),NPT正常前進(jìn)。當(dāng)處于快進(jìn)掃描模式時(shí)(scale率為大于1的正數(shù)),NPT快速前進(jìn)。當(dāng)處于反向掃描模式(scale率小于-1)時(shí),NPT快速后退。當(dāng)處于暫停模式時(shí),NPT停止。NPT(邏輯上)等同于SMPTE時(shí)間編碼。npt-range=(npt-time"-"[npt-time])|("-"npt-time)npt-time="now"|npt-sec|npt-hhmmssnpt-sec=1*DIGIT["."*DIGIT]npt-hhmmss=npt-hh":"npt-mm":"npt-ss["."*DIGIT]npt-hh=1*DIGIT;anypositivenumbernpt-mm=1*2DIGIT;0-59npt-ss=1*2DIGIT;0-59比如:npt=123.45-125npt=12:05:35.3-npt=now-語(yǔ)法遵循ISO8601規(guī)則。npt-sec標(biāo)志法便于自動(dòng)產(chǎn)生,ntp-hhmmss標(biāo)志法便于人工使用?!皀ow”常數(shù)允許客戶端請(qǐng)求接收實(shí)時(shí)反饋而不是存儲(chǔ)或者延時(shí)的版本。因?yàn)閷?duì)于這種情況而言,既沒(méi)有絕對(duì)時(shí)間,也沒(méi)有0時(shí)間,所以需要該參數(shù)。3.7絕對(duì)時(shí)間絕對(duì)時(shí)間表示為ISO8601時(shí)間戳,使用UTC(GMT)小數(shù)法表示。utc-range="clock""="utc-time"-"[utc-time]utc-time=utc-date"T"utc-time"Z"utc-date=8DIGIT;<YYYYMMDD>utc-time=6DIGIT["."fraction];<HHMMSS.fraction>比如,1996年11月8日14點(diǎn)37分20.25秒U(xiǎn)TC時(shí)間為:19961108T143720.25Z3.8選擇標(biāo)簽選擇標(biāo)簽是用來(lái)指定RTSP新選擇的唯一標(biāo)識(shí)符。這些標(biāo)簽用于要求(Require)(12.32節(jié))和代理要求(ProxyRequire)(12.27節(jié))標(biāo)題域中。語(yǔ)法:option-tag=1*xchar建立新的RTSP選擇可以通過(guò)在選擇前加入相反域名的前綴(如:對(duì)于能訪問(wèn)到則com.foo.mynewfeature"是個(gè)合適的名字)或者在英特網(wǎng)權(quán)威數(shù)字分派委員會(huì)注冊(cè)(IANA)新的選擇。3.8.1用IANA注冊(cè)新的選擇標(biāo)簽當(dāng)注冊(cè)新RTSP選擇標(biāo)簽的時(shí)候,應(yīng)該提供以下信息:?選擇的名字和描述。名字長(zhǎng)度不限,但是應(yīng)該不少于20字符。名字不得包含任何空格,控制符或句點(diǎn)。?指出誰(shuí)擁有選擇的改變控制權(quán)(例如,IETF,國(guó)際標(biāo)準(zhǔn)化組織,國(guó)際電信聯(lián)盟-T,其他的國(guó)際標(biāo)準(zhǔn)化體,一個(gè)團(tuán)體,一個(gè)公司,或者一組公司)。?描述更為詳細(xì)的參考文檔(如果有),比如,RFC,發(fā)表論文,專利文檔,技術(shù)報(bào)告,源代碼,或者計(jì)算機(jī)手冊(cè)。?選擇的所有權(quán),以及聯(lián)系地址(郵編及電子信件地址)。4RTSP消息RTSP是基于文本的協(xié)議,采用ISO10646字符集,使用UTF-8編碼方案。行以CRLF中斷,但接收者本身可將CR和LF解釋成行終止符。基于文本的協(xié)議使以自描述方式增加可選參數(shù)更容易。由于參數(shù)的數(shù)量和命令的頻率出現(xiàn)較低,處理效率沒(méi)引起注意。如仔細(xì)研究,文本協(xié)議很容易以腳本語(yǔ)言(如:Tcl、VisualBasic與Perl)實(shí)現(xiàn)研究原型。10646字符集避免敏感字符集切換,但對(duì)應(yīng)用來(lái)說(shuō)不可見(jiàn)。RTCP也采用這種編碼方案。帶有重要意義位的ISO8859-1字符表示如100001x10xxxxxx.。RTSP信息可通過(guò)任何低層傳輸協(xié)議攜帶。請(qǐng)求包括方法、方法作用于其上的對(duì)象和進(jìn)一步描述方法的參數(shù)。方法也可設(shè)計(jì)為在服務(wù)器端只需要少量或不需要狀態(tài)維護(hù)。當(dāng)信息體包含在信息中,信息體長(zhǎng)度有如下因素決定:不管實(shí)體標(biāo)題域是否出現(xiàn)在信息中,不包括信息體的的回應(yīng)信息總以標(biāo)題域后第一和空行結(jié)束。如出現(xiàn)內(nèi)容長(zhǎng)度標(biāo)題域,其值以字節(jié)計(jì),表示信息體長(zhǎng)度。如未出現(xiàn)標(biāo)題域,其值為零。服務(wù)器關(guān)閉連接。注意:RTSP目前并不支持HTTP/1.1\"塊\"傳輸編碼,需要有內(nèi)容長(zhǎng)度頭。假如返回適度表示描述長(zhǎng)度,即使動(dòng)態(tài)產(chǎn)生,使塊傳輸編碼沒(méi)有必要,服務(wù)器也應(yīng)該能決定其長(zhǎng)度。如有實(shí)體,即使必須有內(nèi)容長(zhǎng)度,且長(zhǎng)度沒(méi)顯式給出,規(guī)則可確保行為合理。從用戶到服務(wù)器端的請(qǐng)求信息在第一行內(nèi)包括源采用的方法、源標(biāo)識(shí)和所用協(xié)議版本。RTSP定義了附加狀態(tài)代碼,而沒(méi)有定義任何HTTP代碼。4.1消息類型見(jiàn)[H4.1]。如下:RTSP消息由客戶端到服務(wù)器的請(qǐng)求和由服務(wù)器到客戶端的回應(yīng)組成。RTSP-message=Request|Response;RTSP/1.0messages請(qǐng)求(Request)和回應(yīng)(Response)消息都使用RFC822中實(shí)體傳輸部分規(guī)定(作為消息中的有效載荷)的消息格式。兩者的消息都可能包括一起始行,一個(gè)或多個(gè)標(biāo)題域(headers)、一行表示標(biāo)題域結(jié)束的空行(即CRLF前沒(méi)有內(nèi)容的行),和一個(gè)消息主體(message-body,可選)。generic-message=start-line*message-headerCRLF[message-body]start-line=Request-Line|Status-Line為了健壯性考慮,服務(wù)器應(yīng)該忽略任何在期望收到請(qǐng)求行時(shí)收到的空行。換句話說(shuō),如果服務(wù)器正在讀協(xié)議流,在一個(gè)消息開(kāi)始時(shí)如果首先收到了CRLF,這個(gè)CRLF符應(yīng)被忽略。4.2消息標(biāo)題見(jiàn)[H4.2]。RTSP標(biāo)題域,包括主標(biāo)題(General-Header,4.3節(jié))、請(qǐng)求標(biāo)題(Request-Header,5.2節(jié))、回應(yīng)標(biāo)題(Response-Header,6.2節(jié))及實(shí)體標(biāo)題(Entity-Header,7.1節(jié)),都遵照RFC822-3.1節(jié)[7]給出的通用格式定義。每個(gè)標(biāo)題域由后緊跟冒號(hào)的名字,單空格(SP),字符及域值組成。域名是大小寫(xiě)敏感的。雖然不提倡,標(biāo)題域還是可以擴(kuò)展成多行使用,只要這些行以一個(gè)以上的SP或HT開(kāi)頭就行。RTSP-header=field-name":"[field-value]CRLFfield-name=tokenfield-value=*(field-content|LWS)field-content=<theOCTETsmakeupthefield-valueandconsistingofeither*TEXTorcombinationsoftoken,tspecials,andquoted-string>標(biāo)題域接收的順序并不重要,但良好的習(xí)慣是,先發(fā)送主標(biāo)題,然后是請(qǐng)求標(biāo)題或回應(yīng)標(biāo)題,最后是實(shí)體標(biāo)題。當(dāng)且僅當(dāng)標(biāo)題域的全部域值都用逗號(hào)分隔的列表示時(shí)(即,#(值)),多個(gè)有相同域名的RTSP標(biāo)題域才可以表示在一個(gè)消息里。而且必須能在不改變消息語(yǔ)法的前提下,將并發(fā)的域值加到第一個(gè)值后面,之間用逗號(hào)分隔,最終能將多個(gè)標(biāo)題域結(jié)合成“域名:域值”對(duì)。4.3消息主體見(jiàn)[H4.3]。RTSP消息的消息主體(如果有)用來(lái)攜帶請(qǐng)求或回應(yīng)的主體。僅在使用傳輸編碼(Transfer-Encoding)時(shí)消息主體和實(shí)體主體才有所不同,這種情況在傳輸編碼標(biāo)題域中有詳細(xì)說(shuō)明。(見(jiàn)[H14.40])message-body=entity-body|<entity-bodyencodedasperTransfer-Encoding>傳輸編碼必須能解釋所有保證傳輸安全和正確的應(yīng)用程序的傳輸編碼。傳輸編碼是消息而不是實(shí)體的一個(gè)屬性,因此可以由任一應(yīng)用程序隨著請(qǐng)求/回應(yīng)鏈添加或者刪除。什么時(shí)候允許消息帶消息體的規(guī)則在請(qǐng)求和回應(yīng)兩種情況下有所不同。在請(qǐng)求中有無(wú)消息主體的標(biāo)志是是否包含內(nèi)容長(zhǎng)度或請(qǐng)求消息標(biāo)題域中的傳輸編碼標(biāo)題域。只有當(dāng)請(qǐng)求方法允許有實(shí)體主體的時(shí)候才能在請(qǐng)求中包含消息主體。而對(duì)于回應(yīng)消息來(lái)說(shuō),無(wú)論消息中是否存在消息主體都與請(qǐng)求方法和回應(yīng)狀態(tài)編碼無(wú)關(guān)。所有回應(yīng)標(biāo)題請(qǐng)求方法的消息都不能包含消息主體,盡管有時(shí)會(huì)因?yàn)榇嬖趯?shí)體標(biāo)題域而使人產(chǎn)生誤解。所有1××(信息),204(無(wú)內(nèi)容),304(未修改)回應(yīng)都不包含消息主體。而其他回應(yīng)則都包含主體,盡管其長(zhǎng)度有可能長(zhǎng)度為零。4.4消息長(zhǎng)度當(dāng)消息包含消息主體時(shí),消息主體的長(zhǎng)度由以下規(guī)則來(lái)決定(按優(yōu)先級(jí)高低順序排列):1.任何回應(yīng)消息都不包含消息主體(如1××,204和304回應(yīng)),并且不管消息中是否存在實(shí)體標(biāo)題域都以消息標(biāo)題域后的第一行空行表示結(jié)束。2.如果內(nèi)容長(zhǎng)度標(biāo)題域存在,它在字節(jié)中的值就是消息主體的長(zhǎng)度。如果內(nèi)容標(biāo)題域不存在,則假設(shè)值為零。3.服務(wù)器關(guān)閉連接時(shí)。(關(guān)閉連接沒(méi)有用來(lái)表明請(qǐng)求主體結(jié)束,否則可能導(dǎo)致服務(wù)器不能回應(yīng)。注意,RTSP不支持(至少現(xiàn)在)HTTP/1.1的塊傳輸編碼(詳見(jiàn)[H3.6])并且要求有內(nèi)容長(zhǎng)度標(biāo)題域。盡管表示描述長(zhǎng)度動(dòng)態(tài)產(chǎn)生,但由于可獲得了表示描述返回長(zhǎng)度,使得服務(wù)器總是能決定表示描述長(zhǎng)度而不需使用塊傳輸編碼方式。只要有實(shí)體主體就必須有內(nèi)容長(zhǎng)度項(xiàng),這些規(guī)則保證了即使沒(méi)有給出明確長(zhǎng)度也能做出合理的操作。5普通標(biāo)題域有幾種標(biāo)題域是請(qǐng)求與回應(yīng)都要使用的,但并不用于被傳輸?shù)膶?shí)體。這些標(biāo)題只用于被傳輸?shù)南?。General-Header=Date;Section10.6|Pragma;Section10.12普通標(biāo)題域名稱只有在與協(xié)議版本的變化結(jié)合起來(lái)后,才能進(jìn)行可靠的擴(kuò)展。實(shí)際上,新的或?qū)嶒?yàn)中的標(biāo)題域只要能被通訊各方識(shí)別,其語(yǔ)法就可使用,而無(wú)法識(shí)別的標(biāo)題域都將被視為實(shí)體域。6請(qǐng)求從客戶端到服務(wù)器端的請(qǐng)求消息包括,消息首行中,對(duì)資源的請(qǐng)求方法、資源的標(biāo)識(shí)符及使用的協(xié)議。Request=Request-Line;6.1節(jié)*(general-header;5章|request-header;6.2節(jié)|entity-header);8.1節(jié)CRLF[message-body];4.3節(jié)6.1請(qǐng)求隊(duì)列Request-Line=MethodSPRequest-URISPRTSP-VersionCRLFMethod="DESCRIBE";Section10.2|"ANNOUNCE";Section10.3|"GET_PARAMETER";Section10.8|"OPTIONS";Section10.1|"PAUSE";Section10.6|"PLAY";Section10.5|"RECORD";Section10.11|"REDIRECT";Section10.10|"SETUP";Section10.4|"SET_PARAMETER";Section10.9|"TEARDOWN";Section10.7|extension-methodextension-method=tokenRequest-URI="*"|absolute_URIRTSP-Version="RTSP""/"1*DIGIT"."1*DIGIT6.2請(qǐng)求標(biāo)題域request-header=Accept;Section12.1|Accept-Encoding;Section12.2|Accept-Language;Section12.3|Authorization;Section12.5|From;Section12.20|If-Modified-Since;Section12.23|Range;Section12.29|Referer;Section12.30|User-Agent;Section12.41注意:相對(duì)于HTTP/1.1而言,RTSP請(qǐng)求要求絕對(duì)路徑(并包括rtsp或rtspu方案,主機(jī),端口號(hào))。HTTP/1.1要求服務(wù)器理解絕對(duì)URL,但是客戶端需要假設(shè)為主機(jī)請(qǐng)求標(biāo)題域。這樣做完全是為了HTTP/1.0服務(wù)器端向后兼容性,因此RTSP并不需要這樣做。在請(qǐng)求URI中星號(hào)“*”表示此請(qǐng)求不用于其他資源,只用于服務(wù)器本身,并且它只能在使用的方法不要求應(yīng)用于資源時(shí)才能使用。比如:OPTIONS*RTSP/1.0。7回應(yīng)7.1狀態(tài)行完整回應(yīng)消息的第一行就是狀態(tài)行,它依次由協(xié)議版本、數(shù)字形式的狀態(tài)代碼、及相應(yīng)的詞語(yǔ)文本組成,各元素間以空格(SP)分隔,除了結(jié)尾的CRLF外,不允許出現(xiàn)單獨(dú)的CR或LF符。Status-Line=HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF7.1.1狀態(tài)代碼和原因分析狀態(tài)代碼(Status-Code)由3位數(shù)字組成,表示請(qǐng)求是否被理解或被滿足。原因分析是用簡(jiǎn)短的文字來(lái)描述狀態(tài)代碼產(chǎn)生的原因。狀態(tài)代碼用來(lái)支持自動(dòng)操作,原因分析是為人類用戶準(zhǔn)備的??蛻舳瞬恍枰獧z查或顯示原因分析。狀態(tài)代碼的第一位數(shù)字定義了回應(yīng)的類別,后面兩位數(shù)字沒(méi)有具體分類。首位數(shù)字有5種取值可能:o1xx::保留,將來(lái)使用。o2xx:成功-操作被接收、理解、接受(received,understood,accepted)。o3xx:重定向(Redirection)-要完成請(qǐng)求必須進(jìn)行進(jìn)一步操作。o4xx:客戶端出錯(cuò)-請(qǐng)求有語(yǔ)法錯(cuò)誤或無(wú)法實(shí)現(xiàn)。o5xx:服務(wù)器端出錯(cuò)-服務(wù)器無(wú)法實(shí)現(xiàn)合法的請(qǐng)求。HTTP/1.0的狀態(tài)代碼、原因解釋在下面給出。下面的原因解釋只是建議采用,可任意更改,而不會(huì)對(duì)協(xié)議造成影響。完整的代碼定義在第9節(jié)。Status-Code="100";Continue|"200";OK|"201";Created|"250";LowonStorageSpace|"300";MultipleChoices|"301";MovedPermanently|"302";MovedTemporarily|"303";SeeOther|"304";NotModified|"305";UseProxy|"400";BadRequest|"401";Unauthorized|"402";PaymentRequired|"403";Forbidden|"404";NotFound|"405";MethodNotAllowed|"406";NotAcceptable|"407";ProxyAuthenticationRequired|"408";RequestTime-out|"410";Gone|"411";LengthRequired|"412";PreconditionFailed|"413";RequestEntityTooLarge|"414";Request-URITooLarge|"415";UnsupportedMediaType|"451";ParameterNotUnderstood|"452";ConferenceNotFound|"453";NotEnoughBandwidth|"454";SessionNotFound|"455";MethodNotValidinThisState|"456";HeaderFieldNotValidforResource|"457";Invalid|"458";ParameterIsRead-Only|"459";Aggregateoperationnotallowed|"460";Onlyaggregateoperationallowed|"461";Unsupportedtransport|"462";Destinationunreachable|"500";InternalServerError|"501";NotImplemented|"502";BadGateway|"503";ServiceUnavailable|"504";GatewayTime-out|"505";RTSPVersionnotsupported|"551";Optionnotsupported|extension-codeextension-code=3DIGITReason-Phrase=*<TEXT,excludingCR,LF>HTTP狀態(tài)代碼是可擴(kuò)展的,而只有上述代碼才可以被當(dāng)前全部的應(yīng)用所識(shí)別。HTTP應(yīng)用不要求了解全部注冊(cè)的狀態(tài)代碼,當(dāng)然,如果了解了更好。實(shí)際上,應(yīng)用程序必須理解任何一種狀態(tài)代碼,如果碰到不識(shí)別的情況,可根據(jù)其首位數(shù)字來(lái)判斷其類型并處理。另外,不要緩存無(wú)法識(shí)別的回應(yīng)。例如,如果客戶端收到一個(gè)無(wú)法識(shí)別的狀態(tài)碼431,可以安全地假定是請(qǐng)求出了問(wèn)題,可認(rèn)為回應(yīng)的狀態(tài)碼就是400。在這種情況下,用戶代理應(yīng)當(dāng)在回應(yīng)消息的實(shí)體中通知用戶,因?yàn)閷?shí)體中可以包括一些人類可以識(shí)別的非正常狀態(tài)的描述信息。Codereason100Continueall200OKall201CreatedRECORD250LowonStorageSpaceRECORD300MultipleChoicesall301MovedPermanentlyall302MovedTemporarilyall303SeeOtherall305UseProxyall400BadRequestall401Unauthorizedall402PaymentRequiredall403Forbiddenall404NotFoundall405MethodNotAllowedall406NotAcceptableall407ProxyAuthenticationRequiredall408RequestTimeoutall410Goneall411LengthRequiredall412PreconditionFailedDESCRIBE,SETUP413RequestEntityTooLargeall414Request-URITooLongall415UnsupportedMediaTypeall451InvalidparameterSETUP452IllegalConferenceIdentifierSETUP453NotEnoughBandwidthSETUP454SessionNotFoundall455MethodNotValidInThisStateall456HeaderFieldNotValidall457InvalidRangePLAY458ParameterIsRead-OnlySET_PARAMETER459AggregateOperationNotAllowedall460OnlyAggregateOperationAllowedall461UnsupportedTransportall462DestinationUnreachableall500InternalServerErrorall501NotImplementedall502BadGatewayall503ServiceUnavailableall504GatewayTimeoutall505RTSPVersionNotSupportedall551OptionnotsupportallTable1:StatuscodesandtheirusagewithRTSPmethods7.1.2回應(yīng)標(biāo)題域回應(yīng)標(biāo)題域中包括不能放在狀態(tài)行中的附加回應(yīng)信息。該域還可以存放與服務(wù)器相關(guān)的信息,以及在對(duì)請(qǐng)求URI所指定資源進(jìn)行訪問(wèn)的下一步信息。response-header=Location;Section12.25|Proxy-Authenticate;Section12.26|Public;Section12.28|Retry-After;Section12.31|Server;Section12.36|Vary;Section12.42|WWW-Authenticate;Section12.44回應(yīng)標(biāo)題域名只有在與協(xié)議版本的變化結(jié)合起來(lái)后,才能進(jìn)行可靠的擴(kuò)展。實(shí)際上,新的或?qū)嶒?yàn)中的標(biāo)題域只要能被通訊各方識(shí)別,其語(yǔ)法就可使用,而無(wú)法識(shí)別的標(biāo)題域都將被視為實(shí)體域。8實(shí)體如不受請(qǐng)求方法或回應(yīng)狀態(tài)編碼限制,請(qǐng)求和回應(yīng)消息可傳輸實(shí)體,實(shí)體由實(shí)體標(biāo)題域和實(shí)體主體組成,有些回應(yīng)僅包括實(shí)體頭。在此,根據(jù)誰(shuí)發(fā)送實(shí)體、誰(shuí)接收實(shí)體,發(fā)送者和接收者可分別指用戶和服務(wù)器。8.1實(shí)體標(biāo)題域?qū)嶓w標(biāo)題定

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論