什么是 RTP - 实时传输协议?
RTP(实时传输协议)为在互联网上传输音频和视频定义了一个标准数据包格式。它在 RFC 1889 中定义。它由互联网工程任务组开发,该任务组创建了音频视频传输工作组,并于1996年首次发布。RTP广泛应用于涉及实时数据和媒体流的通信和娱乐系统,如电话、视频会议应用、网络协议电视服务和基于网络的一键通功能。它可用于多播和单播网络服务。
RTP协议与RTP控制协议(RTCP)和会话发起协议(SIP)配合使用。RTP负责传输媒体流(如音频和视频),而RTCP数据包用于监控传输统计和服务质量(QoS)数据,如抖动、数据包丢失(使用序列号识别)和往返时间。RTCP还有助于同步多个流。RTP会话在偶数端口号上发起和接收,相关的RTCP通信使用下一个较高的奇数端口号。RTP流量可以使用任何端口号,但通常使用的端口范围在1024到65535之间。RTP是VoIP的基础之一,它与SIP配合使用,协助建立网络连接。
RTP的优势和用途是什么?
顾名思义,RTP的设计目标是通过网络和互联网实时端到端传输媒体相关数据。由于互联网结构的特性,RTP数据包预计会在不同的时间间隔内接收,这称为"抖动"。RTP包含抖动补偿、数据包丢失检测以及乱序数据包传输的机制。为实现这一点,RTP优先考虑数据包的快速传输,而不是确保接收所有数据包。
举个例子,当有人在线观看视频时,视频流会使用RTP将视频数据发送到用户的设备。如果一些数据包丢失或延迟,RTP会纠正错误,导致丢失几帧或几分之一秒的视频。这种连锁反应可能微乎其微,用户甚至不会注意到。
由于RTP通过IP多播实现并行向多个目标端点传输数据,它是音频和视频IP网络传输的主要标准。在RTP架构设计中引用的相关配置文件和负载格式机制是在应用层而不是操作系统层实现的。
RTP在VoIP应用中的使用
像VoIP这样需要实时流媒体数据的应用,通常需要及时传输数据,并对数据包丢失有不同程度的容忍度。例如,VoIP应用中的音频数据包丢失可能导致几毫秒的音频数据丢失。这种损失可以通过错误补偿算法适当处理,使其变得微不足道,通话者甚至察觉不到。TCP(传输控制协议)也标准化用于RTP,但由于其错误控制机制可能导致延迟并影响及时的数据包传输,因此在应用中通常不使用。因此,大多数RTP应用通常基于UDP(用户数据报协议)实现。