簡介:
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...