RTP over TCP 模式

RTP over TCP 模式概述

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

与UDP模式对比

特性 RTP over TCP RTP 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,并分配交织通道号:

    http 复制代码
    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 字节头部,结构如下:
字段 长度 说明
Magic Number 1 字节 固定值 0x24(ASCII 字符 $),用于标识 RTP/RTCP 数据包。
Channel Number 1 字节 通道号(如 0 代表 RTP 视频数据,1 代表 RTCP 视频控制)。
Embedded Data Len 2 字节 后续 RTP/RTCP 数据包的长度(网络字节序)。
Data N 字节 实际的 RTP 或 RTCP 数据包

RTCP SR数据包封装:

视频RTP包封装:

参考资源

  1. RFC 4571 :
    Interleaved RTP over TCP

  2. RFC 4571 :
    Embedded (Interleaved) Binary Data

  3. RTP/AVP & RTP/AVP/TCP

相关推荐
XUEYUAN52124 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CHENKONG_CK4 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
z落落4 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
曼巴UE54 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
开开心心就好4 天前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法
K成长日志5 天前
DALI协议-Part209-颜色控制
物联网·网络协议·iot·智能照明·智能建筑·dali
IPdodo_5 天前
跨境 API 调用不稳定怎么办:出口、超时重试与链路监控的实践
网络·python·网络协议
那年窗外下的雪.6 天前
AIDC 学习日志|第 27 天|EVPN 多归属收敛时间线与 Leaf2 接管验证
网络协议·学习·http·tcpdump
j7~6 天前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
小则又沐风a6 天前
深入理解TCP协议----滑动窗口,流量控制
linux·网络协议·tcp