基于网络编码的 tcp 变种-tcp/nc

tcp/nc 是指 “tcp with network coding”,是一种结合了网络编码技术的 tcp 变种,网上资源很少,我也不准备多介绍,只介绍它的核心。

传统 tcp 在演进过程中一直搞不定效率问题,网络带宽在增长,cpu 却没有变得更快,为保持可靠语义,tcp 丢包判断和重传逻辑的时间占比越来越大。

从 3 次 dupack,3 个 sacked segs 到 rack,甚至跌入 rto,逻辑复杂的核心在于,你必须用某种启发式算法判定丢包,然后择机重传标记为 lost 的报文,丢包判断必须尽快,而重传却不得不谨慎,慌乱中很难把握分寸,则要么不足,要么激进。tcp 没有提供一种内在的方式,让丢包判断和重传在松弛的氛围中进行。

tcp/nc 依然是我那 “横竖一颠倒,世界变了样” 方法论的体现:
在这里插入图片描述

通过编码系数提供冗余,receiver 解码过程就是一个解 n 元一次方程组的过程,每一个包就是一个方程,丢一个包意味着 n 个方程少了一个,需要补一个方程,就是重传。

判断丢包非常简单,receiver 保存两个变量:

  • H1 表示一个 tcp/nc 报文表示的一个方程中序号最高的包,比如上图中 receiver 收到 c2,H1 就是 p2;
  • H2 表示 receiver 当前收到的连续的序号最高的包,上图中如果 c 丢失,收到 c2 时,H2 就是 p1;

如果没有丢包,H1 - H2 = 0,理论上 sender 只要发现 H1 - H2 > 0 即可补充一个冗余报文,但 sender 可以将这件事延迟,这就是给了乱序以松弛感。

比如 c1 丢失,sender 收到 c2 即可发送一个冗余报文,比如 c3 = p0 + 3p1 + p2,但它可以继续等到收到 c3,发现 H1 - H2 > 0 依旧,就可以发送一个冗余了,比如 c4 = p0 + 2p1 + p2 + p3,4 个未知数 4 个方程,p0 到 p3 解码成功。

只是一个简单例子,想说的是,这种冗余编码(可以支撑延迟一个编码窗口)提供的松弛感可以让 sender 采集足够多的数据,进行更加理性的拥塞判断,而不是像传统 tcp 那样频繁跌入 ssthresh = cwnd / 2 甚至 rto。

至于冗余度,既然不准备多介绍 tcp/nc 也就不多说,确实,相比传统 tcp,有效传输的数据更少了,但这本身就是 trade off,旨在解除 tcp 的抱怨 “花太多精力在丢包判断和重传中”,就够了。

规整化,本身就要付出代价,要看收益有多大。

浙江温州皮鞋湿,下雨进水不会胖。

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

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

相关文章

区间贪心

目录 1.贪心算法的思想 2.区间贪心算法常用的一些题目类型 1.选择最多不相交区间问题 P2970 [USACO09DEC] Selfish Grazing S 1.思路分析 2.上代码 2.区间选点问题 P1250 种树 1.题目 2.方法一 1.代码解释 3.方法二 3.区间合并问题 P2434 [SDOI2005] 区间 1. 思路…

Java集合面试题

Java集合框架 1、List、Set、Map的区别2、ArrayList、LinkedList、Vector区别3、为什么数组索引从0开始,而不是从1开始?4、ArrayList底层的实现原理5、红黑树、散列表6、HashMap的底层原理7、HashMap的put方法具体流程8、HashMap的扩容机制9、HashMap是怎…

南方科技大学马永胜教授给年轻人使用AI工具上的建议

摘要 - 1. AI的未来,是机器人和机器人之间的合作; 2. 行业的发展方向是需求决定的,不要做同质化的发展,要做专/精/特/新; 3. 新质生产力 ( 科学技术革命性突破 生产要素创新型配置 产业深度转型升级&…

java通过poi-tl导出word实战详细步骤

文章目录 与其他模版引擎对比1.引入maven依赖包2.新建Word文档exportWprd.docx模版3.编写导出word接口代码4.导出成果 poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让…

Pix4Dmapper:无人机测绘的革命性工具

在现代测绘和地理信息系统(GIS)领域,Pix4Dmapper无疑是一款革命性的工具。作为一名长期使用这款软件的用户,我深深感受到它在工作中的重要性和便利性。Pix4Dmapper不仅仅是一款软件,更是测绘工作者的得力助手&#xff…

285个地级市出口产品质量及技术复杂度(2011-2021年)

出口产品质量与技术复杂度:衡量国家竞争力的关键指标 出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规,而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一…

批量下载手机中APP程序中文件

需求 利用 adb pull 下载手机中app的某目录 adb pull 命令本身不支持直接下载整个目录(文件夹)及其所有子目录和文件作为一个单一的操作。但是,可以通过一些方法来间接实现这一目的。 方法 1. 首先将要下载的目录进行 tar 打包 # 在 And…

【atcoder】习题——位元枚举

题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…

算法学习笔记(8.1)-动态规划入门

目录 问题特性: 最优子结构: 代码示例:(动态规划最优子结构) 上述最小代价爬楼梯的运行过程: 代码示例: 无后效性: 解析: 具体过程图示如下: 具体的…

如何为IP申请SSL证书

目录 以下是如何轻松为IP地址申请SSL证书的详细步骤: 申请IP证书的基本条件: 申请IP SSL证书的方式: 确保网络通信安全的核心要素之一,是有效利用SSL证书来加密数据传输,特别是对于那些直接通过IP地址访问的资源。I…

使用 Azure DevOps Pipelines 生成 .NET Core WebJob 控制台应用 CI/CD

Web 应用程序通常需要作为后台任务运行的进程,并在特定时间间隔进行计划或在事件中触发。它们不需要花哨的 IO 接口,因为重点是过程而不是输出。Azure WebJobs 提供了出色的支持,通常在云环境中通过 Web 控制台应用程序来实现此目的。WebJob …

Mac平台虚拟机 Parallels Desktop v19.4.1,支持M1/M2/M3芯片组

Parallels Desktop for Mac是功能强大灵活度高的虚拟化方案,无需重启即可在同一台电脑上随时访问Windows和Mac两个系统上的众多应用程序。从仅限于PC的游戏到生产力软件,Parallels Desktop都能帮您实现便捷使用。Parallels Desktop 是一款专业的Mac虚拟机…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门

参考文章 【Docker安装部署KafkaZookeeper详细教程】_linux arm docker安装kafka-CSDN博客 Docker搭建kafkazookeeper 打开我们的docker的镜像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

Linux Mac 安装Higress 平替 Spring Cloud Gateway

Linux Mac 安装Higress 平替 Spring Cloud Gateway Higress是什么?传统网关分类Higress定位下载安装包执行安装命令执行脚本 安装成功打开管理界面使用方法configure.shreset.shstartup.shshutdown.shstatus.shlogs.sh Higress官网 Higress是什么? Higress是基于阿里内部的…

思考:Java内存模型和硬件内存模型

前言 前一阵在看volatile的原理,看到内存屏障和缓存一致性,发现再往底层挖就挖到了硬件和Java内存模型。这一块是自己似懂非懂的知识区,我一般称之为知识混沌区。因此整理这一篇文章。 什么是内存模型(Memory Model)…

CentOS6用文件配置IP模板

CentOS6用文件配置IP模板 到 CentOS6.9 , 默认还不能用 systemctl , 能用 service chkconfig sshd on 对应 systemctl enable sshd 启用,开机启动该服务 ### chkconfig sshd on 对应 systemctl enable sshd 启用,开机启动该服务 sudo chkconfig sshd onservice sshd start …

未羽研发测试管理平台

突然有一些觉悟,程序猿不能只会吭哧吭哧的低头做事,应该学会怎么去展示自己,怎么去宣传自己,怎么把自己想做的事表述清楚。 于是,这两天一直在整理自己的作品,也为接下来的找工作多做点准备。接下来…

LT7911UX 国产原装 一拖三 edp 转LVDS 可旋转 可缩放

2.一般说明 该LT7911UX是一种高性能Type-C/DP1.4a到MIPI或LVDS芯片的VR/显示应用。HDCP RX作为HDCP转发器的上游,可以与其他芯片的HDCP TX配合实现转发器功能。 对于DP1.4a输入,LT7911UX可配置为1/2/4通道。自适应均衡使其适用于长电缆应用,最…

Junior.Crypt.2024 CTF Web方向 题解WirteUp 全

Buy a cat 题目描述:Buy a cat 开题 第一思路是抓包改包 Very Secure App 题目描述:All secrets become clear 开题 乱输一个密码就登陆成功了(不是弱口令) 但是回显Your role is: user 但是有jwt!!&a…

记录在Windows上安装Docker

在Windows上安装Docker时,可以选择使用不同的后端。 其中两个常见的选择是:WSL 2(Windows Subsystem for Linux 2)和 Hyper-V 后端。此外,还可以选择使用Windows容器。 三者的区别了解即可,推荐用WSL 2&…