RTMP協議分析及推流過程

2021-09-01 13:17:37 字數 1831 閱讀 8271

簡介:

1.rtmp(實時訊息傳輸協議)是adobe 公司開發的乙個基於tcp的應用層協議。

2.rtmp協議中基本的資料單元稱為訊息(message)。

3.當rtmp協議在網際網路中傳輸資料的時候,訊息會被拆分成更小的單元,稱為訊息塊(chunk)。

rtmp 握手(handshake):

1.握手開始於客戶端傳送c0、c1塊。伺服器收到c0或c1後傳送s0和s1。

2.當客戶端收齊s0和s1後,開始傳送c2。當伺服器收齊c0和c1後,開始傳送s2。

3.當客戶端和伺服器分別收到s2和c2後,握手完成。

在實際工程應用中,一般是客戶端先將c0, c1塊同時發出,伺服器在收到c1 之後同時將s0, s1, s2發給客戶端。之後客戶端向伺服器端傳送c2塊,簡單握手完成。

建立網路連線(netconnection):

1. 客戶端傳送命令訊息中的「連線」(connect)到伺服器,請求與乙個服務應用例項建立連線。

2. 伺服器接收到連線命令訊息後,傳送確認視窗大小(window acknowledgement size)協議訊息到客戶端,同時連線到連線命令中提到的應用程式。

3. 伺服器傳送設定頻寬協議訊息到客戶端。

4. 客戶端處理設定頻寬協議訊息後,傳送確認視窗大小(window acknowledgement size)

協議訊息到伺服器端。

5. 服務端向客戶端傳送「流開始」(stream begin)。

6. 伺服器傳送命令訊息中的「結果」(_result),通知客戶端連線的狀態。

建立網路流(create stream):

1. 客戶端傳送命令訊息中的「建立流」(createstream)命令到伺服器端。

2. 伺服器端接收到「建立流」命令後,傳送命令訊息中的「結果」(_result),通知客戶端流的狀態。

小結:

關係圖:

下面用wireshark 抓包來分析一下過程:

rtmp 訊息結構:

rtmp訊息塊:

在網路上傳輸資料時,訊息需要被拆分成較小的資料塊,才適合在相應的網路環境上傳輸。rtmp協議中規定,訊息在網路上傳輸時被拆分成訊息塊(chunk)。

rtmp 訊息分塊:

RTMP協議推流

rtmp協議中基本的資料單元稱為訊息,當rtmp協議通過網路傳送資料的時候,訊息將會被拆分成更小的資料單元,稱為訊息快 chunk 訊息是rtmp協議中最基本的協議資料單元,不同message type id代表不同的訊息型別,有不同的功能!下面是rtmp報文的基本結構!要使用rtmp協議進行推流,...

RTMP協議分析

rtmp協議封包 由乙個包頭和乙個包體組成,包頭可以是4種長度的任意一種 12,8,4,1 byte s 完整的rtmp包頭應該是12bytes,包含了時間戳,amfsize,amftype,streamid資訊,8位元組的包頭只紀錄了時間戳,amfsize,amftype,其他位元組的包頭紀錄資訊...

RTMP協議分析

用途 大小 byte 含義head type1包頭 timer 3時間戳 amfsize 3資料大小 amftype 1資料型別 streamid 4流id 一 head type 包頭型別 head type占用rtmp包的第乙個位元組,這個位元組裡面記錄了包的型別和包的channelid。hea...