sip作为互联网中的一个网络会话协议,管理整个会话过程,自然也支持过程中需要的一些网络传输协议。sip是应用层协议,想要在网络中进行信息传递,就避免不了与网络中各层的协议产生关联,用户代理发送的请求或响应可通过任何传输协议进行传输发送,比如RTP、RTCP、UDP

1.SDP协议

SDP(Session Description Protocol)会话描述协议,与sip配合使用时处在sip的正文部分,主要负责媒体协商,也就是协商RTP等传输协议所要用到的IP地址、端口号、媒体类型(视频、语音、文本等)等信息,当然也包括所运用的传输协议,所谓描述就是描述多媒体参与会话的参数,确保参与会话的双方或多方具有一系列共同的参数(比如传输的媒体类型、传输方式、端口是否一致)。

sip协议的信令消息包含头消息和消息体两个部分,中间一般用空白行分隔开。SDP作为消息体部分,包含了很多包括头消息内容在内的参数设置,因此SDP是sip会话的最基本的要求。

sip消息格式包括请求消息格式和响应消息格式,请求消息格式包括request-line、header和message-body,响应消息格式包括staus-line、header和message-body。

2.RTP协议

RTP(Real-time Transport Protocol)是传输层的实时传输协议,基于UDP协议之上,主要用于支持音视频数据传输。RTP协议主要提供了音视频在传输层中的标准数据包格式,具体就是在音视频数据前加上RTP头,这样就形成了RTP数据包,然后接收方按照接收到的RTP包以帧为单位组成音视频数据,比如h265的裸码流打包、ps格式或者ts格式封装的数据包。

RTP头固定长度为12字节,其中包括的字段如下:

*PT(8位)指明有效荷载的类型(比如音频、图像、文本等),方便接收方对消息的解析;

*sn(sequence number,16位)字段的初始值是随机的,在发送方每发送完一个RTP包后,其的值就加1,为接收方提供检查包的丢失情况和恢复包序列的顺序,每帧的最后一个包都会被打上mark标记,以此区别每个帧;

*SSRC同步源(同一时刻到达接收端的RTP包来源)标识符,用于区别多路不同的音视频媒体流;

*V版本(占2位)、P填充(占1位,数据加密时使用)、X扩展(占1位,很少使用扩展头)、CC参与源数量(占4位)、M标记(占1位,可表示将该RTP包作为视频流每帧的开始、结束的标志)、tamestamp时间戳(32位,表示RTP包之间的时间关系)和CSRC字段。

RTP本身并不确保网络底层的可靠性,也不保证传送或防止无序传送,更不提供按时发送机制或其他服务质量(QoS)保证,RTP只是负责音视频媒体数据的传输,提供时间标志、序列号以及其他能够保证在实时数据传输时处理时间的字段。所以RTP就需要RTCP的帮忙,解决一些它解决不了的问题。

3.RTCP协议

RTCP(Real-time Transport Control Protocol)是为RTP的服务质量提供反馈(保证音视频质量)的实时传输控制协议。除此之外,RTCP还收集并传输相关媒体连接的统计信息,比如传输字节数、传输分组数、丢失分组数、时延抖动、单向和双向网络延迟等参与媒体之间的控制数据。网络应用程序可以通过RTCP的信息来提高服务质量。

RTCP头中包含有与关联RTP一样的时间戳,所以RTCP还可以实现一次会话中不同RTP数据包(媒体流)之间的同步,因为不同媒体流的时间戳的粒度不一样,所以RTCP可以将关联RTP头中的时间戳与音频或视频的采样时钟关联起来,接收方就根据该关联来同步音频和视频的播放。

RTCP的这些功能的具体实现形式来自于RTCP头中8位的报文类型字段,不同字段值表示不同的RTCP报文。比如发送报告(SR),发送方每发送一个RTP报文,也会发送一个与该RTP关联的SR报文,主要是告诉接收方当前RTP报文的发送情况,包括服务质量(QoS)保证、参与者之间的控制数据信息、时间戳等。接收报文(RR),接收方每接收到一个RTP报文,就会返回一个与该RTP关联的RR报文,告诉发送方当前RTP报文的接收情况,反馈QoS相关数据。根据RTCP收集并传输的相关媒体连接的统计信息,了解当前网络等情况,以此决定数据传输速率等。除此之外还有发送端描述报告(SDES)、结束(BYE)等报文类型。

sip篇——SDP、RTP、RTCP协议-编程之家

RTCP不传输媒体流,而是为负责传输数据的RTP提供信道外的控制。RTCP解决了服务质量和保证传送的问题,但不保证传输数据的安全性,不提供数据加密或身份认证,所以还得SRTCP&SRTP(Secure Real-time Transport control Protocol&Secure Real-time Transport Protocol)安全实时传输控制协议的帮助,负责数据加密、消息认证、数据完整性保证和重放保护。

4.总结

RTP协议主要是提供了一个标准数据包(报文)格式,然后按照该格式将应用层发送方的音视频数据流进行封准后形成RTP报文,再通过UDP、IP和其他底层协议来实现该RTP报文的传输。具体为多媒体数据一般由文本、音频、视频等数据流组成,而这些数据流会以sip消息格式(消息体为SDP)被送到RTP库软件,RTP按照数据流之间的关系将其压缩编码后复用到RTP报文中,然后连同RTCP报文,加套接字通过UDP软件封装为UDP报文进行传输,到达网络层后再封装到IP数据包继续传输,到达接收端后,接收端将封装的RTP报文送到应用层,然后播放RTP里的多媒体数据流。

 

 

 

注:属学习笔记,如有错误,欢迎指正

2022.12.10