RTMP协议详解及Wiresahrk抓包分析(三)

简介: RTMP协议详解及Wiresahrk抓包分析

RTMP协议详解及Wiresahrk抓包分析(二)https://developer.aliyun.com/article/1472345


四、RTMP 流媒体播放过程

1、简介

下面分析打开一个 RTMP 流媒体到视音频数据开始播放的全过程。

RTMP 协议规定, 播放一个流媒体有两个前提步骤:

  • 第一步, 建立一个网络连接( NetConnection);
  • 第二步, 建立一个网络流( NetStream)。

其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示:

播放一个 RTMP 协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。RTMP 连接都是以握手作为开始的。建立连接阶段用于建立客户端与服务器之间的“ 网络连接” ;建立流阶段用于建立客户端与服务器之间的“ 网络流”;播放阶段用于传输视音频数据。

我们分析上面 wireshark 抓到的报文。

2、握手(HandShake)

rtmp 连接从握手开始。它包含三个固定大小的块。客户端发送的三个块命名为 C0,C1,C2;服务端发送的三个块命名为 S0,S1,S2。

握手序列如下:

  • 握手开始于客户端发送 C0、 C1 块。 服务器收到 C0 或 C1 后发送 S0 和 S1。
  • 当客户端收齐 S0 和 S1 后, 开始发送 C2。 当服务器收齐 C0 和 C1 后, 开始发送 S2。
  • 当客户端和服务器分别收到 S2 和 C2 后, 握手完成。

握手示意图如下图所示:

结合上面理论对比我们抓到的报文:

①、客户端向服务器发送握手 C0+C1

②、服务器向客户端回应握手 S0+S1+S2

③、客户端向服务器发送握手 C2

抓包总结:

  • 第一步:客户端发送 C0+C1
  • 第二步:服务端发送 S0+S1+S2
  • 第三步:客户端发送 C2

疑问: C2 和 S2, 到底哪个先发送? ? ? 【协议没有具体规定】

3、建立网络连接(NetConnection)

包括以下步骤:

  • ①、客户端发起连接请求
  • ②、服务器设置客户端的应答窗口大小
  • ③、服务器设置客户端的发送带宽大小
  • ④、服务器设置客户端的接收块大小
  • ⑤、服务器响应连接结果
  • ⑥、客户端设置服务器的接收块大小

①、客户端发起连接请求

客户端发送命令消息中的“连接” (connect)到服务器, 请求与一个服务应用实例建立连接。

②、服务器设置客户端的应答窗口大小、发送带宽大小、接收块大小

服务器接收到连接命令消息后,发送确认窗口大小、发送带宽大小、接收块大小(Window Acknowledgement Size)协议消息到客户端,同时连接到连接命令中提到的应用程序。

③、服务器响应创建流结果

服务器发送命令消息中的 “结果” (_result), 通知客户端连接的状态

④、客户端设置服务器的接收块大小

客户端发送确认窗口大小(Window Acknowledgement Size)协议消息到服务器端。

4、建立网络流(NetStream)

包括以下步骤:

  • 客户端发送命令消息中的“创建流” (createStream) 命令到服务器端。
  • 服务器端接收到“创建流” 命令后, 发送命令消息中的“结果” (_result), 通知客户端流的状态
  • 客户端向服务器获取指定流的长度

①、客户端发起创建流请求

②、服务器响应创建流结果

③、客户端向服务器获取指定流的长度

5、播放(Play)

  • 客户端发送命令消息中的“播放” (play) 命令到服务器。
  • 服务器发送用户控制消息中的 “stream begin” ,告知客户端流 ID
  • 服务器发送客户端要播放的音频和视频数据

①、客户端发送播放请求

②、服务器发送 stream begin

③、服务器发送音视频数据给客户端

目录
相关文章
|
4月前
|
存储 网络协议 网络安全
RTSP协议抓包及讲解(三)
RTSP协议抓包及讲解
66 1
|
11月前
|
缓存 移动开发 网络协议
WebSocket 协议原理抓包分析
WebSocket 协议原理抓包分析
482 0
|
4月前
|
存储 网络协议 网络安全
RTMP协议详解及Wiresahrk抓包分析(一)
RTMP协议详解及Wiresahrk抓包分析
282 2
|
4月前
|
移动开发 网络协议 Windows
RTSP协议抓包及讲解(二)
RTSP协议抓包及讲解
71 1
|
4月前
|
存储 编解码 内存技术
RTMP协议详解及Wiresahrk抓包分析(二)
RTMP协议详解及Wiresahrk抓包分析
100 0
|
4月前
|
存储 编解码 移动开发
RTSP协议抓包及讲解(一)
RTSP协议抓包及讲解
117 0
|
4月前
|
网络协议
Wireshark中的http协议包分析
Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网的数据通信的基础。 下图是访问百度页面的头部文件的Wireshark数据包截取图,以下几点说明如下:
Wireshark中的http协议包分析
|
11月前
|
网络协议 索引
HTTP/2 协议(帧、消息、流简单的抓包分析)
HTTP/2 协议(帧、消息、流简单的抓包分析)
450 0
|
存储 XML 编解码
深入理解rtmp(四)之协议实现分析
接下来要实现connect,createStream,play,..,为了效率和篇幅,我们直接分析srs-librtmp的实现.srs-librtmp是从srs作者为srs服务实现的客户端库(The client library srs-librtmp of SRS),其实不止客户端,也实现了一个简单的server功能.
259 0
|
移动开发 前端开发 iOS开发
记一次使用Fiddler抓包工具抓取Https协议数据的踩坑过程
记一次使用Fiddler抓包工具抓取Https协议数据的踩坑过程
440 0