高性能服务系列【七】网络的延迟构成

上文讲过,在以太网中,不论要发多少字节的TCP数据,78个字节的固定协议格式是必须的。很显然,每个以太网帧越大,最大不超过1538个字节,则有效载荷占比越高。而以太网帧越小,同样字节的应用层数据,需要分拆成更多的包。这个结论在后续的分析中会用到,不再赘述。

在网络中,点到点的延迟,最大因素是距离。比如局域网内,可以做到1毫秒以内,同城则需要10毫秒,甚至更多,而城际之间,比如上海到北京,需要30到50毫秒。洲际之间,比如上海到纽约,可能要达到300毫秒,卫星可能会少点,暂时没有这个数据。这些数据并不是精确的值,会受到很多因素影响。这个距离直接决定了RTT的值。

第二个因素就是RTO,超时重传。看起来只是一个简单的值,但如何估算一个准确有效的值,相关RTO的算法就有很多讨论和论文。早期TCP协议栈中,RTO有指数退避算法,丢了3个包,RTO就是初始的8倍。在linux中,RTO默认最小值为200毫秒。如果发生了丢包,那么传输延迟就直接被打骨折了。在新版Linux内核中,已经实现了RFC6298,对RTO的估算有了不小的改进。因此,重传率在网络中是非常重要的一个指标。

第三个因素是滑动窗口,当接收端的处理慢时,发送方每次能够发送的字节数就不断被缩小,直到为0。正如文章开头所说的,相同字节的数据就要被拆成更多的以太网帧,自然就慢了。

第四个因素是拥塞控制算法,和RTO的算法一样,有很多讨论和论文。根本点,还是在改善重传效率上,既要快速恢复,又要不重复传输。

针对TCP的延迟,还有更多的优化方案,后续再讨论。
 

在高速网络中,比如40Gbps,甚至100Gbps的网络,网络传输速度已经和芯片内部的传输速度相差无几,对程序提出更苛刻的要求,暂时不深入讨论。

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

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

相关文章

如何将本地开发完成后的数据库文件迁移到服务器中

将本地开发完成后的数据库文件迁移到服务器中的数据库是一个常见的操作,尤其是在项目部署阶段。这个过程大致可以分为导出(备份)本地数据库、传输文件到服务器、以及导入数据库到服务器数据库中三个步骤。这里我将以 MySQL 和 MongoDB 为例来…

【Linux】Shell编程【二】

目录 Shell流程控制条件测试注意事项示例[ condition ]与[[ condition ]]的区别 if条件单分支语法示例1:统计根分区使用率示例2:创建目录 双分支if条件语句语法案例1:备份mysql数据库案例2:判断apache是否启动,如果没有…

网络学习:9个计算机的“网络层”知识点

目录 一、IP 地址 1.1 分类表示法: 1.1.1 分类表示地址的其他说明 1.2 无分类编址 CIDR 二、IP 数据报文格式 Q: IP 报文里有什么?可以不按顺序或者字节来讲一讲 三、 路由概念 3.1 路由表 3.2 路由网络匹配 3.3 ARP 解析 3.4 RARP 逆地址解析…

考试题库:华为HCIA-Datacom易错题⑦(含答案解析)

华为认证HCIA-Datacom易错题举例和答案分析。 1、现有一台交换机通过某端口与一个指定端口相连,但是该端口不转发任何报文,却可以通过接收BPDU来监听网络变化,那么该端口的角色应该是( )。 A、Designated端口 B、Al…

柔性数组(变长数组)介绍

柔性数组简介 柔性数组,或称为可变长度数组,是一种在C语言结构体定义中使用的特殊数组,它允许结构体拥有一个可变大小的数组成员。柔性数组成员必须是结构体的最后一个成员,且它不占用结构体大小的计算,这使得可以动态…

分布式搜索elasticsearch(1)

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案…

25-5 SQL 注入攻击 - insert注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、注入原理 描述:insert注入是指通过前端注册的信息被后台通过insert操作插入到数据库中。如果后台没有做相应的处理,就可能导致insert注入漏洞。原因:后台未对用户输入进行充…

c++函数SetConsoleTextAttribute

前言 正文 1.作用: 2.函数格式(重点): 3.参数(重点): 前言 实用(真的) 正文 1.作用: 更改cmd的背景色与字体颜色 2.函数格式(重点): SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10进制参数); …

第14届环境与农业工程国际会议(ICEAE 2024)即将召开!

2024年第14届环境与农业工程国际会议(ICEAE 2024)将于6月7日至9日在泰国曼谷召开。本次会议旨在促进环境与农业工程的研究和开发活动,共同探讨领域内最新以及具有根本性的进展突破。热忱欢迎从事相关领域研究的专家,学者和专业技术…

iStoreOS系统内安装HomeAssistant服务

iStoreOS系统内安装HomeAssistant服务 1. HomeAssistant服务 HomeAssistant是一款基于Python的开源智能家居系统,简称HA。 HomeAssistant可以方便地连接各种外部设备,如智能设备、摄像头、邮件、短消息和云服务等,其成熟的可连接组件有近千…

【Twinmotion】Twinmotion导入UE5

步骤 1. 在虚幻商城中安装“Datasmith Twinmotion导入器插件” 安装“面向虚幻引擎的Twinmotion内容” 2. 打开虚幻引擎,在插件中搜索“twinmotion”,勾选如下两个插件,然后重启虚幻引擎 3. 打开Twinmotion,随便添加一个物体 导出…

【阿里云系列】-ACK的Java应用POD无法访问云数据库Redis

问题介绍 如下图所示,是ACK集群的POD访问阿里云的云数据库Redis,如何实现访问呢 配置步骤 要实现ACK集群内的所有POD都可以访问云数据库Redis,则需要在Redsi的白名单里增加源IP或网段,如下图所示 注意: 以上添加…

PHP 伪协议详解

PHP 伪协议是一种特殊的 URL 格式,用于访问 PHP 内置的各种资源,如文件、变量、函数等。它们以 php:// 开头,后面跟着不同的协议标识符和参数。下面是一些常见的 PHP 伪协议及其用法的详解: php://input:用于访问请求…

网络套接字-UDP服务器

一 预备知识 1 端口号和进程id 主机间的数据传输本质是两个进程在通信,就像是我们打开抖音刷视频,视频不是都保存在手机上的,而是服务器发送给你的,这里就是用到了网络。 那如何保证把数据给指定进程呢? 就是用端口号去标识主机中…

Pytorch学习 day13(完整的模型训练步骤)

步骤一:定义神经网络结构 注意:由于一次batch_size的大小为64,表示一次放入64张图片,且Flatten()只会对单张图片的全部通道做拉直操作,也就是不会将batch_size合并,但是一张图片有3个通道,在Ma…

【MODBUS】j2mod java类库的介绍

目录 一、j2mod介绍 二、版本发布 三、已知issues 四、依赖 五、maven导入 j2mod库 一、j2mod介绍 这个项目是j2mod库的一个分支,j2mod最初是jamod。对这个库进行了大量的重构和代码修复,并添加了支持的JUnit测试,以确保该库适合生产使用…

YOLOv9改进项目|关于本周更新计划的说明24/3/12

目前售价售价59.9,改进点30个 专栏地址: 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 日期:24/3/12 本周更新计划说明: 1. 更新华为Gold YOLO中的…

函数式编程之​传递函数

传递函数 当学习一门如 C 的语言时,函数指针的概念是一个高级话题,但是对于函数就像其他对象的 python 来说就不是那么回事了.函数是可以被引用的(访问或者以其他变量作为其别名),也作为参 数传入函数,以及作为列表和字典等等容器对象的元素,函数有一个独一无二的特征使它…

读西游记第一回:西游记世界格局

天地之数: 元:十二万九千六百岁(129600年) 1元12会:子、丑、寅、卯、巳、午、未、申、酉、戌、亥。每会18000年。与12地支对应。 亥会期:前5400年混沌期,后5400年,盘古开天辟地&am…

论文阅读——Vision Transformer with Deformable Attention

Vision Transformer with Deformable Attention 多头自注意力公式化为: 第l层transformer模块公式化为: 在Transformer模型中简单地实现DCN是一个non-trivial的问题。在DCN中,特征图上的每个元素都单独学习其偏移,其中HWC特征图上…