高性能服务系列【六】网络的有效载荷

谈到高性能服务是很难绕开网络部分,毕竟单机时代早已过去。对于多节点构成的服务系统,要提高总体性能,除了单节点足够强悍外,节点之间的通讯代价是必须考虑的关键。我们在刚开始的章节,就谈到网卡和磁盘是挂接在低速南桥芯片上,即使现在网卡速度已经非常快了。

在网络部分,我们通常是基于TCP/IP协议栈。现在虽然有很多变种和扩展,但仍然是基础。在采取提高性能措施之前,需要能清晰计算出网络的极限性能是多少。

网卡制造商通常会标注网卡的带宽或者网速是多少,比如1Gb/s。在早期,单位是1Kb等于1000比特,不是程序员认为的1024比特,不知道现在还不是这个德性。我们就假设1Gb/S为每秒2^30比特,不影响计算公式。

首先要确认下,网卡标注的是物理层比特流速度,并不是网络层的网速。以最常用的以太网帧协议来讲解,一个以太网帧,包括7个字节的前导字节,1个字节的帧开始定界符,64字节<-->1518字节的链路层报文,最后再附带上12个字节帧间距。所以,对于任何一个以太网帧,有个最小的帧尺寸:7 + 1 +64 + 12=84字节,这个最小尺寸就决定了在网络上每秒传输最多的次数,PPS。这个数字非常重要,决定了吞吐量和延迟的上限。

其次,在链路层的字节数范围是 : 64字节到1518字节,包括6个字节的目标MAC地址,6个字节的源MAC地址,2个字节的类型,最小为46字节,最大为1500个字节的IP包,再加上4个字节的校验码,最小共计64个字节。我们常说的MTU是1500个字节,其实指的IP包。

到这里,我们基本解释清楚了,为什么对于IP包来说,最小是46个字节,最大是1500字节。对于应用层来说,以TCP为例,还要扣去IP头20个字节,TCP头20个固定字节,则最小是6个字节有效载荷,最大是1460个字节。以UDP为例,IP头还是20个字节,UDP头就只有8个字节,比TCP多出了12个字节。

最后做个总结,要计算应用层的有效载荷,先根据网速计算出PPS,再扣去以太网帧,链路层,IP层、TCP层这些固定损耗,就能得出每个数据包最大和最小有效载荷。对于TCP稍微要麻烦点,因为有些ACK包,还有重传包,同样也会消耗掉有效载荷。再结合测试工具iperf之类,就知道真实的有效载荷是多少,更重要的是,知道为什么是这个数值。

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

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

相关文章

Java项目:46 ssm005基于SSM框架的购物商城系统+jsp(含文档)

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 项目是单体ssm电商水果平台&#xff0c;包括前台商城平台及后台管理系统 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流…

连接端口和连接端口转换OrCAD补丁

来介绍此功能之前先复习一下一些OrCAD的基础知识。 说到连通两个器件&#xff0c;有什么办法呢&#xff1f;最直接的就是用线连通。比如下面这两个器件需要连通&#xff0c;我们可以直接用线Place wire连接。 但是如果这两个器件由于某些原因&#xff0c;他们之间相隔很远&…

c# 使用 Oxyplot 创建和绘制 ContourSeries

我有一个 WPF 应用程序&#xff0c;我需要在其中可视化 y y(x1, x2)&#xff0c;其中 x1、x2 是线性坐标。我可以使用 Oxyplot 中的 HeatMapSeries 来做到这一点&#xff0c;但是当我想在同一窗口中绘制两组数据时&#xff0c;热图不是合适的工具。几个轮廓系列会更好。 现在&…

MS5583N高分辨率模数转换器

产品简述 MS5583N 是一款高分辨率模数转换器&#xff0c;内部集 成高阶 Σ-Δ 调制器、低噪声可编程增益放大器、多 路输入选择器和多种内部数字滤波器。其转换速率 从 250SPS 到 4kSPS 。此外&#xff0c;芯片内部集成失调校准 寄存器和增益校准寄存器。 MS5583N …

题目 2113: T1309-回文数

题目描述: 若一个数&#xff08;首位不为零&#xff09;从左向右读与从右向左读都是一样&#xff0c;我们就将其称之为回文数。例如&#xff1a;给定一个 10进制数 56&#xff0c;将 56加 65&#xff08;即把56从右向左读&#xff09;&#xff0c;得到 121是一个回文数。又如&…

haproxy-高性能负载均衡反向代理服务

目录 一、HAProxy&#xff08;High Availability Proxy&#xff09;概述 1、HAProxy的概念 2、HAProxy的主要特性 3、HAProxy的优缺点 4、Haproxy负载均衡策略 5、LVS、nginx、HAProxy的区别 二、安装HAProxy 1、yum安装 2、第三方rpm包安装 3、编译安装 3.1 解决 l…

流量分析-webshell管理工具

文章目录 CSCS的工作原理CS流量特征 菜刀phpJSPASP 蚁剑冰蝎哥斯拉 对于常见的webshell管理工具有中国菜刀&#xff0c;蚁剑&#xff0c;冰蝎&#xff0c;哥斯拉。同时还有渗透工具cobaltstrike(CS)。 CS CobaltStrike有控制端&#xff0c;被控端&#xff0c;服务端。(相当于黑…

day52 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

考虑到一般动态规划的写法是n方&#xff0c;为了降低复杂度&#xff0c;考虑每次假如选择当前数dp[i]对应最长的序列&#xff0c;就找前面上一个数&#xff08;已经做递推的时候记录了上一个数的比他小的一个数&#xff0c;因为等于上一个比他小的数的序列长度&#xff08;已经…

寻找峰值(二分查找思想)

解法一&#xff1a;暴力求解 int findPeakElement(int* nums, int numsLen ) {// write code herefor (int i 1; i < numsLen - 1; i) {if ((nums[i] > nums[i - 1]) && (nums[i] > nums[i1])) {return i;}}if (nums[numsLen - 1] > nums[numsLen - 2]) …

ubuntu docker-compose 编排容器并且设置自启动

安装docker-compose sudo apt install docker-compose编写docker-compose.yml 这是我的docker-compose,里面写了5个容器&#xff0c;一个sqlserver的db&#xff0c;一个airlfow&#xff0c;一个我的主项目&#xff0c;会根据里面规定好的启动顺序启动。 version: "3.7&…

蓝桥杯练习系统(算法训练)ALGO-980 斐波那契串

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;10.0s Java时间限制&#xff1a;30.0s Python时间限制&#xff1a;50.0s 问题描述 斐波那契串由下列规则生成&#xff1a;   F[0] "0";   F[1] "1";   F[n] F[n-1] F[n-2]…

鸿蒙开发为什么这么火,现在入行鸿蒙是否来的及?

鸿蒙开发是当前备受关注的技术领域之一&#xff0c;对于想要入门学习鸿蒙开发的初学者来说&#xff0c;需要掌握一定的基础知识和技能。鸿蒙开发又是否能为程序员们带来一片光明的未来呢&#xff1f;让我们一同探讨这些问题。 对于初学者来说&#xff0c;鸿蒙开发是否易于上手呢…

MySQL基础-----多表关系与查询概述

目录 前言 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.概述 2.笛卡尔积 3.分类 前言 本期我们开始学习新的章节&#xff0c;也就是MySQL的多表关系与查询&#xff0c;在本期主要是讲述概念性的东西&#xff0c;大概介绍多表关系是什么&#xff0c;为什…

洛谷 P1706 全排列问题

题目描述 按照字典序输出自然数 11 到 nn 所有不重复的排列&#xff0c;即 nn 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 nn。 输出格式 由 1 \sim n1∼n 组成的所有不重复的数字序列&#xff0c;每行一个序列。 每个数字…

应用方案 | D54123B低功耗漏电保护电路

概 述 A&#xff09;、D54123B是一款高性能 CMOS 漏电保护器专用电路。芯片内部包含稳压电源、放大电路、比较器电路、延时电路、计数器电路、跳闸控制电路及跳闸驱动电路。芯片外围应用有脱扣线圈、压敏电阻、稳压二级管、二级管、电阻、电容等元器件。 B&#xff09;、内部…

C# 使用DocX生成word文档

1、引用DocX包3.0.0版本 2、引用包 using Xceed.Words.NET; 3、生成word文档 // 保存文档到 Streamvar stream new MemoryStream();// 创建一个新的文档using (var doc DocX.Create("Document")){// 添加页眉doc.AddHeaders();Header header doc.Headers.Odd;/…

docker的快速入门教程

Docker的快速入门教程主要包括以下几个步骤&#xff1a; 一、安装Docker 根据你的操作系统&#xff0c;下载并安装Docker。例如&#xff0c;在Ubuntu下&#xff0c;你可以直接使用apt-get进行安装。在安装完成后&#xff0c;启动Docker服务&#xff0c;并将其设置为开机启动。…

基于SSM SpringBoot vue家教交流平台

基于SSM SpringBoot vue家教交流平台 系统功能 管理员登录 家长登录注册 学生登录注册 教师登录注册 个人中心 家长信息管理 学生信息管理 教师信息管理 招聘家教管理 应聘家教管理 确认招聘管理 论坛管理 系统管理 我的收藏管理 管理员管理 开发环境和技术 开发语言&#x…

宏任务与微任务:JavaScript异步编程的秘密

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

高等数学常用公式

高等数学常用公式 文章目录 内容大纲 内容 大纲 感谢观看 期待关注 有问题的小伙伴请在下方留言&#xff0c;喜欢就点个赞吧