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

news2024/10/2 22:18:00

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.coloradmin.cn/o/1912474.html

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

相关文章

Python学习中使用循环(for, while)

在Python编程语言中,循环是一个非常重要的概念,可以帮助我们在代码中重复执行某些操作。Python支持两种主要的循环结构:for 循环和 while 循环。 1. for 循环 for 循环用于遍历一个序列(如列表、元组、字符串)或其他…

自动化数据集成的BI工具,为你提供决策洞察力

传统的商业智能(BI)报表系统采用的是“业务提报表需求,IT进行开发”的模式。决策管理者和业务人员提出用报表等来展示经营管理数据的需求;接着IT响应需求,进行需求沟通、数据处理加工、报表开发等主体工作;…

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

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

Text Control 控件教程:在 .NET 中打印 MS Word DOCX 文档

虽然有用于创建 DOCX 文件的库(例如 Open XML SDK),但打印又是另一回事。打印 DOCX 文件的唯一方法是在 Microsoft Word 中打开它并手动打印。对于需要打印大量文档的 Web 应用程序或需要自动打印文档的服务器端应用程序来说,这不…

CSS相对定位和绝对定位的区别

CSS相对定位和绝对定位的区别 区别1:相对的对象不同 相对定位是相对于自己绝对定位是相对于离自己最近的有定位的祖先 区别2:是否会脱离文档流 相对定位不会脱离文档流,不会影响其他元素的位置绝对定位会脱离文档流,会影响其他元素的布局 代…

人与机器的协同是强弱系统的互补行为

人与机器的协同可以被视作强弱系统的互补行为,这也强调了人类和机器之间在处理问题、执行任务或创造价值时各自的优势与角色。 人类在认知、创造力、情感和伦理等方面具有独特优势。我们能够进行高级的抽象思维、创新和复杂决策,能够处理不确定性和动态环…

realloc调整栈帧

同样的,也仅仅是记录自己学习的记录、思考。 优秀的学习文章 使用realloc函数来调整栈帧让one_gadget生效 | ZIKH26 调试分析 one_gadget失效 这种都需要自己动手调试来看 以经典的libc-2.23的fastbin attack为例 one_gadget libc-2.23.so edit(2,8,p64(mall…

怎样在 PostgreSQL 中优化对大数值类型数据的计算?

文章目录 一、选择合适的数据类型二、索引优化三、查询语句优化四、数据库配置调整五、使用扩展功能六、示例七、总结 在 PostgreSQL 中处理大数值类型数据(例如 BIGINT、NUMERIC 等)的计算时,可能会遇到性能瓶颈。为了优化这些计算&#xff…

coze搭建工作流和Agent

coze搭建工作流和Agent Agent LLM 记忆感知规划使用工具 LLM是大语言模型,prompt提示词影响LLM的输出质量 描述需求——>背景——>解决思路,提示词文档。 当有明确的需求和实现需求的路径时,可以通过搭建工作流来完成标准化任务为…

从零开始学习嵌入式----Linux系统命令集合与shell脚本

Shell是一门编程语言,作为学习shell的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? shell本身就是一门解释型、弱类型、动态语言,与python相对应,Python属于解…

办公室卫生间厕位引导牌款式多样,都有哪些功能

在现代办公环境中,卫生间不仅是员工日常使用的必需设施,也是体现企业文化和管理水平的一面镜子。然而,传统办公室卫生间往往存在着信息不透明、高峰期拥挤、清洁维护滞后等问题,影响了员工的使用体验。近年来,随着智慧…

0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)

小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了,如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…

个人标准流程管理系统

个人标准流程管理系统(Personal Standard Operating Procedure System, PSOPS)是一种帮助个人组织和优化日常任务、项目管理、学习计划和其他重复性活动的工具。它旨在提升个人效率,确保各项事务按照预设的标准流程执行。以下是设计这样一个系…

PPI(每英寸像素数)、DPI(每英寸点数)和Pixel(像素)的区别和联系?

一、定义 PPI、DPI和Pixel是图像处理、打印和显示领域中常用的三个概念,它们之间既有区别又有联系。以下是对这三个概念进行分别讲解: 1. PPI(Pixels Per Inch)-即每英寸像素数,是图像分辨率的一种表示方…

Apache部署与配置

概述 介绍 Apache HTTP Server(简称Apache)是Apache的一个开源的网页服务器,它源自NCSAhttpd服务器,并经过多次修改和发展,如今已经成为全球范围内广泛使用的Web服务器软件之一 特点 跨平台:可以运行在几乎所有广泛使用的计算机平…

接口基础知识1:认识接口

课程大纲 一、定义 接口:外部与系统之间、内部各子系统之间的交互点。 比如日常使用的电脑,有电源接口、usb接口、耳机接口、显示器接口等,分别可以实现:与外部的充电、文件数据传输、声音输入输出、图像输入输出等功能。 接口的本…

tableau气泡图与词云图绘制 - 8

气泡图及词云图绘制 1. 气泡图绘制1.1 选择相关属性字段1.2 选择气泡图1.3 设置颜色1.4 设置标签1.5 设置单位 2. 气泡图绘制 - 22.1 类别筛选2.2 页面年份获取2.3 行列获取2.4 历史轨迹显示 3. 词云图绘制3.1 筛选器3.2 选择相关属性3.3 选择气泡图3.4 设置类型颜色3.5 设置形…

科研训练课程2--论文格式修改+endnote使用

科研训练课程2–论文格式修改endnote使用 文章目录 前言修改论文格式图表endnote 使用&#xff08;补充&#xff09; 总结 前言 第二天 2024/7/9 所属目录&#xff1a;科研训练课程创建时间&#xff1a;2024/7/9作者&#xff1a;星云<XingYun>更新时间&#xff1a;xxxUR…

Python标准库常用模块的典型用法介绍与案例

目录 1. os模块 典型用法 案例 2. sys模块 典型用法 案例 3. datetime模块 典型用法 案例 4. re模块 典型用法 案例 5. json模块 典型用法 案例 6. random模块 典型用法 案例 7. collections模块 典型用法 案例 总结 Python作为一门功能强大的编…

Redis基础教程(十八):Redis管道技术

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…