zoukankan      html  css  js  c++  java
  • RTMP协议01 ---- 握手

    简介

    RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。

    RTMP消息块流和RTMP一起适用于多样性音视频应用程序,从一对一和一对 多向视频点播服务器直接广播到交互式会议应用程序。

    RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。在基于传输层协议的链接建立完成后,RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接。

    握手

     要建⽴⼀个有效的RTMP Connection链接,⾸先要“握⼿”:客户端要向服务器发送C0,C1,C2(按序)三个chunk,服务器向客户端发送S0,S1,S2(按序)三个chunk,然后才能进⾏有效的信息传输。RTMP协议

    本身并没有规定这6个Message的具体传输顺序,但RTMP协议的实现者需要保证这⼏点:

    • 客户端要等收到S1之后才能发送C2
    • 客户端要等收到S2之后才能发送其他信息(控制信息和真实⾳视频等数据) 
    • 服务端要等到收到C0之后发送S1
    • 服务端必须等到收到C1之后才能发送S2
    • 服务端必须等到收到C2之后才能发送其他信息(控制信息和真实⾳视频等数据) 

    理论上是安装如下所图发送:

     实际上,为了减少发送次数,一般是这样的,如下图:

    从以上可看出握手的实际流程为三个步骤:

    1. Client -> Server:C0+C1
    2. Server -> Client:S0+S1+S2
    3. Client -> Server:C2

    第一次握手:

    C0: 就一个字节,表示客户端的版本号

    C1:1536个字节,结构如下

     第二次握手:

    S0:一个字节,表示服务端的版本号

    S1:1536个字节,可以看出,S1和C1相同

    S2:1536个字节,结构如下:

      第三次握手:

    C2:1536个字节,可以看出C2和S2相同

  • 相关阅读:
    HTTP——学习笔记(3)
    HTTP——状态码
    HTTP——学习笔记(2)
    HTTP——学习笔记(1)
    Sqlserver 存储过程
    Sqlserver 函数(例子)
    Sqlserver 函数
    sqlserver字段类型
    redis入门笔记(2)
    redis入门笔记(1)
  • 原文地址:https://www.cnblogs.com/vczf/p/14136359.html
Copyright © 2011-2022 走看看