【Linux】MAC帧
目录
一、MAC帧
(一)IP地址和MAC地址
(二)MAC帧格式
(三)MTU对IP协议的影响、
(四)MTU对UDP协议的影响
(五)MTU对TCP协议的影响
二、以太网协议
(一)以太网MAC帧如何进行解包和分用
(二)局域网中转发原理
三、ARP协议
(一)ARP协议的作用
(二)ARP数据报的格式
(三)ARP协议的工作流程
(四)RARP协议
四、相关的技术与协议
(一)DNS协议
(二)ICMP协议
(三)代理服务器
一、MAC帧
(一)IP地址和MAC地址
通过上节我们了解一台入网的主机的IP地址是有可能发生变化的,例如该主机处于不同的网络或重新入网时路由器分配了新的IP地址,因此仅靠IP地址是无法完成网络中数据通信的,因此引入了MAC地址。
MAC地址用来区别数据链路层中相连的节点,MAC地址是网络接口卡的硬件标识符,全球唯一,主要作用于数据链路层,描述的是数据传输中每个区间的起点和终点。
MAC地址一共48位,全球任意一张网卡都有唯一的MAC地址。使用 ifconfig 命令可查看本机的MAC地址:

(二)MAC帧格式

目的地址:目的主机的MAC地址;
源地址:发送主机的MAC地址;
类型:MAC帧类型;
CRC:MAC帧校验码。
数据链路层的MAC数据帧协议规定了单帧有效载荷最大为1500字节,有效载荷的最大值称MTU最大传送单元。
在网络通信中,真正决定数据发送的是传输层,因此数据包的大小实际由传输层决定。若传输层向下交付的数据包过大,则需要IP层将数据进行分片以及重组,而数据链路层对此并不关心只负责数据包的发送。
在网络传输中,不仅仅只有主机采用MTU最大传输单元,对于中间节点的路由器同样也存在MTU最大传输单元,若报文大小超过了路由器的MTU最大传输单元且该数据报中的df = 0,那么路由器的IP层会再次对报文进行IP分片后发送报文,若df = 1 也就是禁止分片的话,路由器会将报文丢弃并通知发送端(ICMP报文)。
(三)MTU对IP协议的影响、
由于数据链路层MTU的限制,对于较大的IP数据包要进行分片:
当传输层交付的数据过大需要进行分片时,IP层首先将数据进行分割并填写相应的报头信息,其中被原始的数据报分配唯一的标识位,所有分片继承该标识,除了最后一个分片外,其他分片的标志位中的MF = 1,最后的标识位置0。置1表示后续还有分片,而置0表示后续没有分片即该数据报为最后一个分片。在分片的同时也需要填写片偏移大小,该字段用于表示该数据报的数据原处分配前数据的起始位置,其中除了最后一个分片以外,其他的分片的偏移量必须是8的整数倍。
当收到一个报文时,查看标志位的MF是否为1,若为1则说明该报文进行过分片操作并不是完整报文,若为0则需要查看该报文的偏移量,若偏移量不为0则说明该报文是被分片后的最后一个IP报文,若为0则说明该报文本身是个完整的报文;通过以上步骤即可验证该报文是否被分片,若没有进行分片该报文本身就是一个完整报文,若该报文进行过分片,需等到最后一个报文的到达。偏移量为数据处原始数据的起始地址。因此当收到最后一个报文后,只需要将各个报文按偏移量大小进行排序,验证各个相邻报文之间的是否连续即可判断收到的所有分片报文是否完整。若完整则重新组装后交付给上层。
在传输过程中,数据包进行分片后的小数据包中任意一个小包丢失,接受端的重组就会失败,若需要重新发送数据包,是需要将整个数据包重新进行分片后再此全部发给发送端的,IP层不服职责重新传输数据,由上层决定。因此在实际传输中,传输层会避免向下交付的数据包过大而导致IP分片的,IP分片不仅仅增加了网络层的负担,也增加了整个数据包重传的风险。
(四)MTU对UDP协议的影响
- 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)), 那么就会在网络层分成多个IP数据报。
- 这多个IP数据报有任意一个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据报在网络层被分片, 整个数据被丢失的概率就大大增加了。
(五)MTU对TCP协议的影响
- TCP的数据不能过大,IP协议受制于MTU,同样的TCP协议也受制于MTU,TCP协议蛋哥数据报的最大消息长度称为MSS(Max Segment Size)
- TCP在建立连接时,通信双方会协商MSS大小:双方在发送SYN时会把自己能支持的最大MSS值写入TCP首部,一般取双方较小的作为最终MSS;
- 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度;
- MSS的值就在TCP首部的40字节变长选项中。
二、以太网协议
(一)以太网MAC帧如何进行解包和分用

MAC帧采用定长的策略,对于一个MAC帧而言,首部为 6+6+2 = 14字节以及有效载荷后的4字节CRC校验位,解包时去掉以上部分即为有效载荷。
在MAC帧首部由类型字段,根据该类型字段即可了解将有效载荷交付给上层的哪种协议,例如0800代表是IP数据报,0806为ARP协议。
(二)局域网中转发原理

当局域网内的一台主机发送了一个MAC帧后,局域网内的所有主机都可以收到该MAC帧,而只有其目的地址为本主机的MAC地址时,该主机数据链路层才会把该数据向上交付,而其他主机会直接将该MAC帧丢弃。在局域网中,网卡有一种“混杂模式”,该模式下不会放弃任何数据帧,物理MAC帧内的目的地址是否为主机的MAC地址,都会将MAC帧解包后向上交付,这也是局域网内抓包工具的原理。
因此在一个局域网内如果多个主机同时发送数据,那么总线上的信号会相互干扰产生碰撞冲突。所以在同一时刻只有一台主机能够发送数据。因此需要约定一些协议保证数据的正常发送:
令牌环:令牌环网络中有一个令牌(Token)在环路上循环传递。只有持有令牌的节点才能发送数据,其他节点则监听该链路以接收数据。当节点需要发送数据时,它会将数据附加到令牌上,并将令牌继续传递下去。每个节点在接收到令牌时检查是否有附加的数据,如果有,节点就将数据提取出来并处理。
以太网:以太网使用一种称为CSMA/CD(带冲突检测的载波侦听多路访问)的协议来管理和调度数据传输。在CSMA/CD中,每个节点都监听网络上的信道来检测是否有其他节点正在发送数据;如果检测到信道空闲,则节点可以开始发送数据;否则,节点会等待一段随机时间后再次尝试发送;当多个主机同时发送该数据导致冲突时,所有主机停止发送并发送阻塞清号,随后二进制指数退避算法重新尝试发送。
当局域网上的主机越多时,越容易发生数据碰撞冲突,因此可以在局域网中使用交换机。

交换机可以隔绝冲突域。正常情况下,交换机并不影响局域网内的通信,例如当主机A向主机E发送数据时,交换机会正常将数据进行转发;当主机A和主机B同时向主机D发送数据时发生冲突,当交换机左侧(如图)发生冲突时并不会将发生冲突的数据转发给右侧,而右侧也就是主机C和主机E之间仍然可以继续进行正常的通信不受左侧冲突的影响。
对于每条MAC的数据长度,数据越长,越有可能发生碰撞,这也是MAC帧协议限制有效载荷最大是1500字节的原因。
三、ARP协议
ARP协议是介于数据链路层和网络层之间的协议,用于使用IP地址来获取MAC地址。
在网络传输过程总,IP地址就相当于最终目的地,而MAC地址相当于中间途径的地址。数据报封装为MAC帧时需要目的MAC地址。当主机向服务器发送数据时,主机如何知道所处网段的公网路由器的MAC地址是多少?当报文到达目的网络时,路由器又怎么知道该数据包的目的地址的MAC地址是多少?这些实际都需要MAC地址。
(一)ARP协议的作用
ARP协议建立了主机IP地址和MAC地址的映射关系
- 在网络通信中,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
- 数据包首先是呗网络接收到再去交给上层协议的,如果收到的数据包的目的硬件地址与本主机不符,则会直接丢弃数据包;
- 因此在通信前必须获得目的主机的硬件地址
(二)ARP数据报的格式

- 注意源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层为其他类型的网络则是有必要的;
- 硬件类型指的是链路层网络类型,以太网为1;
- 协议类型指要转换的地址类型,0x0800为IP地址;
- 硬件地址长度对于以太网地址为6字节;
- 协议地址长度对于IP地址为4字节;
- op字段为1表示ARP请求,op表示为2表示ARP应答;
(三)ARP协议的工作流程

当主机A需要向主机E发送数据时,由于主机A只知道主机E的IP地址,因此需要通过ARP协议获取主机E的MAC地址。
首先主机A发送ARP请求报文,其中ARP报文中的以太网目的地址为全F,也就是为广播地址。局域网内的所有主机都会收到该请求报文,由于报文中的以太网目的地址为广播地址,对MAC帧首部进行解包后查看帧类型字段并将其交给ARP协议处理。首先读取ARP请求报文的op字段,若op字段为1即确认该报文为ARP请求报文,再查看目的IP地址是否为本主机的IP地址(目的以太网地址为全F),若不为本主机的IP地址则将该报文丢弃。
当主机E收到该ARP请求报文后,经过处理后向主机A回送ARP响应报文,其中MAC帧首部的目的地址为主机A的MAC地址,也就是单播地址。当其他主机收到该报文后查看MAC目的地址并不是本机的MAC地址后会将该报文进行丢弃。当主机A收到该ARP响应报文后对其进行解包,查看op字段,若op字段为2即该报文为ARP响应报文,再查看发送端以太网地址字段获取主机E的MAC地址。
除此之外,局域网内的设备实际还会维护一张ARP缓存表,用于映射IP地址和MAC地址的关系,每次封装MAC帧时首先会进行查表,若表中不存在目标条目的话才会进行ARP协议请求。
(四)RARP协议
RARP协议与ARP协议过程类似,不过其作用为MAC地址映射IP地址,也就是知道目的主机的MAC地址,但不知道其IP地址,因此需要通过RARP协议来获取目的主机的IP地址。
四、相关的技术与协议
(一)DNS协议
当我们通过网络访问服务器时,我们输入的往往是域名,例如我们访问百度时只需要搜索百度的域名而不是其IP地址,这是因为IP对人的记忆及使用不友好,域名网址就比较直观了,而由域名到IP地址的映射实际是由DNS来完成的。
DNS域名系统是互联网的核心基础设施之一,承担着将人类可读的域名转换为机器可识别的IP地址的关键任务。
百度的域名:www.baidu.com
com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等。
baidu: 二级域名, 公司名。
www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议。在浏览器输入域名时可以省略。
域名服务器一共有三类,根服务器、权威服务器和递归服务器。
根服务器:全球共13组。存储顶级域服务器地址;
权威服务器:管理特定域名的解析记录;
递归服务器:接收用户查询并完成全链路解析。
下面简单介绍下DNS解析的一般流程:
- 当用户访问www.baidu.com时,先检查本地缓存(浏览器/操作系统缓存),命中则直接返回IP;
- 未命中则向递归服务器发送请求,递归服务器依次查询根服务器、.com服务器、baidu.com权威服务器,最终获取IP并返回;
- 递归服务器缓存结果,其生存时间决定缓存有效期。
目前计算机上仍然保留了hosts文件,在域名解析的过程中仍然会优先查找hosts文件的内容。
(二)ICMP协议
IP协议并不是可靠的协议,如果在传输过程中丢包了,IP协议是无法得知是否出现了丢包。因此引入了ICMP协议。
ICMP互联网控制报文协议,TCP/IP协议族中的核心网络层协议,主要用于在IP主机和路由器之间传递控制消息,辅助网络通信的可靠性和诊断。
ICMP协议提供了以下功能:
差错报文:
- 目标不可达;
- 超时报文:TTL耗尽或分片重组超时;
- 重定向:通知发送端更有路由路径。
查询报文:
- Echo请求/应答:用于Ping等工具;
- 时间戳请求或应答:同步网络设备时间。
ICMP协议是基于IP协议的,但是它并不是传输层的功能,因此将其归于网络层协议,ICMP协议只能搭配IPv4协议使用,若是IPv6则需要ICMPv6.
PING命令实际就是基ICMP协议实现的。

Ping命令通过发送ICMP Echo请求并等待Echo应答,测试两台主机的连通性。
1、此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址;
2、ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期);
3、ping命令会先发送一个 ICMP Echo Request给对端;
4、对端接收到之后, 会返回一个ICMP Echo Reply;
ping命令是不关注端口的,因为ping命令是基于ICMP, 是在网络层;而端口号, 是传输层的内容。在ICMP中根本就不关注端口号这样的信息。
(三)代理服务器

正向代理:正向代理是客户端与目标服务器之间的中介,代理对象是客户端。客户端通过代理服务器间接访问目标服务器,隐藏自身真实信息。
反向代理:客反向代理是服务器端的中介,代理对象是服务器。客户端直接访问反向代理,由代理将请求分发到后端服务器。
采用反向代理可以实现负载均衡策略:客户端可能会发送大量的数据,反向代理服务器需要合理的将数据分配给服务器集群。
作为反向代理的服务器,需要配置较高,充当软件服务的可以是Nginx(Web服务器,不做业务处理,只做转发处理),当反向代理服务器中的服务器集群将请求处理完,可以通过代理服务器将结果发回给客户端,也可以直接发回给客户端。
NAT和代理服务器的区别:
1、从应用层面上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题。代理服务器则是更贴近具体应用, 比 如通过代理服务器进行翻墙;
2、从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换,代理服务器往往工作在应用层;
3、从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网。
4、从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上。
相关文章:
【Linux】MAC帧
目录 一、MAC帧 (一)IP地址和MAC地址 (二)MAC帧格式 (三)MTU对IP协议的影响、 (四)MTU对UDP协议的影响 (五)MTU对TCP协议的影响 二、以太网协议 &…...
Codeforces Round 1013 (Div. 3)(A-F)
题目链接:Dashboard - Codeforces Round 1013 (Div. 3) - Codeforces A. Olympiad Date 思路 找到第一个位置能凑齐01032025的位置 代码 void solve(){int n;cin>>n;vi a(n10);int id0;map<int,int> mp;for(int i1;i<n;i){cin>>a[i];mp[a…...
Flink 常用及优化参数
流批模式 SET execution.runtime-mode streaming; // or batch基础 Checkpoint 配置 -- 启用 Checkpoint,间隔 5 分钟 SET execution.checkpointing.interval 5min; -- Checkpoint 超时时间(10 分钟) SET execution.checkpointing.timeou…...
Vite 与 Nuxt 深度对比分析
一、核心定位差异 二、核心功能对比 渲染能力 Vite:默认仅支持客户端渲染(CSR),需通过插件(如vite-plugin-ssr)实现 SSR/SSG,但配置灵活 Nuxt:原生支持 SSR(服务端渲…...
Linux内核 内存管理 物理内存初始化流程
1.ARM64页表初始化流程图 start_kernel()│▼ setup_arch() // 架构相关初始化│▼ early_fixmap_init() // 初始化Fixmap(临时映射设备树等)│▼ arm64_memblock_init() // 从设备树解析内存布局│▼ arm…...
PyBluez2 的详细介绍、安装指南、使用方法及配置说明
PyBluez2:Python 蓝牙开发的核心库 一、PyBluez2 简介 PyBluez2 是 Python 的开源蓝牙编程库,支持蓝牙 2.0、BLE(低功耗蓝牙)和传统蓝牙协议栈的开发。它提供了对蓝牙硬件适配器的底层控制,适用于设备发现、配对、数…...
通过一个led点灯的demo来熟悉openharmony驱动编写的过程(附带hdf详细调用过程)
概述 本应用程序(led_rgb)是在上实现直接通过消息机制与内核驱动进行交互,设置RGB三色灯的亮灯行为。我从网上随便找了个demo测试了一下,坑了三天…,整个状态如下图,同时也迫使我深度梳理了一下整个流程框架。直到绝望的时候&…...
pycharm2024.1.1版本_jihuo
目录 前置: 步骤: step one 下载软件 step two 卸载旧版本 1 卸载软件 2 清除残余 step three 下载补丁 step four 安装2024.1.1版本软件 step five 安装补丁 1 找位置放补丁 2 自动设置环境变量 step six 输入jihuo码 前置: 之…...
目标检测20年(四)——最终章
欢迎各位读者尽情阅读前三篇文献解读。这一篇将会介绍文献的第五部分:目标检测近些年的新技术发展以及第六部分:总结与未来展望。这也是本篇论文解读的最后一篇文章。 目录 五、目标检测最新进展 5.1 不采用滑动窗口的检测 5.2 旋转和尺度变化的鲁棒性…...
PyTorch处理数据--Dataset和DataLoader
在 PyTorch 中,Dataset 和 DataLoader 是处理数据的核心工具。它们的作用是将数据高效地加载到模型中,支持批量处理、多线程加速和数据增强等功能。 一、Dataset:数据集的抽象 Dataset 是一个抽象类,用于表示数据集的接口。你…...
【Linux】POSIX信号量与基于环形队列的生产消费者模型
目录 一、POSIX信号量: 接口: 二、基于环形队列的生产消费者模型 环形队列: 单生产单消费实现代码: RingQueue.hpp: main.cc: 多生产多消费实现代码: RingQueue.hpp: main.…...
Spring Boot 连接 MySQL 配置参数详解
Spring Boot 连接 MySQL 配置参数详解 前言参数及含义常用参数及讲解和示例useUnicode 参数说明: 完整配置示例注意事项 前言 在 Spring Boot 中使用 Druid 连接池配置 MySQL 数据库连接时,URL 中 ? 后面的参数用于指定连接的各种属性。以下是常见参数…...
[linux] linux基本指令 + shell + 文件权限
目录 1. Linux的认识 1.1. Linux的应用场景 1.2. Linux的版本问题 1.3. 操作系统的认识 1.4. 常用快捷键 2. 常用指令介绍 2.1. ADD 2.1.1. touch [file] 2.1.1.1. 文件的属性信息 2.1.2. mkdir [directory] 2.1.3. cp [file/directory] 2.1.4. echo [file] 2.1.4.…...
查看进程文件描述符的限制
查看进程文件描述符限制 rootgb:/home/gb/Monitor-Device-Mgr/Monitor-Device-Mgr/bin# ps -ef |grep Monitor-Device-Mgr root 3976 2380 59 11:10 pts/2 00:00:06 ./Monitor-Device-Mgr root 4010 2395 0 11:10 pts/3 00:00:00 grep --colorauto Monito…...
Python实现小红书app版爬虫
简介:由于数据需求的日益增大,小红书网页版已经不能满足我们日常工作的需求,为此,小编特地开发了小红书手机版算法,方便大家获取更多的数据,提升工作效率。 手机版接口主要包括:搜素࿰…...
【docker】docker-compose安装RabbitMQ
docker-compose安装RabbitMQ 1、配置docker-compose.yml文件(docker容器里面的目录请勿修改)2、启动mq3、访问mq4、查看服务器映射目录5、踩坑5.1、权限不足 1、配置docker-compose.yml文件(docker容器里面的目录请勿修改) versi…...
playwright-go实战:自动化登录测试
1.新建项目 打开Goland新建项目playwright-go-demo 项目初始化完成后打开终端输入命令: #安装项目依赖 go get -u github.com/playwright-community/playwright-go #安装浏览器 go run github.com/playwright-community/playwright-go/cmd/playwrightlatest insta…...
LeetCode hot 100 每日一题(13)——73. 矩阵置零
这是一道难度为中等的题目,让我们来看看题目描述: 给定一个 _m_ x _n_ 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示: m matrix.lengthn matrix[0].length1 < m, n …...
CEF 给交互函数, 添加控制台是否显示交互参数log开关
CEF 控制台添加一函数,枚举 注册的供前端使用的CPP交互函数有哪些 CEF 多进程模式时,注入函数,获得交互信息-CSDN博客 这两篇文章,介绍了注入函数,在控制台中显示 各自提供的交互函数信息。 有些场景下,我们还需要更详细的信息,比如想知道 彼此传递的参数, 如果每次调…...
云端存储新纪元:SAN架构驱动的智能网盘解决方案
一、企业存储的"不可能三角"破局 1.1 传统存储架构的困局 性能瓶颈:NAS架构在1000并发访问时延迟飙升300%容量限制:传统RAID扩容需停机维护,PB级存储扩展耗时超48小时成本矛盾:全闪存阵列每TB成本高达$3000࿰…...
PVE 安装黑苹果 MacOS
背景 我需要一台黑苹果,登录我不常用苹果账号。 方法 The Definitive Guide to Running MacOS in ProxmoxRunning a MacOS 15 Sequoia VM in ProxMox VE及视频 按照第二个的视频一步一步配置,第一个链接提供了不同版本OS...
Unity URP自定义Shader支持RenderLayer
前言: 当我们想用一个灯光只对特定的物体造成影响,而不对其余物体造成影响时,我们就需要设置相对应的LightLayer,但是这在URP12.0是存在的,在之后就不存在LightLayer这一功能,URP将其隐藏而改成了RenderLa…...
Axure项目实战:智慧城市APP(完整交互汇总版)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:智慧城市APP 主要内容:主功能(社保查询、医疗信息、公交查询等)、活动、消息、我的页面汇总 应用场景ÿ…...
LVS-DR模式配置脚本
LVS-DR模式配置脚本 实验环境,需要4台虚拟机 IP说明172.25.254.101客户端172.25.254.102负载均衡器DS172.25.254.103真实服务器RS172.25.254.104真实服务器RSVIP:172.25.254.255/32 系统必须有ipvsadm和ifconfig命令 dnf install ipvsadm dnf install n…...
树状数组 3 :区间修改,区间查询
【题目描述】 这是一道模板题。 给定数列 a[1],a[2],…,a[n],你需要依次进行q个操作,操作有两类: 1lrx:给定 l,r,x对于所有 i∈[l,r],将a[i]加上x(换言之,将 a[l],a[l1],…a[r] 分别加上 x&a…...
架构思维:预约抢茅子架构设计
文章目录 案例:预约抢茅子复杂度分析商品预约阶段等待抢购阶段商品抢购阶段订单支付阶段 技术方案商品预约阶段一、基于 Redis 单节点的分布式锁方案1. 核心流程2. 关键设计点 二、Redis 单节点方案的局限性1. 单点故障风险2. 主从切换问题 三、多节点 Redis 实现高…...
使用 gone.WrapFunctionProvider 快速接入第三方服务
项目地址:https://github.com/gone-io/gone 本文中源代码: esexamples/es 文章目录 1. gone.WrapFunctionProvider 简介2. 配置注入实现3. 实战示例:Elasticsearch 集成4. 使用方式5. 最佳实践6. 总结 在如何给Gone框架编写Goner组件…...
基于SpringBoot+Vue的在教务管理(课程管理)系统+LW示例
1.项目介绍 系统角色:管理员、学生、教师功能模块:管理员(学院管理、专业管理、班级管理、学生管理、教师管理、课程管理、选课修改)、教师(授课查询、教师课表、成绩录入)、学生(选修课程、学…...
gitee 常用指令
1.拉取代码 // http git clone http.........// https git clone https......... 2. 设置自己账户和密码 ----- 绑定git git config --global user.name "你的用户名"git config --global user.email "你的邮箱" 3. 上传本地代码至git git initgit r…...
etcd性能测试
etcd性能测试 本文参考官方文档完成etcd性能测试,提供etcd官方推荐的性能测试方案。 1. 理解性能:延迟与吞吐量 etcd 提供稳定、持续的高性能。有两个因素决定性能:延迟和吞吐量。延迟是完成一项操作所花费的时间。吞吐量是在某个时间段内…...
