实时传输协议RTP/RTCP与SIP协议

RTP/RTCP

一、简介

RTP(Real-time Transport Protocol):实时传输协议;
RTCP(Real-time Transport Control Protocol):实时传输控制协议;
他们是IP协议族中用于实时语音,视频数据传输的标准协议。

RTP标准定义了两个子协议,RTP和RTCP
数据传输协议RTP,用于实时 传输数据。该协议提供的信息包括:时间戳(用于同步),序列号(用于丢包和重排序检测),以及负载格式(用于说明数据的编码格式)。
控制协议RTCP,用于QoS 反馈和同步媒体流。相对于RTP来说,RTCP所占的宽带非常小,通常只有5%。

为什么要使用RTP?
一提到流媒体传输,一谈到什么视频监控,视频会议,语音电话(VOIP),都离不开RTP协议的应用。那为何我们使用RTP而不是TCP,UDP或者其他的网络协议不能达到我们的要求呢?
像TCP这样的可靠传输协议,通过超时和重传机制来保证传输数据流中的每一个bit的正确性,但这样会使得无论从协议的实现还是传输的过程都变得非常的复杂。而且,当传输过程中有数据丢失的时候,由于对数据丢失的检测(超时检测)和重传,会使数据流的传输被迫暂停和延时。或许你会说,我们可以利用客户端构造一个足够大的缓冲区来保证显示的正常,这种方法对于从网络播放音视频来说是可以接受的,但是对于一些需要实时交互的场合(如视频聊天,视频会议等),如果这种缓冲超过了200ms,将会产生难以接受的实时性体验。

那为什么RTP可以解决上述问题呢?RTP协议是一种基于UDP的传输协议,RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。这样,对于那些丢失的数据包,不存在由于超时检测而带来的延时,同时,对于那些丢弃的包,也可以由上层根据其重要性选择性的重传。

二、RTP的工作机制

当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对相邻的端口组成,有两个端口:一个给RTP包(偶数的UDP端口),一个给RTCP包(偶数的UDP端口+1),使得RTP/RTCP数据能够正确发送。 RTP的发送过程如下,接收过程则相反。
RTP协议从上层接收流媒体信息码流(如H.263),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP数据包。

RTP为具体的应用提供了非常大的灵活性,它将传输协议与具体的应用环境、具体的控制策略分开,传输协议本身只提供完成实时传输的机制,开发者可以根据不同的应用环境,自主选择合适的配置环境、以及合适的控制策略。
控制策略指的是你可以根据自己特定的应用需求,来实现特定的一些RTP控制算法,比如前面提到的丢包的检测算法,丢包的重传策略,一些视频会议应用等;
合适的配置环境 主要指RTP的相关配置和负载格式的定义。RTP协议为了广泛地支持各种多媒体格式(如 H.264, MPEG-4, MJPEG, MPEG),没有在协议中体现出具体的应用配置,而是通过profile配置文件以及负载类型格式说明文件的形式来提供。

RTP/RTCP的不足之处

RTP和RTCP相结合虽然保证了实时数据的传输,但也有自己的缺点。最显著的是当有许多用户一起加入会话进程的时候,由于每个参与者都周期发送RTCP信息包,导致RTCP包泛滥(flooding)

补充知识: H.263是由ITU-T(国际电信联盟)制定的视频会议用的低码率视频编码标准,属于视频编解码器。 目前H.263可用于H.323(基于RTP/IP网络的视频会议系统–电路交换),H.320(基于综合业务数字网的视频会议系统),RTSP(流式媒体传输系统)和SIP(基于因特网的视频会议)
H.323是国际电信联盟(ITU)用于音频,视频和在数据包(IP)网络上共享数据的总括标准。这个标准已经广泛应用并且拥有了巨大的市场份额。
SIP(会话起始协议)是IETF(互联网工程任务组)制定的多媒体信号协议。由于这个协议具有简单和模块化特点,这个协议正在受到关注,但是,目前为止的商业性应用还很少。
企业一般都把SIP解决方案与H.323(或者TMD协议)协议一起部署,以便保护投资,保证更有效地向新技术转变,向能够从中受益的用户提供SIP应用。
两个协议的相同之处:
H.323和SIP协议原来都是用于在IP网络上提供多媒体服务的。这两个协议都在IP网络上运行,使用TCP和UDP会话发出信号并且使用RTP(实时协议)传输语音/视频流。这两种协议都不产生新的编码/解码方式,而是利用现有的其它协议(如G.711和G.729)。
SIP同HTTP和SMTP一样,是一种基于文本的协议。许多程序员都非常了解这个协议。他们发现SIP协议非常简单并且很容易排除故障。H.323协议是用二进制代码编写的,没有丰富经验和开发工具的程序员都不熟悉这个协议。
这两个协议之间的主要区别是,SIP协议用来建立和断开媒体会话,而H.323协议用来具体指定用哪一个协议提供媒体服务。使用H.323协议,媒体本身是不依赖于信号传输协议的。

SIP

SIP(Session Initiation Protocol)是一个会话层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以好似Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
SDP作为消息体的在SIP交互中负责双方媒体协商,支持能力的协商。 另外,SIP使用RTP/RTCP的传输参数支持语,视频和数据的参数。因此,SDP和RTP/RTCP 是创建SIP媒体会话的最基本的要求。

任何协议都有其规范的语法结构,SIP协议也是一样的。它的基本语法结构和HTTP的HTML语法类似。
.请求消息格式包括三个主要部分:Request-Line, Header 和 Message-Body
SIP头消息(Header)主要目的是对呼叫方到被呼叫方的sip消息进行路由管理,信令消息中包含如下:
Request-line—它由请求类型,目的地的SIP URL,或下一跳(next hop),还有SIP版本构成等。
消息体(Message-Body)—SIP消息体是一个可选项。SIP消息中的消息头和消息体通过空白行来加以区分。

.响应消息格式包括三个主要部分:Status-Line,Header和Message-Body
如果SIP请求中创建的会话中包含了会话描述的具体消息内容,会话描述中包含了双方的媒体类型和编码等,那么,消息体重将会作为SDP包含这些会话描述的消息内容。

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值