IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> RTSP协议解析-概述 -> 正文阅读

[网络协议]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进制数据等后面再详细分析。
消息行:

  1. 方法:OPTIONS
  2. URL:rtsp://wowzaec2demo.streamlock.net:554/vod/mp4:BigBuckBunny_115k.mov
  3. 版本:RTSP/1.0
    消息头:
    CSeq: 表示序列号,由于OPTIONS方法是RTSP请求的第一个方法,所以序列号为1;
    user-Agent: 表示代理;

回应消息

回应消息的格式如下图所示:
在这里插入图片描述

消息说明:回应消息也是包括回应行、回应头、回应体;与Http的回应消息格式也是类似;RTSP的回应体部分很少使用,这里不再进行讲解,后面我们抓包分析的时候也会看到回应体基本都是无数据的。
版本:RTSP的版本号,一般为 RTSP/1.0
状态码:表示请求状态,同http的返回状态,如200,表示OK。
状态码由三位数组成,表示方法执行的结果,定义如下:

  1. 1XX:保留,将来使用;
  2. 2XX:成功,操作被接收、理解、接受(received,understand,accepted);
  3. 3XX:重定向,要完成操作必须进行进一步操作;
  4. 4XX:客户端出错,请求有语法错误或无法实现;
  5. 5XX:服务器出错,服务器无法实现合法的请求。
    短语:就是状态码的解释;
    回应头:以key:value 的形式封装回应头数据;
    wireshark 抓包一个OPTIONS回应消息:
    在这里插入图片描述

OPTIONS回应消息参考上面的介绍自行分析。

总结
文章主要是介绍了RTSP消息格式以及协议交互流程,并通过抓包的方式分析RTSP具体的交互过程及交互协议的分析。后面有时间再具体分析每一个具体RTSP消息协议、SDP、RTP、RTCP及场景实践。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:44:27  更:2021-09-14 13:46:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 13:08:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计