SRT对比TCP协议的优缺点

        主流的流媒体协议,如HTTP,HLS,RTMP是TCP协议,而RTSP既可以基于TCP也可基于UDP协议进行数据传输。

        从趋势来看,新的流媒体协议大都选择UDP作为底层传输协议,其主要原因和流媒体业务本身的特性及TCP特性有关。 流媒体最常见的业务直播来看,用户需要直播出流快,延时低,不卡顿,在遇到弱网的情况下,能接受损失一部分画面,但是希望能快速恢复。

1.TCP协议的局限性    

        首先,TCP协议握手耗时长。TCP协议建立链接需要3次握手,如要通过TLS加密则还需要4次的握手。在建立链接方面,TCP协议交互流程太多,不适合快速出流。

        其次,窗口阻塞导致耗时严重。TCP协议是一个高可靠且有序的协议,因此如果出现序号较低的数据包丢了,即使序号高的已经收到了,也要等序号低的重传接收后才能使用,导致当前窗口阻塞在原地(TCP队头阻塞),要是重传的数据包也丢失,触发再次重传需要等待的时间会加倍(重传策略温和),而这个机制会影响数据的传输效率,对于实时性要求较高的流媒体业务,是不可接受的。

        最后,弱网情况表现差。TCP协议的慢启动和拥塞避免算法都会大幅度的降低自身的带宽占用,从而保护整个通信链路的稳定。所以在这种策略下一旦遭遇弱网,表现出来就是直播画面卡顿,基本没有弱网对抗能力。

2.SRT协议的优缺点

        SRT协议通过简单的握手、固定的延时量、ARQ(自动重传请求)、FEC(前向纠错)以及ACK、NACK等策略解决TCP协议在流媒体业务上存在的问题。

2.1. SRT如何解决握手耗时长?

        SRT通过2次握手和参数交换即可快速建立起一个SRT链接(总耗时:2RTT),相比基于TCP的流媒体协议RTMP 3RTT的握手时间,总耗时减少1个RTT。

2.2. SRT如何实现可靠传输?

        SRT握手结束之后,就可以发媒体数据和控制指令,媒体数据结构如下:

图片

  • 数据包序列号:数据包序号的初始值在握手时确定,之后每发一个数据包,数据包序号就会加1;
  • 报文序号:报文序号从0开始,之后每发一个数据包,报文序号就会加1,报文序号前4个标志位功能如图3所示;
  • 时间戳:以建立时间为基准,单位为微秒;
  • 目的地端口套接字ID:在多路复用的时候可以用来区分不同的SRT流。

ACK控制指令

图片

NAK控制指令

图片

        SRT发送端通过数据包序列号和报文序号,能明确那些数据包已经被发送出去;

        SRT发送端通过接收端发送过来的ACK控制指令,就知道发送出去的哪些数据已经被成功接收了;

        如果出现丢包情况,SRT发送端通过接收端发送过来的NAK控制指令,就能确定哪些数据需要重传。

        通过以上方式,SRT实现了可靠传输。

2.3. SRT如何实现解决窗口阻塞问题?

        从2.2的实现来看,SRT发送端必须有一个发送缓存区,SRT接收端也需要一个接收缓冲区才能实现在丢包后数据重传的机制。SRT协议通过设置固定延时量来统一规定发送缓冲区和接收缓冲区的大小。

        发送缓冲区用来保存有可能需要重发的数据包,一旦数据包收到了肯定应答(ACK),则该数据包会被清理出发送缓冲区(这点和TCP也类似),一旦发送缓冲区某个数据包一直收不到肯定应答,则该数据包在超过固定延时时间后也会被清理出发送缓冲区,SRT通过这种方式解决了TCP队头阻塞的问题。

        基于以上的原理,可以看出SRT并不是完全可靠的传输协议,它的可靠性介于UDP协议和TCP协议之间。

2.4. SRT如何实现解决弱网情况表现差?

        从ACK控制指令内容可以发现,ACK中带有许多网络参数,例如RTT时间等。通过RTT时间和链路带宽等参数,SRT就可以估计整个网络状态,从而实现自适应的调整。

        SRT在网络较差的情况下,依然会保持较大的发送速率。因此,在弱网环境时,SRT会占用更大的网络带宽来保证流畅度。

        值得注意:如果网络中都是类似于SRT这种发送策略的协议,最终可能导致谁的数据也发不出去。因此,在业务的选择上可以综合考虑SRT和TCP协议的特点,优先保证重要业务。

2.5. SRT的缺陷

        虽然SRT协议有很多优势,但是有一些缺点也不容忽视。首先就是SRT协议在弱网环境,带宽占用高;其次SRT协议传输策略激进,会影响同网络下的其他用户;最后由于SRT底层是走的UDP,而防火墙对于UDP并不友好。

        因此,SRT协议更适合点对点的高质量低延迟可靠传输,而不大适合对海量用户的内容分发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28017.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud Gateway网关

文章目录 SpringCloud Gateway1.1 网关架构1.2微服务网关介绍1.3Spring Cloud Gateway(技术选型)1.4依赖1.5yaml配置(包含gateway相关配置,实现转发的功能)1.6断言案例:1.7断言详细介绍1.8 整合nacos1.9 nacos整合网关案例1.10动态路由 SpringCloud Gateway 1.1 网关架构 (dub…

HashSet 、LinkedHashSet 源码级详解

Set 集合类体系如下: HashSet -- 无序、不重复、无索引 LinkedHashSet -- 有序、不重复、无索引 TreeSet -- 可排序、不重复、无索引 HashSet HashSet 底层采用 哈希表 存储数据 哈希表组成 JDK8 之前 -- 数组 链表 JDK8 之后 -- 数组 链表 红黑树 一开始…

OpenVas扫描器更新扫描引擎

OPenvas扫描器安装时step1 是交换指导升级(nvt,cert,scap),这次升级后是自动升级24h升级一次,但第一次升级时选择默认的rsync升级时会出现同步失败的问题,导致openvas安装完后有很大模块和规则不…

字符设备驱动开发(最初方式)

目录: 1.字符设备驱动简介2.字符设备驱动开发步骤2.1. 驱动模块的加载与卸载2.2. Makefile的编写2.3.字符设备的注册与注销2.3.1.设备号的组成2.3.2.设备号的分配 2.4.具体操作函数的实现2.4.1.进行打开和关闭操作2.4.2.对chrdev进行读写操作 3.具体程序的实现3.1.驱…

MySql如何卸载干净经验分享

第一步:首先打开注册表:点击电脑的开始按钮,打开找到运行,输入regedit,进入注册表; 第二步:删除mysql再注册表中的信息,以下三个目录: 1.HKEY_LOCAL_MACHINE\SYSTEM\Cont…

计讯物联5G千兆网关TG463在电力智能巡检机器人的应用功能解析

项目背景 随着国家智能电网建设加速推进,投资规模持续扩大,我国电网智能化、信息化不断提高,传统的电力运维与管理模式早已不能满足智能电网快速发展的需求。因此,在5G无线通信、人工智能、物联网、云计算、大数据、电力等前沿技术…

现货白银投资技巧有哪些

突破交易策略,适用于现货银价建立调整平台后,走势突然向上或向下运行的情况。所谓平台,就是是像箱子一样的矩形形态,即银价在两条水平直线之间上下波动,既上不去也下不来,一直在矩形内横向整理。这种形态通…

TCP 协议(五)异常报文

TCP 协议(一)报文结构 TCP 协议(二)连接与断开 TCP 协议(三)十种核心机制 TCP 协议(四)重传与超时 TCP 协议(五)异常报文 1.[TCP Dup ACK xxx#y]&#xff08…

关于Qt编译android时候一个问题

问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not resolve com.android.tools.build:gradle:3.2.0.…

kafka消息队列最常用的两种模式,以及应用场景

目录 一、发布-订阅模式 二、点对点模式 三、应用场景 一、发布-订阅模式 发布-订阅模式是最常见的消息传递模式,其中消息发布者将消息发送到一个或多个主题(Topic),而订阅者可以选择订阅一个或多个主题来接收消息。每个订阅者…

深入理解网络栈

网络路径 发送端 应用层 1、socket 各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的 socket 是网络编程的入口,它提供了大量的系统调用,构成了网络程序的主体 udp UDP 是面向无连接的协议,不需要与…

Linux的权限管理精细总结

(该图由AI绘制 关注我 学习AI画图) 目录 一、权限概述 1、权限的基本概念 2、为什么要设置权限 3、Linux用户身份类别 4、user文件拥有者 5、group文件所属组内用户 6、other其他用户 7、特殊用户root 二、普通权限管理 1、ls -l命令查看文件…