2.实时传输协议RTP(Real-Time Transport Protocol):
RTP是针对Internet上多媒体数据流的一 个传输协议, 由IETF(Internet工程任务组)做为RFC1889发布。RTP被定义为在一对一或一对多的传输状况下工做,其目的是提供时间信息和实现流同 步。RTP的典型应用创建在UDP上,但也能够在TCP或ATM等其余协议之上工做。RTP自己只保证明时数据的传输,并不能为按顺序传送数据包提供可靠 的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。
2.1 RTP工做机制
威胁多媒体数据传输的一个尖锐的问题就 是不可预料数据到达时间。可是流媒体的传输是须要数据的适时的到达用以播放和回放。rtp协议就是提供了时间标签,序列号以及其它的结构用于控制适时数据 的流放。在流的概念中”时间标签”是最重要的信息。发送端依照即时的采样在数据包里隐蔽的设置了时间标签。在接受端收到数据包后,就依照时间标签按照正确 的速率恢复成原始的适时的数据。不一样的媒体格式调时属性是不同的。可是rtp自己并不负责同步,rtp只是传输层协议,为了简化运输层处理,提升该层的 效率。将部分运输层协议功能(好比流量控制)上移到应用层完成。同步就是属于应用层协议完成。它没有运输层协议的完整功能,不提供任何机制来保证明时地传 输数据,不支持资源预留,也不保证服务质量。rtp报文甚至不包括长度和报文边界的描述。同时rtp协议的数据报文和控制报文的使用相邻的不一样端口,这样 大大提升了协议的灵活性和处理的简单性。
rtp协议和udp两者共同完成运输层协议功能。udp协议只是传输数据包,无论数据包传输的时间顺序。 rtp的协议数据单元是用udp分组来承载的。在承载rtp数据包的时候,有时候一帧数据被分割成几个包具备相同的时间标签,则能够知道时间标签并非必 须的。而udp的多路复用让rtp协议利用支持显式的多点投递,能够知足多媒体会话的需求。rtp协议虽然是传输层协议可是它没有做为osi体系结构中单 独的一层来实现。rtp协议一般根据一个具体的应用来提供服务,rtp只提供协议框架,开发者能够根据应用的具体要求对协议进行充分的扩展。
2.2 RTP协议的报文结构
RTP头格式如图2所示:
开 始12个八进制出如今每一个RTP包中,而CSRC标识列表仅出如今混合器插入时。各段含义以下:
①版本(V)
2位,标识RTP版本。
② 填充标识(P)
1位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷。填充的最后一个八进制包含应该
忽略的八进制计数。某些加 密算法须要固定大小的填充字,或为在底层协议数据单元中携带几个RTP包
。
③扩展(X)
1位,如设置扩展位,固定头后跟 一个头扩展。
④CSRC计数(CC)
4位,CSRC计数包括紧接在固定头后CSRC标识符个数。
⑤标记(M)
1 位,标记解释由设置定义,目的在于容许重要事件在包流中标记出来。设置可定义其余标示位,或通
过改变位数量来指定没有标记位。
⑥ 载荷类型(PT)
7位,记录后面资料使用哪一种 Codec , receiver 端找出相应的 decoder 解碼出來。
由 上图可知,若是只有系列号,并不能完整按照顺序的将data播放出来,由于若是data中间有一段是 没有资料的,只有系列号的话会形成错误,需搭 配上让它知道在哪一个时间将data正确播放出来,如此 咱们才能播放出正确无误的信息。 ⑨×××C 32位,×××C段标识 同步源。此标识不是随机选择的,目的在于使同一RTP包链接中没有两个同步源有 相同的×××C标识。尽管多个源选择同一个标识的几率很低,全部 RTP实现都必须探测并解决冲突。如 源改变源传输地址,也必须选择一个新×××C标识以免插入成环行源。 ⑩CSRC列表 0 到15项,每项32位。CSRC列表表示包内的对载荷起做用的源。标识数量由CC段给出。如超出15个做 用源,也仅标识15个。CSRC标识由混 合器插入,采用做用源的×××C标识。