UDT(一):概览
1. 参考链接
- 官网
- 谷博士对UDT的简单介绍
- 获取UDT源码
- UDT讨论贴
- KCP项目,作者提到了关于KCP/TCP/UDT的对比测试
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. 源码编译
获取源码,最新的是
4.11版本在Ubuntu中完整构建源码,包含libudt.so和示例程序
$ make -e

单独构建示例程序
udt4$ cd app && make

UDT(一):概览的更多相关文章
- Activity之概览屏幕(Overview Screen)
概览屏幕 概览屏幕(也称为最新动态屏幕.最近任务列表或最近使用的应用)是一个系统级别 UI,其中列出了最近访问过的 Activity 和任务. 用户可以浏览该列表并选择要恢复的任务,也可以通过滑动清除 ...
- Atitit 软件工程概览attilax总结
Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...
- iOS开发系列—Objective-C之基础概览
概览 前面我们已经用了几章内容进行C语言介绍,当然要通过几篇文章完整的介绍C语言的知识是不太现实的,例如C语言的文件操作.内存申请等我们都没有重点介绍,当然核心知识点基本都已经提到了,后面有时间我们会 ...
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- Azure SQL Database (19) Stretch Database 概览
<Windows Azure Platform 系列文章目录> Azure SQL Database (19) Stretch Database 概览 Azure SQL Da ...
- Web前端开发大系概览 (前端开发技术栈)
前言 互联网建立50多年了,网站开发技术日新月异,但web前端始终离不开浏览器,最终还是HTML+JavaScript+CSS这3个核心,围绕这3个核心而开发出来大量技术框架/解决方案. 我从2000 ...
- Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx
Atitit.自然语言处理--摘要算法---圣经章节旧约39卷概览bible overview v2 qa1.docx 1. 摘要算法的大概流程2 2. 旧约圣经 (39卷)2 2.1. 与古兰经的对 ...
- 使用用户自定义类型 CLR UDT
一些复合类型进行范式分解是没有必要的,尤其是一些统一模型的情况下 SET NOCOUNT ON DECLARE @i TimeBalance SET @i = CAST(' ...
- 解决UDT中内存下不去的问题
使用UDT库,编写简单的网络通信程序,发现了一个问题,关闭一部分连接后,程序占用内存并没有变化. 比如先连接500个,再连接另500个,先关掉后面500个,程序占用内存降一半,再关 ...
- UDT中epoll对CLOSE状态的处理
epoll_wait()返回可用uid时,对uid取状态,本该是BROKEN的,却取到CLOSED,然而,不能像处理BROKEN事件那样处理CLOSED事件,这样移除不了CLOSED事件,于是epol ...
随机推荐
- Windows安装OnlyOfiice教程
1.OnlyOffice介绍 OnlyOffice 是一个在线创建.编辑和协作文档的服务. 2.Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ...
- Docker运维之容器的日志清理
在容器运行的过程中,通常会产生大量的日志,尤其是应用程序本身记录了info级别的日志时候,程序的标准输出记录到容器的日志.这样会占用大量的磁盘空间,严重者导致IO异常,最终服务会宕机. 方案一:定期手 ...
- 疑难杂症(已解决) | 为什么出现python中tkinter创建界面需要一闪而过才进入主窗口?
一.具体问题 如图所示,我编写了一个主窗口的程序(如下所示,有兴趣的可以自己复制后运行),发现需要先进入第一个窗口再进入主界面,这不符合逻辑. 代码区域(完整代码): from tkinter imp ...
- IP协议学习笔记
目录 IP地址格式 IP分类 CIDR 和 子网掩码介绍 NAT+公网.私网地址 CIDR 与 VLSM VLSM 子网划分案例 练习 Reference IP的作用类似物理世界中的地址,用于定位机器 ...
- vue小知识~ref和$refs
$refs表示的是获取被ref标识的标签的DM实例. 用法简单: 标签上: <div ref='refName'></div> 获取: this.$refs.refName 就 ...
- Vue 修改网页标题和图标
Vue 修改网页标题和图标 by:授客 QQ:1033553122 开发环境 Win 10 Vue 2.5.2 需求描述 如下,想更改网页的标题和图标 解决方法 编辑项目根目录下的in ...
- 【Vue】06 Webpack Part2 打包命令配置
Webpack 配置: 入口 & 出口: 就是我们使用的打包命令: 一个是对什么文件执行,这就是入口 一个是输出到什么文件,这就是出口 每一次打包使用这个命令都必须指定这两个必要的参数 所以将 ...
- 为什么自动驾驶领域发论文都是用强化学习算法,但是实际公司里却没有一家使用强化学习算法?—— (特斯拉今年年初宣布推出实际上第一款纯端到端的自动驾驶系统,全部使用强化算法,替换掉30万行C++的rule-based代码)
为什么自动驾驶领域发论文都是用强化学习算法,但是实际公司里却没有一家使用强化学习算法?-- (特斯拉今年年初宣布推出实际上第一款纯端到端的自动驾驶系统,全部使用强化算法,替换掉原有的30万行C++的r ...
- wandb原来是可以网络直连的,国内可以无障碍使用
一直不是很常使用神经网络训练可视化的工具,包括:tensorboard,等等,wandb平时也是直接就忽略,不过最近无意间看了看这个效果,感觉还是不错的,于是尝试了一下. 网上很多人说这个工具服务器在 ...
- 何时使用交叉熵,何时使用KL散度:计算分布差距为啥使用KL散度而不用交叉熵,计算预测差距时为啥使用交叉熵而不用KL散度
问题: 何时使用交叉熵,何时使用KL散度? 计算分布差距为啥使用KL散度而不用交叉熵,计算预测差距时为啥使用交叉熵而不用KL散度 问题很大,答案却很简单. 答案: 熵是一种量度,是信息不确定性的量度: ...