RTSP协议解析-概述
協議簡介
RTSP(Real Time Streaming Protocol),RFC2326,實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議。RTSP對流媒體提供了諸如暫停,快進等控制,而它本身并不傳輸數據,數據的傳輸通過rtp協議。RTSP的作用相當于流媒體服務器的遠程控制。服務器端可以自行選擇使用TCP或UDP來傳送串流內容該協議定義了一對多應用程序如何有效地通過 IP 網絡傳送多媒體數據。RTSP在體系結構上位于RTP和RTCP之上,它使用TCP或UDP完成數據傳輸。
RTSP使用場景安防監控攝像頭。在監控領域中RTSP使用比較廣泛,監控攝像頭相當于一個RTSP服務器,App是一個RTSP客戶端,這樣我們可以通過手機實時查看攝像頭信息。同時還可以通過RTSP協議實現暫停、錄制功能。
客戶端-服務端協議交互
上圖描述了客戶端-服務端RTSP交互中必須的流程,還有些可選的方法像PAUSE、RECORD、REDIRECT、SET_PARAMETER等方法也可以在我們需要的時候調用。
客戶端-服務端交互抓包
rtsp協議交互抓包圖:
rtp抓包圖:
上面介紹了rtsp 客戶端-服務端交互的過程及抓包分析。這里的抓包軟件使用的是WireShark; 像我們平常使用更多的是Charles,它在抓取Http、Https協議挺不錯的,但Charles在抓取流媒體協議RTMP、RTSP、RTP等的時候就不是很方便了。
了解一個協議,核心就是掌握其消息格式以及協議交互流程。上面介紹了RTSP協議的交互流程,下面重點分析下每一步的消息格式。
RTSP協議格式
RTSP中所有的操作都是通過服務器和客戶端的消息應答機制完成的,其中消息包括請求和應答兩種,RTSP是對稱的協議,客戶機和服務器都可以發送和回應請求。RTSP是一個基于文本的協議,它使用UTF -8編碼(RFC2279)和ISO10646字符序列,采用RFC882定義的通用消息格式,每個語句行由CRLF結束。RTSP的消息包括請求和應答兩類。
請求消息
消息說明:請求消息包括請求行、請求頭、請求體;與Http的消息格式類似;RTSP的請求體部分很少使用,這里不再進行講解,后面我們抓包分析的時候也會看到請求體基本都是無數據的。
方法:表示RTSP的請求方法OPIONS、DESCRIBE、SETUP、PLAY、TEARDOWN等。
URL:表示接收方地址。例如:rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
版本:RTSP的版本號,一般為 RTSP/1.0
CR:表示回車
LF:表示換行
請求頭:以key:value 的形式封裝請求頭數據;
我們通過ffplay播放 rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.m,wireshark 抓包一個請求消息:
這里就簡單分析下文本部分,16進制數據等后面再詳細分析。
消息行:
消息頭:
CSeq: 表示序列號,由于OPTIONS方法是RTSP請求的第一個方法,所以序列號為1;
user-Agent: 表示代理;
回應消息
回應消息的格式如下圖所示:
消息說明:回應消息也是包括回應行、回應頭、回應體;與Http的回應消息格式也是類似;RTSP的回應體部分很少使用,這里不再進行講解,后面我們抓包分析的時候也會看到回應體基本都是無數據的。
版本:RTSP的版本號,一般為 RTSP/1.0
狀態碼:表示請求狀態,同http的返回狀態,如200,表示OK。
狀態碼由三位數組成,表示方法執行的結果,定義如下:
短語:就是狀態碼的解釋;
回應頭:以key:value 的形式封裝回應頭數據;
wireshark 抓包一個OPTIONS回應消息:
OPTIONS回應消息參考上面的介紹自行分析。
總結
文章主要是介紹了RTSP消息格式以及協議交互流程,并通過抓包的方式分析RTSP具體的交互過程及交互協議的分析。后面有時間再具體分析每一個具體RTSP消息協議、SDP、RTP、RTCP及場景實踐。
總結
以上是生活随笔為你收集整理的RTSP协议解析-概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机的发展史与计算机硬件组成
- 下一篇: Mac地址修改器:WiFiSpoof M