1. 参考链接

2. UDT简介

2.1 UDT是什么

  • UDT(UDP-based Data Transfer Protocol) 是一种用于高性能数据传输的网络协议,适用于需要高带宽和低延迟的应用场景

  • 设计初衷是克服TCP在高延迟和高丢包率网络环境中的不足

2.2 为什么需要UDT

(1) 首先来看一下TCP的缺陷

  • TCP虽然保证了数据可靠性,但是在高带宽/高延迟环境下,TCP的表现不佳
  • 带宽利用率低:
    • TCP的慢启动机制:导致TCP的传输带宽是逐步增加的,造成TCP连接的初始阶段带宽利用率低
    • 当网络rtt非常大时:TCP的慢启动过程将会非常耗时,需要花费更长的时间才能达到TCP的峰值带宽
    • TCP的拥塞控制机制:导致在发生丢包时,拥塞窗口会大幅降低,实际利用的带宽可能远低于实际可用的带宽,导致带宽闲置;并且在之后会再次进入慢启动阶段,无法有效利用带宽
  • 面对高带宽延迟产品时表现不佳
    • 典型的如卫星网络,国外有马斯克的星链计划,国内的千帆星链计划等
    • 卫星链路的特点就是延时较高,丢包率较高
    • 实测中国卫通的某一款产品,rtt基本在500~600ms之间,测试时的丢包率甚至能达到50%,在这样的网络环境下,TCP慢启动阶段耗时长,丢包后恢复慢,拥塞窗口调整滞后...等等问题,导致TCP几乎处于不可用的状态

(2) 再来看一下UDP的缺陷

  • 没啥好说的,当然就是无连接,不可靠了

(3) 因此需要一种新的传输协议,既能够保证数据可靠性,也能够充分利用网络带宽,在发生拥塞或丢包时能够快速恢复

(4) 当然也有其它的方案可以实现上述要求,如谷歌的quic、林伟大神的KCP...等。之所以先来研究UDT,是因为音视频传输领域广泛使用的SRT协议,就是基于UDT来实现的,我司的项目又深度使用了SRT协议,先为以后研究SRT协议打个基础吧

3. 源码编译

UDT(一):概览的更多相关文章

  1. Activity之概览屏幕(Overview Screen)

    概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...

  2. Atitit 软件工程概览attilax总结

    Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...

  3. iOS开发系列—Objective-C之基础概览

    概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会 ...

  4. iOS开发系列--IOS程序开发概览

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  5. Azure SQL Database (19) Stretch Database 概览

    <Windows Azure Platform 系列文章目录>  Azure SQL Database (19) Stretch Database 概览      Azure SQL Da ...

  6. Web前端开发大系概览 (前端开发技术栈)

    前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...

  7. Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx

    Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...

  8. 使用用户自定义类型 CLR UDT

            一些复合类型进行范式分解是没有必要的,尤其是一些统一模型的情况下       SET NOCOUNT ON DECLARE @i TimeBalance SET @i = CAST(' ...

  9. 解决UDT中内存下不去的问题

         使用UDT库,编写简单的网络通信程序,发现了一个问题,关闭一部分连接后,程序占用内存并没有变化.      比如先连接500个,再连接另500个,先关掉后面500个,程序占用内存降一半,再关 ...

  10. UDT中epoll对CLOSE状态的处理

    epoll_wait()返回可用uid时,对uid取状态,本该是BROKEN的,却取到CLOSED,然而,不能像处理BROKEN事件那样处理CLOSED事件,这样移除不了CLOSED事件,于是epol ...

随机推荐

  1. wireshark常用过滤指令

    前言 wireshark是一款高效且免费的网络封包分析软件,现就自己使用过的过滤表达式进行记录,随时更新. 正文 与.或.非指令 与:and && 示例:tcp and ip.src ...

  2. OtterCTF 2018 Forensics

    OtterCTF 2018 Forensics 题单来自NSSCTF [OtterCTF 2018]What the password? [OtterCTF 2018]General Info [Ot ...

  3. Log4j日志输出级别详解

    log4j定义了8个级别的log 日志记录器(Logger)的行为是分等级的: 1.分为OFF(关闭所有日志).FATAL(致命错误).ERROR(异常报错).WARN(潜在错误).INFO.DEBU ...

  4. oracle 实现任务编码自增

    业务需求:任务编号前面4位数(通过查询其他表,值不确定),后面5位数实现自增 实现方法如下 1.创建序列 1 create sequence GENERAL_DES_TASK_SEQ_1 2 incr ...

  5. Window版 MySQL可视化工具 Navicat 面安装免激活绿色版

    网盘地址 链接:https://pan.baidu.com/s/1T0WyhGAFEt28GaU4wXhfrg 提取码:z4ww navicat15破解版 链接:https://pan.baidu.c ...

  6. 洛谷P1095

    [NOIP2007 普及组] 守望者的逃离 题目背景 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变. 题目描述 守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上. ...

  7. springboot项目分层

    springboot项目分层 一般的项目模块中都有DAO.Entity.Service.Controller层. Entity层:实体层 数据库在项目中的类 Entity层是实体层,也就是所谓的mod ...

  8. WebGL实践之半透阴影

    楔子 相信很多人都知道,通过ShadowMap可以产生阴影,通过渲染阴影可以增加场景渲染的对比度,增加渲染的真实效果. 如下图所示: 但是对于透明或者半透明的对象,WebGL在处理阴影效果的时候,会把 ...

  9. ADB:移动端专项测试必备神器!!

    01 Android调试桥 (adb) Android调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信. adb命令可用于执行各种设备操作(例如安装和调试应用),并提供对Unix ...

  10. app专项测试:app弱网测试

    app专项测试:app弱网测试 弱网测试背景 用户体验 APP使用过程中,弱网的高延迟和高丢包,在实时性要求非常高的场景,容易伤害用户体验 非正常情况下,Bug出现几率会增加 在解决日常支持需求中,经 ...