簡單分析RTMP規範


參考了網上很多文章,
完整的協議規範包含的內容較多,可以在網上搜索相應的文章。

下面是簡單的分析,對於基本的結構有一個基本的瞭解。

1.RTMP在TCP/IP 體系結構中,屬於應用層協議。
RTMP 協議有多個變種:
        1. 工作在 TCP 協議之上,並使用默認端口號 1935 的明文協議。
        2. RTMPS 使用 TLS/SSL 連接的 RTMP 協議。
        3. RTMPE 使用 Adobe 自己的安全機制的加密 RTMP。雖然它的實現細節是私有的,但使用的是行業標準加密原語。RTMPE 的設計是有缺陷的,它本身並不提供實際的安全。
        4. RTMPT 封裝在 HTTP 請求內部以穿越防火牆的協議。RTMPT 常用於建立 TCP 端口 80 和 443 的請求以繞開很多公司的流量過濾。封裝的會話中可能會攜帶純 RTMP、RTMPS 或者 RTMPE 包。

RTMP協議中的數據單元稱爲消息(Message)。使用RTMP協議傳輸數據的時候,消息被拆成消息塊(Chunk)

2.消息

RTMP消息分成兩個部分,頭和它的負載。

  2.1 消息頭

消息頭包含以下內容:
MessageType(消息類型)
Payload Length(負載長度)
Timestamp(時間戳)

Message Stream Id(消息流ID):


其中消息類型用一個字節的字段來表示。ID1-7 用於協議控制
Message Type ID 8-9分別表示音頻和視頻
MessageType ID 15-20用於AMF編碼命令的發送,負責用戶和服務器之間的交互,如播放,暫停等。

3 消息塊
在傳輸數據的時候,消息被拆分成較小的數據塊,即消息塊。消息塊由消息塊首部(Chunk Header) 和 消息塊數據組成。
消息塊首部由三部分組成;
Basic header
Chunk Message Header 
Extended TimeStamp(這個只有當時間戳溢出時纔會出現)
4.消息分塊
消息分塊只是 把Msg 的Data部分分成消息塊。

塊大小是可配置的。這個可以在7.1節中描述的塊消息中完成。最大塊是65535字節,最小塊是128字節。塊越大CPU使用率越低,但是也導致大的寫入,在低帶寬下產生其他內容的延遲。塊大小對每個方向都保持獨立。




疑問:
消息被分成消息塊的時候,只是把Msg Body分成了塊,
消息頭沒有處理,
這個消息頭如何傳遞?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章