RTP over TCP 模式

RTP over TCP 模式概述

RTP over TCP 指的是将RTP数据包封装在TCP连接中进行传输,而不是使用传统的基于UDP的传输方式。

与UDP模式对比

特性RTP over TCPRTP over UDP
端口数量仅需 1 个 TCP 端口(默认 554)每路流需 2 个 UDP 端口(数据+控制)
可靠性依赖 TCP 重传机制,数据无丢失可能丢包,影响实时性
防火墙兼容性易穿透(常用端口 554)需开放多个端口,易被拦截
延迟较高(重传机制引入延迟)较低(无连接、无重传)
适用场景高丢包网络(如互联网)、防火墙环境低延迟需求(局域网、专网)

工作原理

在RTSP的RTP over TCP模式下,RTP和RTCP数据被“隧道化”到RTSP控制连接中,通常使用基于分隔符的帧间发送(Interleaved Mode)。具体流程如下:

  1. 建立RTSP连接:客户端与服务器之间首先建立一个RTSP的TCP连接,通常是在端口554上。
  2. SETUP 阶段协商
    客户端在 SETUP 请求中指定传输方式为 TCP,并分配交织通道号:
    Transport: RTP/AVP/TCP;interleaved=0-1
    

在这里插入图片描述

  • 0-1 表示视频流:0 为 RTP 数据通道(偶数),1 为 RTCP 控制通道(奇数)。
  • 音频流通常分配 2-3 通道。
  1. 发送RTP/RTCP数据:在同一个TCP连接上,RTP和RTCP数据通过特定的通道(通常是通过RTSP“interleaving”机制,即在RTSP消息中嵌入RTP数据)进行传输。每个RTP/RTCP包前面会有一个标识符(通常是“$”符号后跟通道号),以区分不同类型的数据。
  2. 数据封装格式
    每个 RTP/RTCP 包添加 4 字节头部 (RTSP Interleaved Frame) ,结构如下:
字段长度说明
Magic Number1 字节固定值 0x24(ASCII 字符 $),用于标识 RTP/RTCP 数据包。
Channel Number1 字节通道号(如 0 代表 RTP 视频数据,1 代表 RTCP 视频控制)。
Embedded Data Len2 字节后续 RTP/RTCP 数据包的长度(网络字节序)。
DataN 字节实际的 RTP 或 RTCP 数据包

RTCP SR数据包封装:
RTCP数据包封装
视频RTP包封装:
RTP封装

RTSP over TCP如何解决粘包问题

在这里插入图片描述
上面截图为TCP的payload,可以看到由于Nagle算法,多个H264包,SR和RR合成一个TCP包。
为了解决粘包问题,RTSP over TCP引入引入了RTSP Interleaved Frame:

  • Magic标识,固定值0x24(ASCII字符$),用于标识RTSP交错帧的起始边界
  • Channel通道号, 标识数据所属的逻辑通道(如0x01通常对应RTP媒体流,0x02对应RTCP控制流)
  • ​长度字段Length, 接收端据此精确读取完整帧数据,避免TCP粘包问题。

参考资源

  1. RFC 4571
    Interleaved RTP over TCP

  2. RFC 4571
    Embedded (Interleaved) Binary Data

  3. RTP/AVP & RTP/AVP/TCP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值