当前位置: 首页 > news >正文

Linux驱动开发-网络设备驱动

Linux驱动开发-网络设备驱动

  • 一,网络设备总体结构
    • 1.1 总体架构
    • 1.2 NAPI数据处理机制
  • 二,RMII和MDIO
    • 2.1 RMII接口
    • 2.2 MDIO接口
  • 三,MAC和PHY模块
    • 3.1 MAC模块
    • 3.2 PHY模块
  • 四,网络模型
    • 4.1 网络的OSI和TCP/IP分层模型
      • 4.1.1 传输层:TCP和UDP
        • 4.1.1.1 TCP
          • ① 三次握手
          • ② 确认机制
          • ③ 四次挥手
        • 4.1.1.2 UDP
      • 4.1.2 网络层
      • 4.1.3 物理链路层

一,网络设备总体结构

1.1 总体架构

在这里插入图片描述
请添加图片描述
  SOC即主控芯片,目前大部分内部集成MAC模块,通过RMII和PHY芯片连接,RMII接口进行的是网络数据的传输,MDIO总线,设置PHY芯片寄存器。

1.2 NAPI数据处理机制

  比如现在有网络数据输入,不可能一有数据传输过来,就执行中断,那么会一直占据中断,消耗CPU处理时间,如果采用轮询的方式,每隔一定时间查询一下是不是有数据了,这样处理就不及时。因此出现NAPI(New API)技术,将中断和轮询结合,采用中断唤醒数据接收服务程序,在中断接收服务程序中采用轮询的方式处理数据,提高数据包接收效率,减少中断处理时间。

二,RMII和MDIO

2.1 RMII接口

  RMII(Reduced Media Independent Interface),是MII接口的精简版本,相对于MII少了9跟线,方便板子布线。
在这里插入图片描述
TX_EN:发送使能信号。
TXD[1:0]:发送数据信号线,两根。
RXD[1:0]:接收数据信号线,两根。
CRS_DV:接收数据有效和载波侦听信号结合。
REF_CLK:参考时钟,由外部时钟源提供,频率为50MHZ。

2.2 MDIO接口

  MDIO(Management Data Input/Output),即管理数据输入输出接口,两线串行接口,一根MDIO数据线,一根MDC时钟线。PHY驱动通过这两根线,访问PHY上面的任意寄存器,PHY驱动也可以通过这两根线,连接最多32个PHY,保证每个PHY器件地址不同,同一时刻只能对一个PHY芯片进行操作,类似于I2C,由下面的读写操作,和I2C读写不一样的,不过大体上相似。
数据帧(32位):| 前导码(32位) | ST(2) | OP(2) | PHYAD(5) | REGAD(5) | TA(2) | DATA(16) |
ST(Start):01表示帧开始。
OP(Operation):10表示写,01表示读。
PHYAD:PHY地址(0-31),因为是5位,因此有32种结果,十进制的话就是0到31。
REGAD:寄存器地址(0-31)。
TA(Turnaround):读操作时MDIO方向切换周期。
DATA:16位读写数据。
写操作:①拉高MDIO,生成MDC时钟②发送32位全为1的前导码③发送起始位01④发送操作码,10表示写⑤发送PHY地址⑥发送寄存器地址⑦发送两位10TA,表示不用切换方向⑧发送16位数据⑨MDIO释放总线
读操作:①发送前导码和起始位②发送操作码01,表示读③发送PHY地址④发送寄存器地址⑤发送TA,切换数据传输方向⑥PHY设备MDIO返回两位TA(00)+16位数据⑦释放总线
在这里插入图片描述

三,MAC和PHY模块

3.1 MAC模块

  即底层网络数据处理的驱动程序,整体围绕net_device这个具体网络设备,采用的是platform 驱动框架,创建出fec_driver结构体,包含probe函数和remove函数,probe函数主要是注册和初始化的相关工作,具体对数据的处理在ops操作函数里面,当打开网卡时,fec_enet_open函数执行,申请数据缓冲区,包括发送队列和接收队列缓冲区,探测并连接对应的PHY设备,使能NAPI调度,开启PHY设备,激活发送队列等工作。应用层有数据要发送,即sk_buff,会触发中断,中断函数中对NAPI进行调度,使能NAPI的poll轮询函数,类似于中断的上半部和下半部处理机制,在轮询函数中,真正的对数据进行处理,sk_buff一般会被网卡或者协议栈进行分段处理(数据包较大)。

在这里插入图片描述
在这里插入图片描述

3.2 PHY模块

  采用的是设备,总线,驱动框架,即PHY设备驱动,MDIO总线,PHY具体设备。phy_driver表示驱动,采用phy_device表示PHY设备,函数get_phy_device获取PHY设备,具体内容包括:获取PHY ID,对phy_device结构体中的成员进行初始化,总线有相应的文件。

四,网络模型

4.1 网络的OSI和TCP/IP分层模型

在这里插入图片描述

4.1.1 传输层:TCP和UDP

在这里插入图片描述

4.1.1.1 TCP

Source Port:源端口,标识哪个应用程序发送,16bit。
Destination Port:目的端口,标识哪个应用程序接收,16bit。
比如浏览网页**,客户端网页浏览器服务器网站**请求下载网页,客户端向服务器发了一个请求报文,这个报文的源端口就是客户网页浏览器的端口,目的端口就是网站服务器端口(HTTP应用)。
Sequence Number:序列号字段,每个TCP报文都有序列号,32bit。
Acknowledgment Number:确认号,对收到的报文进行确认,序列号和确认号,是为了保证每个发送过去的包,对方都能收到,我发出一个带有序列号的包,对方就要回一个带有确认号的包,这俩号是有一定关系的。
Header Length:头部长度,TCP报文头部长度,不是数据长度。
Control bits:控制位,有FIN,ACK,SYN标志位。
Window:窗口值,表示当前接收端能够接收的最大数据总数,以字节为单位,就是接收方告诉发送方,能接收的能力
Checksum:校验字段。
在这里插入图片描述

① 三次握手

在这里插入图片描述
  三次握手是建立连接用的,SYN,ACK是控制位①PC1发送握手请求,SYN置位为1,序列号Seq为a,Ack为0,发送给PC2。②PC2接收到信号,要给PC1反馈个信息,让PC1知道PC2准备好了,并且PC2也想知道PC1是不是准备好了,发送一个序列号为b(任意),Ack信号为a+1(表示PC2准备好了)此时的控制位SYN和ACK置位。③PC1想让PC2知道,他也准备好了,于是会再反馈一个信号,序列号Seq为a+1(PC1的第一个信号a,因此下一个信号a+1),Ack信号为b+1(表示准备好了)。PC1准备好,PC2也准备好,就建立其连接。

② 确认机制

在这里插入图片描述

  确认机制就是判断每个TCP的数据包,发送过去以后,对方是否能接收到。在三次握手建立连接后,PC1发送一个数据包,Seq为a+1,Ack为b+1,载荷长度为12,当PC2接收到这个数据包后,会给PC1反馈一个Seq为b+1,Ack为PC1的Seq(a+1)+载荷(12),即a+1+12,PC2的载荷为0,此数据包发送给PC1,表示PC2接收到PC1发送的数据包了。

③ 四次挥手

在这里插入图片描述

  四次挥手是在发送结束时候用的,通信时双向的,当PC1发送结束,会给PC2发送一个数据包,控制位的FIN置位,ACK置位,序列号Seq=101,Ack=301,PC2接收到PC1这个数据结束的数据包,会给PC1发送一个Seq=PC1的Ack,即301,Ack为PC1的Seq(101)+1=102,此时控制位ACK置位。同样PC2发送完数据,也会和PC1这个过程类似。四次挥手后,TCP连接断开。

4.1.1.2 UDP

Source Port:源端口,标识哪个应用程序发送,16bit。
Destination Port:目的端口,标识哪个应用程序接收,16bit。
Length:报文总长度。
UDP模式加上端口号后,直接发送即可,不用在乎目的地址信息是否有反馈。

4.1.2 网络层

  网络层接收到传输层发来的数据,会封装一个IP报文头部,把源IP地址和目的IP地址放到头部中,中间经过网络设备,比如路由器,路由器内部有路由表,读取IP数据包的目的IP地址,转发这个数据包。

4.1.3 物理链路层

在这里插入图片描述

  传输层(网线,光纤)→网络层(路由器)→物理链路层(交换机)。在物理链路层,会给IP数据包,加上MAC地址,在交换机中,根据这个MAC地址,将数据包发送到具体设备,比如主机上。具体怎么获取MAC地址,是通过ARP请求,源Host A会给Host B发送一个ARP请求,带有Host B这个目的IP,Host B接收到这个ARP请求后,会反馈带有Host A的IP地址和Host B的MAC地址的数据包。

上述网络模型图,来自B站:网络工程师学长,https://www.bilibili.com/video/BV1P3411M7zF?p=13&vd_source=a11372469703158c2d89e1da0b799875

相关文章:

Linux驱动开发-网络设备驱动

Linux驱动开发-网络设备驱动 一,网络设备总体结构1.1 总体架构1.2 NAPI数据处理机制 二,RMII和MDIO2.1 RMII接口2.2 MDIO接口 三,MAC和PHY模块3.1 MAC模块3.2 PHY模块 四,网络模型4.1 网络的OSI和TCP/IP分层模型4.1.1 传输层&…...

CTF web入门之文件包含

web78: include函数执行file引入的文件,如果执行不成功,就高亮显示当前页面的源码。 方法一:filter伪协议 file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/readc…...

error: failed to run custom build command for `yeslogic-fontconfig-sys v6.0.0`

rust使用plotters时遇到编译错误。 一、错误 error: failed to run custom build command for yeslogic-fontconfig-sys v6.0.0 二、解决方法 我用的是opensuse,使用下面命令可以解决问题。 sudo zypper in fontconfig-devel...

低资源需求的大模型训练项目---调研0.5B大语言模型

一、主流0.5B大语言模型及性能对比 1. Qwen系列(阿里) • Qwen2.5-0.5B:阿里2024年9月开源的通义千问系列最小尺寸模型,支持32K上下文长度和8K生成长度。在中文场景下表现优异,指令跟踪、JSON结构化输出能力突出&…...

信息安全管理与评估广东省2023省赛正式赛题

任务1:网络平台搭建(60分) 题号 网络需求 1 根据网络拓扑图所示,按照IP地址参数表,对DCFW的名称、各接口IP地址进行配置。(10分) 2 根据网络拓扑图所示,按照IP地址参数表,对DCRS的名称进…...

LeetCode.225. 用队列实现栈

用队列实现栈 题目解题思路1. push2. pop3. empty CodeQueue.hQueue.cStack.c 题目 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现…...

CTF--bp

一、原题: (1)提示:弱密码top1000?z????? (2)原网页: 二、步骤: 1.先打开BP,随便输入一个密码: 2.打开BP,发现password&#…...

01_背包问题

package org.josh; import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int n scanner.nextInt(); // 物品数量 long w scanner.nextLong(); // 背包容量,使用long防止溢出 int[] v …...

ps 人像学习

视频: 一ps快捷键 1.1 创建图层 ctrlj 1.2 放大缩小图片的大小 按住alt 滚轮 1.3 移动图片 空格 左键 1.4 撤回 ctrlz 二 精修的第一步是去除斑点,瑕疵, 2.1 污点修复画笔工具 新建一个图层,点击污点修复工具进行修复…...

【AI论文】MM-IFEngine:迈向多模态指令遵循

摘要:指令遵循(IF)能力衡量多模态大语言模型(MLLM)准确理解用户告诉他们的内容以及他们是否做得正确的能力。 现有的多模态指令训练数据很少,基准测试简单,指令原子化,对于要求精确输…...

【C++初学】课后作业汇总复习(五) 单目运算符重载

本题主要考察-构造函数的定义和操作符重载、友元函数等 根据后缀和程序样例输出,完成分数类和相关函数的定义, 输入: -6 12 8 -16 输出: 1/2 1/1 -1/2 / -1/2 - -1/2 0/1 输入: 3 7 2 6 输出: 1/…...

Python基础语法速通(自用笔记)

目录 # 输出直接print就行了 # 次方,除法,取整 # 定义变量直接写就可以,不用写类型 # 基础的while不用写()和{},直接用冒号即可,缩进对齐 # 这里的for循环直接用in就可以,意思是从...中一个…...

Nginx基础讲解

Nginx基础讲解 Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、静态资源托管、SSL 终端等场景。以下是对 Nginx 的详细讲解: 1. Nginx 核心概念​ ​事件驱动架构​:基于异步非阻塞模型,高效处理高并发连接…...

K8S+Prometheus+Consul+alertWebhook实现全链路服务自动发现与监控、告警配置实战

系列文章目录 k8s服务注册到consul prometheus监控标签 文章目录 系列文章目录前言一、环境二、Prometheus部署1.下载2.部署3.验证 三、kube-prometheus添加自定义监控项1.准备yaml文件2.创建新的secret并应用到prometheus3.将yaml文件应用到集群4.重启prometheus-k8s pod5.访…...

组件安全工程化革命:从防御体系构建到安全基因重塑

文章目录 总起:数字世界的钢铁长城 分论: 一、组件生态的"七宗罪"与安全基因重组 二、百万级流量下的安全工程化实战 三、性能与安全的共生进化论 四、安全工程化全链路解决方案 总束:安全基因驱动的未来图景 五、时代思考…...

(PC+WAP)大气滚屏网站模板 电气电力设备网站源码下载

源码介绍 (PCWAP)大气滚屏网站模板 电气电力设备网站源码下载。PbootCMS内核开发的网站模板,该模板适用于滚屏网站模板、电气电力设备网站源码等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;PCWAP&#xff0c…...

发送加密信息的简单实现【Java】

(修改期) 一、代码的引用处 public static SecretKeys generateKeys() throws NoSuchAlgorithmException {: 定义一个公共静态方法,用于生成 AES 和 HMAC 密钥对。 public static String encrypt(String plaintext, SecretKey aesKey, S…...

阿里云域名解析

一、打开域名控制台 PC端浏览器打开阿里云域名控制台:域名控制台,点击"域名解析"。 二、添加解析设置 选择需要解析的域名,点击"解析设置"。 点击"添加记录"。 添加@和www即可。...

DNS域名解析服务(正向 反向 主从)

DNS 1.分散式管理: Hosts文件 一改百度就不会访问了 Ip地址 域名 121.226.246.3 www.jd.com 2.我们会搭建一台 域名解析服务器全世界得域名全靠这台服务器进行解析 中央集权制 域名是由多个部分组成的 www.baidu.com .baidu .com是域…...

ROS2---std_msgs基础消息包

std_msgs 是ROS 2(Robot Operating System 2)里的基础消息包,它定义了一系列简单却常用的消息类型,为不同节点间的通信提供了基础的数据格式。 1. 消息包概述 std_msgs 包包含了多种基础消息类型,这些类型用于表示常…...

python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)

目录 一、类型转换 隐式类型转换/自动转换: 显示类型转换/强制转换: 二、运算符 算数运算符: - * / 比较运算符 逻辑/布尔运算符 赋值运算符: 三元运算符 位运算符 [二进制] 运算符优先级 一、类型转换 python变量的类…...

[特殊字符] 终端效率提升指南:zsh + tmux

在日常开发中,一个舒适、高效的终端环境能显著提升工作效率。本文将介绍如何通过配置 oh-my-zsh 和 tmux 打造一个功能强大、便捷实用的终端工具集。无论你是 Linux 新手,还是资深开发者,都能从中获得实用的提升技巧。 🌀 一、终…...

【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析

文件系统的魔法:让计算机理解并存储你的数据 一. 文件系统1.1 块1.2 分区1.3 inode(索引节点) 二. ext2文件系统2.1 认识文件系统2.2 Block Group (块组)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 块组内部结构2.3.1 超级块(Super Bloc…...

MarkDown 输出表格的方法

MarkDown用来输出表格很简单,比Word手搓表格简单多了,而且方便修改。 MarkDown代码: |A|B|C|D| |:-|-:|:-:|-| |1|b|c|d| |2|b|c|d| |3|b|c|d| |4|b|c|d| |5|b|c|d|显示效果: ABCD1bcd2bcd3bcd4bcd5bcd A列强制左对齐&#xf…...

DOM解析XML:Java程序员的“乐高积木式“数据搭建

各位代码建筑师们!今天我们要玩一个把XML变成内存乐高城堡的游戏——DOM解析!和SAX那种"边看监控边破案"的刺激不同,DOM就像把整个乐高说明书一次性倒进大脑,然后慢慢拼装(内存:你不要过来啊&…...

Python 数组里找出子超集

碰见一个问题,有一个大数组,如下所示: xx [[1, 3, 4], [3, 4, 5], [1, 2, 3, 4, 5], [6], [7, 8], [6, 7, 8]]大数组里面有好多小的数组,观察发现,小的数组其实有挺多别的小数组的子集,现在问题来了&…...

上层 Makefile 控制下层 Makefile ---- 第二部分(补充一些例子与细节)

1. 递归调用子目录 Makefile 通过 $(MAKE) -C 进入子目录并执行其 Makefile,这是最常见的分层构建方法。 示例:基本递归调用 目录结构: project/ ├── Makefile # 顶层 Makefile ├── lib/ │ ├── Makefile # 子目录…...

LeetCode算法题(Go语言实现)_44

题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你…...

STM32 HAL库之USART示例代码

串口发送和接收以及回调函数都可在这个文件中查询:stm32f1xx_hal_uart.h 串口配置初始化代码main.c中:MX_USART1_UART_Init();,初始化 UART 高层参数(波特率、数据位、停止位、校验、模式等) void MX_USART1_UART_In…...

头歌educoder——数据库 第10-11章

第10章 1、 事务的( )特性要求事务必须被视为一个不可分割的最小工作单元 A、 原子性 B、 一致性 C、 隔离性 D、 持久性 2、 事务的( )特性要求一个事务在执行时,不会受到其他事务的影响。 A、 原子性 B、 一致性 C…...

从 Vue 到 React:深入理解 useState 的异步更新与函数式写法

目录 从 Vue 到 React:深入理解 useState 的异步更新与函数式写法1. Vue 的响应式回顾:每次赋值立即生效2. React 的状态更新是异步且批量的原因解析 3. 函数式更新:唯一的正确写法4. 对比 Vue vs React 状态更新5. React useState 的核心源码…...

如何实现元素随滚动平滑上升

#技术栈Vue3TypeScript# 相比大家没少见过这个的效果: 作为视觉效果是很不错的 同时实现也很简单,本质是封装一个Vue指令 1,创建指令文件 src / directives / vSlidenIn.ts import type { Directive } from vueconst vSlideIn: Directive …...

Nginx部署spa单页面的小bug

没部署过,都是给后端干的,自己尝试部署了一个下午终于成功了 我遇到的最大的bug是进入后只有首页正常显示 其他页面全是404,于是问问问才知道,需要这个 location / { try_files $uri $uri/ /index.html; } 让…...

关于全球化大规模混合云 Kubernetes Prometheus 监控体系标准化及 GitOps 自动化改进方案

背景 现状 某司概况: PaaS/SaaS 公司,业务面向全球,包括 东南亚/南亚/中东/欧洲/非洲/美洲/东亚…生产 k8s 集群数十套,生产非生产 >100 套(多种集群类型,各种公有云/专有云/私有云/数据中心…)疫情以来&#xff…...

力扣DAY51 | 热100 | 岛屿数量

前言 中等 √ 做得我元气大伤,超级naive方法,新开辟一个数组存岛屿编号,一个数组存岛屿上的点。 题目 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 …...

二叉树的最近公共祖先二叉搜索树的最近公共祖先

1 二叉树的最近公共祖先 学习: 代码 class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:if root is None or root is p or root is q:return rootleft self.lowestCommonAncestor(root.left,p,q)right …...

关于 LLB 的问题

This error occurs when you’re trying to run a program or library that was compiled with GLIBC (GNU C Library) version 2.29, but your system has an older version of GLIBC installed. Solutions: 1. Upgrade your system’s GLIBC (Recommended if possible) Fo…...

kafka4.0浅尝辄止

最近工作中接触消息队列比较多,前几周又看到kafka4.0发布,故写一篇博客对消息队列做一个复盘。 目录 消息队列对比1. Apache Kafka 4.02. RabbitMQ3. RocketMQ4. ActiveMQ5. Apache Pulsar6. NSQ kafka4.0鲜明的新特性Java 版本要求升级API 更新与精简移…...

nmcli创建wpa-psk2 wifi热点

1. 创建新的WiFi连接: sudo nmcli connection add type wifi ifname wlan0 con-name WiFi名称 autoconnect yes ssid WiFi名称 2. 配置接入点模式和IP共享: sudo nmcli connection modify WiFi名称 802-11-wireless.mode ap 802-11-wireless.band …...

分布式日志治理:Log4j2自定义Appender写日志到RocketMQ

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

【STM32单片机】#8 定时器编码器接口ADC模数转换器

主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...

dify部署,ollama部署,拉取模型,创建ai聊天应用

dify下载安装 dify1.0.1 windos安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.zip 链接: 百度网盘 请输入提取码 提取码: 1234 dify安装包 linux安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.tar.gz 链接: 百度网盘 请输入提取码 提取码…...

213、【图论】有向图的完全联通(Python)

题目描述 原题链接:105. 有向图的完全联通 代码实现 import collectionsn, k list(map(int, input().split())) adjacency collections.defaultdict(list) for _ in range(k):head, tail list(map(int, input().split()))adjacency[head].append(tail)visited_…...

Node.js中util模块详解

Node.js 中 util 模块全部 API 详解 一、类型检查函数 const util require(util);// 1. util.types // 检查对象类型 console.log(util.types.isDate(new Date())); // true console.log(util.types.isRegExp(/abc/)); // true console.log(util.types.isArrayBuffer(new …...

BasicTS:全面基准测试与异质性分析

BasicTS:全面基准测试与异质性分析 在当今数字化时代,多元时间序列(Multivariate Time Series, MTS)分析在众多领域发挥着关键作用,从交通管理到能源系统优化,都离不开对MTS的精准预测。然而,当…...

认识python全栈框架reflex:快速打造工具类网站、模型调用web应用

以下是对reflex的简单介绍: 纯Python编写的,高性能、可自定义的 Web 应用开发框架 网页开发内置组件生态完整,灵活使用、快速接入、快速部署支持路由页面,可以开发复杂系统、企业级系统,这方面优于gradio、streamlit…...

课题申报的立项依据方位指南:使用DeepSeek提高课题立项的关键

在竞争日益激烈的学术研究和科研项目申报环境中,立项依据作为课题申报书的灵魂部分,往往决定着一项研究能否获得评审专家的青睐和资助。 然而,许多研究者尽管学术能力突出,却在立项依据的撰写上显得力不从心,导致优质…...

蓝桥杯电子赛_E2PROM(AT24C02)

目录 一 前言 二 E2PROM的相关讲解 AT24C02的地址 PCF8591的地址 三 根据提供的iic写代码 相关可能会有疑问的地方: 1 三个入口参数,都有什么用? 2 为什么在写中,要用IIC_SendByte,在读中,要用IIC_R…...

Kubernetes服务注册到consul流程实践

文章目录 前言架构图示意一、环境准备二、consul部署1.yaml示例2.consul部署验证 三、consulctl工具实现1.核心功能2.注册到consul的标签及元数据3.consulctl工具使用示例 四、通过Dockerfile构建consulctl工具镜像五、Kubernetes集成方案六、 结果验证1.注册验证2.销毁验证 总…...

供应链业务-供应链全局观(三)- 供应链三流的集成

概述 供应链的全局观的全两篇文章主要描述了供应链的基础概念和供应链的协作和集成问题。 供应链业务-供应链全局观(一)定义了什么是供应链和供应链管理。 所谓供应链就是把采购进来的东西,通过自身的生成加工,进行增值服务&am…...