2018-03-27 RTSP详解

在开发者交流或者面试中,经常会涉及到RTSP、RTP、RTCP、TCP、UDP等一些概念,这些虽然属于计算机网络中的基本概念,但是更多的人知道的其实就是TCP和UDP,对RTP、RTCP和RTSP,反而会陌生。

在OSI(开放系统互连)七层模型中,RTP/RTCP,TCP,UDP同属传输层,而RTSP则应属于应用层,这样就可以想到,RTSP是使用传输层协议实现的,而RTP较为特殊,可以看作传输层的字层,可以基于TCP也可以基于UDP实现,所以有时候也会被理解为应用层的协议,为区别于RTSP协议,我比较认同把它定义为传输层协议。


Figure-1 RTSP和RTP/RTCP应用图解

Figure-2 RTP/RTCP与其他协议关系

RTP

Figure-3 RTP数据报格式

以下数据报字段说明:

  • 版本号(V): 2比特,用来标志使用的RTP版本。
  • 填充位(P): 1比特,如果该位置位,则该RTP包的尾部就包含附加的填充字节。
  • 扩展位(X): 1比特,如果该位置位的话,RTP固定头部后面就跟有一个扩展头部。
  • CSRC计数器(CC): 4比特,含有固定头部后面跟着的CSRC的数目。
  • 标记位(M): 1比特,该位的解释由配置文档(Profile)来承担.
  • 载荷类型(PT): 7比特,标识了RTP载荷的类型,包括所采用的编码算法、采样频率、承载通道等。例如,类型2表明该RTP数据包中承载的是用ITU G.721算法编码的语音数据,采样频率为8000Hz,并且采用单声道。
  • 序列号(SN): 16比特,发送方在每发送完一个RTP包后就将该域的值增加1,接收方可以由该域检测包的丢失及恢复包序列。序列号的初始值是随机的。
  • 时间戳:32比特,记录了该包中数据的第一个字节的采样时刻。时间戳是去除抖动和实现同步不可缺少的。接收方根据时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序实现。
  • 同步源标识符(SSRC):32比特,同步源就是指RTP包流的来源。在同一个RTP会话中不能有两个相同的SSRC值。该标识符是随机选取的 RFC1889推荐了MD5随机算法。
  • 贡献源列表(CSRC List): 0~15项,每项32比特,用来标志对一个RTP混合器产生的新包有贡献的所有RTP包的源。由混合器将这些有贡献的SSRC标识符插入表中。SSRC标识符都被列出来,以便接收端能正确指出交谈双方的身份。

以下图片中为RTP基于TCP的传输实例


Figure-4 RTP基于TCP的实例(1)

Figure-4 RTP基于TCP的实例(2)

RTCP

RTCP协议的功能是通过不同的RTCP数据报来实现的,如图5:


Figure-5 RTCP协议数据类型

主要有如下几种类型:

  • SR:发送端报告,所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。
  • RR:接收端报告,所谓接收端是指仅接收但不发送RTP数据报的应用程序或者终端。
  • SDES:源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电话号码等,此外还具有向会话成员传达会话控制信息的功能。
  • BYE:通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自己将退出会话。
  • APP:由应用程序自己定义,解决了RTCP的扩展性问题,并且为协议的实现者提供了很大的灵活性。

不同类型对应不同的数据报格式,因为不是很了解,所以不展开,感兴趣的话可以参考文末链接

RTSP

RTSP,是为有效地在IP网络上传输流媒体数据而提出的应用层协议。RTSP提供一种可扩展的框架,能够提供可控制的,按需传输的实时数据,比如音频和视频文件。源数据可以包括现场数据的反馈和存储的文件。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数 据,RTSP的作用相当于流媒体服务器的远程控制。传输数据可以通过传输层的TCP/UDP协议,RTSP也提供了基于RTP传输机制的一些有效的方法。
RTSP通常工作于可靠的传输协议TCP上,用于发起/结束流媒体传输,而RTP一般工作于UDP上,利用的是UDP低延时的特点,UDP不是可靠传输,可以使用RTCP来实时监控数据传输和服务质量。

RTSP消息格式:

RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种消息的格式不同。

  • 请求消息
    [方法][URI][RTSP版本][CR][LF]
    [消息头][CR][LF]
    [消息体][CR][LF]
    • 方法: 包括OPTIONS回应中所有的命令;
    • URI是接收方(服务端)的地址;
    • RTSP版本: 一般都是RTSP/1.0。
      每行后面的CR LF表示回车换行,需要接收端有相应的解析,最后一个消息头需要有两个CR LF
      以下是抓包实例,消息方法为DESCRIBE:


      Figure-6 消息方法DESCRIBE的实例
  • 回应消息
    [RTSP版本][状态码][解释][CR][LF]
    [消息头][CR][LF]
    [消息体][CR][LF]
    • RTSP版本一般都是RTSP/1.0;
    • 状态码是一个数值,200表示成功;
    • 解释是与状态码对应的文本解释。

以下是抓包实例,返回一个错误码401,Unauthorized(未授权),因为在发送DESCRIBE消息时,没有携带用户名密码


Figure-7 消息方法DESCRIBE消息回应实例

RTSP客户端与服务端交互过程可以参考雷大神的博文,RTSP协议学习笔记

RTSP(Real Time Streaming Protocol,即实时码流协议)
RTP(Real-time Transport Protocol,即实时传输协议)
RTCP(Real-time Transport Control Protocol,即实时传输控制协议),RTP的配套协议,服务于RTP

1.RTCP数据报
2.Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程
3.RTP基于UDP和TCP分别实现的解析
4.流媒体协议RTSP、HTTP、HTTPS、SDP四种区别解析
5.RTSP协议学习笔记

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容