动态主机配置协议 (DHCPv4)介绍,详细DHCP协议学习笔记
定义
动态主机配置协议 (DHCP) 是一种用于集中对用户 IPv4 地址进行动态管理和配置的技术。为与 IPv6 动态主机配置协议 (DHCPv6) 进行区分,本文统一将动态主机配置协议称为 DHCPv4。
DHCPv4 协议由 RFC 2131 定义,采用客户端/服务器通信模式,由 DHCPv4 客户端 (DHCP Client) 向 DHCPv4 服务器 (DHCP Server) 提出配置申请,服务器返回为客户端分配的配置信息。
地址分配机制
DHCPv4 提供两种地址分配机制,网络管理员可以根据网络需求为不同的主机选择不同的分配策略:
动态分配机制
通过 DHCPv4 为主机分配一个有使用期限(租期)的 IPv4 地址。适用于主机需要临时接入网络或空闲地址数小于网络主机总数且主机不需要永久连接网络的场景。
静态分配机制
网络管理员通过 DHCPv4 为指定的主机分配固定的 IPv4 地址。相比手工静态配置 IPv4 地址,通过 DHCPv4 方式静态分配机制避免人工配置发生错误,方便管理员统一维护管理。
目的
随着网络规模的扩大和网络复杂度的提高,网络配置变得越来越复杂,再加上计算机数量剧增且位置不固定,引发了 IPv4 地址变化频繁以及 IPv4 地址不足的问题。为了实现网络可以动态合理地分配 IPv4 地址给主机使用,动态主机配置协议 DHCPv4 应运而生。
受益
DHCPv4 的主要受益有以下两点:
降低客户端的配置和维护成本
DHCPv4 易配置部署,对于非技术用户,DHCPv4 能够将客户端与配置相关的操作降至最低,并能够降低远程部署和维护成本。
集中管理
DHCPv4 服务器可以管理多个网段的配置信息,当某个网段的配置发生变化时,管理员只需要更新 DHCPv4 服务器上的相关配置即可。
DHCPv4 典型组网
DHCPv4 组网中包括以下三种角色:

DHCPv4 客户端
发送 DHCPv4 请求报文,通过 BOOTP 或 DHCPv4 协议请求获取 IPv4 地址等网络参数的设备。例如,IP 电话、PC、手机、无盘工作站等。
DHCPv4 中继
负责转发 DHCPv4 服务器和 DHCPv4 客户端之间的 DHCPv4 报文,协助 DHCPv4 服务器向 DHCPv4 客户端动态分配网络参数的设备。
DHCPv4 服务器
负责从地址池中选择 IPv4 地址分配至 DHCPv4 客户端,还可以为 DHCPv4 客户端提供其他网络参数,如默认网关地址、DNS 服务器地址和 WINS 服务器地址。
DHCPv4 报文类型
DHCPv4 报文是基于 UDP 协议传输的。DHCPv4 客户端向 DHCPv4 服务器发送报文时采用 68 端口号,DHCPv4 服务器向 DHCPv4 客户端发送报文时采用 67 端口号。目前 DHCPv4 定义了如下八种类型的报文:
| 报文名称 | 说明 |
| DHCP DISCOVER | DHCPv4 客户端首次登录网络时进行 DHCP 交互过程发送的第一个报文,用来寻找 DHCPv4 服务器。 |
| DHCP OFFER | DHCPv4 服务器用来响应 DHCP DISCOVER 报文,此报文携带了各种配置信息。 |
| DHCP REQUEST | 用于客户端初始化后、重启后或更新 IPv4 地址租约时发送的报文。 |
| DHCP ACK | 服务器对客户端的 DHCP REQUEST 报文的确认响应报文。 |
| DHCP NAK | 服务器对客户端的 DHCP REQUEST 报文的拒绝响应报文。 |
| DHCP DECLINE | 当客户端发现服务器分配给它的 IPv4 地址发生冲突时发送的报文。 |
| DHCP RELEASE | 客户端主动释放服务器分配给它的 IPv4 地址时发送的报文。 |
| DHCP INFORM | 客户端获取 IPv4 地址后,向服务器请求更为详细的配置信息时发送的报文。 |
DHCPv4 报文格式
DHCPv4 报文格式是在 BOOTP 报文格式的基础上发展而来,因此 DHCPv4 服务器也支持与 BOOTP 客户端之间进行交互。
DHCPv4 报文中的 Options 字段
Options 字段用来存放分配给 DHCPv4 客户端的控制信息和参数,位于 DHCPv4 报文末尾。Options 字段由 Type、Length 和 Value 三部分组成。
| Options 号 | Options 作用 |
| 1 | 设置子网掩码选项。 |
| 3 | 设置网关地址选项。 |
| 6 | 设置 DNS 服务器地址选项。 |
| 12 | 设置 DHCPv4 客户端的主机名选项。 |
| 50 | 设置请求 IPv4 地址选项。 |
| 51 | 设置 IPv4 地址租约时间选项。 |
| 53 | 设置 DHCPv4 消息类型。 |
| 54 | 设置服务器标识。 |
| 55 | 设置请求选项列表。 |
| 58 | 设置续约 T1 时间。 |
| 59 | 设置续约 T2 时间。 |
DHCP 选项 82
Option 82 记录了 DHCP 客户端的位置信息,可以配置在 DHCP 中继或 DHCP 监听设备上。对于从 DHCP 客户端收到的 DHCP 报文,该报文中携带的 Option 82 将按照 Option 82 策略进行处理后再发送给 DHCP 服务器。
DHCP服务器根据DHCP报文中携带的Option82信息为客户端分配IP地址和其他参数,提供更加灵活的地址分配方案。
Option 82包含两个常用的子选项:Circuit ID和Remote ID。Circuit ID主要用于标识客户端所属的VLAN和接口,Remote ID标识客户端从哪个设备接入,一般为设备的MAC地址。
数据包格式
电路 ID 子选项
Circuit ID 包含三种类型:Type 0(值为端口索引)、Type 1(值为端口名称+VLAN ID)、Type 2(值为端口描述+VLAN ID),下面按照类型列出其格式。
-
类型 0(端口索引)
Circuit ID 类型为 0,其中 Circuit ID 子选项使用物理接口或者 LAG 接口。

-
类型 1(端口名称)
Circuit ID类型为1,其中端口名称和VLAN ID组成Circuit ID子选项值。

-
类型 2(端口描述)
Circuit ID类型为1,其中端口名称和VLAN ID组成Circuit ID子选项值。

远程 ID 子选项
Remote ID包含两种类型:Type 0(值为系统MAC)和Type 1(值为主机名),下面按类型列出格式。
-
类型 0(系统 MAC)
远程 ID 类型为 0,其中系统 MAC 用于远程 ID 子选项。

如何处理选项 82?
系统对收到的DHCP报文中的Option82进行如下处理:
-
当收到不带 giaddr但带有选项 82 的DHCP Discover/Request/Release/Decline/Inform 消息时,
-
如果选项 82 trust-all被禁用,则丢弃该消息。
-
如果启用了Option 82 trust-all 选项 ,则该类消息将按照用户配置的 Option 82 策略进行处理。Option 82 策略可以设置四种操作:Keep、Drop、Insert和Replace。默认操作为Keep,即从 DHCP 客户端收到的 DHCP 消息中的 Option 82 保持不变并进行转发。
-
-
当出现除上述类型以外的任何其他类型的 DHCP 发现/请求/释放/拒绝/通知消息时,将允许接收该消息,并根据选项 82 策略进行处理。
-
当收到不带选项 82 的DHCP Offer/Ack/Nak 消息时,将转发该消息而不带选项 82。
-
当收到带有选项 82 的DHCP Offer/Ack/Nak 消息时,选项 82 会在转发消息之前被删除。
选项 82 信任全部
交换机收到的不带 giaddr 但包含 Option 82 的 DHCP Discover/Request/Release/Decline/Inform 数据包默认会被丢弃,但如果开启了 Option 82 trust all 功能,则此类数据包会被允许并处理。
因此,在配置选项 82 策略时,需要同时考虑网络拓扑和信任配置,特别是如果客户端和中继代理/启用 DHCP 侦听的设备之间存在可能插入选项 82 的交换机。在此设备上启用 DHCP 选项 82 信任所有,以确保这些数据包不会被丢弃。
DHCPv4 客户端首次接入网络的报文交互过程
首次接入网络的 DHCPv4 客户端与 DHCPv4 服务器的报文交互过程称为 DHCPv4 报文四步交互:

第一步:发现阶段
首次接入网络的DHCPv4客户端不知道DHCPv4服务器的IPv4地址,为了学习到DHCPv4服务器的IPv4地址,DHCPv4客户端以广播方式发送DHCP DISCOVER报文(目的IPv4地址为255.255.255.255)给同一网段内的所有设备(包括DHCPv4服务器或中继)。DHCP DISCOVER报文中携带了客户端的MAC地址(chaddr字段)、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。
第二步:提供阶段
与DHCPv4客户端位于同一网段的DHCPv4服务器都会接收到DHCP DISCOVER报文,DHCPv4服务器选择跟接收DHCP DISCOVER报文接口的IPv4地址处于同一网段的地址池,并且从中选择一个可用的IPv4地址,然后通过DHCP OFFER报文发送给DHCPv4客户端。
通常,DHCPv4服务器的地址池中会指定IPv4地址的租期,如果DHCPv4客户端发送的DHCP DISCOVER报文中携带了期望租期,服务器会将客户端请求的期望租期与其指定的租期进行比较,选择其中时间较短的租期分配给客户端。
DHCPv4服务器在地址池中为客户端分配IPv4地址的顺序如下:
IPv4地址分配顺序不支持修改。
-
DHCPv4服务器上已配置的与客户端MAC地址静态绑定的IPv4地址。
-
客户端发送的DHCP DISCOVER报文中Option50(请求IPv4地址选项)指定的地址。
-
地址池内查找“Expired”状态的IPv4地址,即曾经分配给客户端的超过租期的IPv4地址。
-
在地址池内随机查找一个“Idle”状态的IPv4地址。
-
如果未找到可供分配的IPv4地址,则地址池依次自动回收超过租期的(“Expired”状态)和处于冲突状态(“Conflict”状态)的IPv4地址。回收后如果找到可用的IPv4地址,则进行分配;否则,DHCPv4客户端等待应答超时后,重新发送DHCP DISCOVER报文来申请IPv4地址。
设备支持在地址池中排除某些不能通过DHCPv4机制进行分配的IPv4地址。例如,客户端所在网段已经手工配置了地址为192.168.1.100/24的DNS服务器,DHCPv4服务器上配置的网段为192.168.1.0/24的地址池中需要将192.168.1.100的IPv4地址排除,不能通过DHCPv4分配此地址,否则,会造成地址冲突。
为了防止分配出去的IPv4地址跟网络中其他客户端的IPv4地址冲突,DHCPv4服务器在发送DHCP OFFER报文前通过发送源地址为DHCPv4服务器IPv4地址、目的地址为预分配出去IPv4地址的ICMP ECHO REQUEST报文对分配的IPv4地址进行地址冲突探测。如果在指定的时间内没有收到应答报文,表示网络中没有客户端使用这个IPv4地址,可以分配给客户端;如果指定时间内收到应答报文,表示网络中已经存在使用此IPv4地址的客户端,则把此地址列为冲突地址,然后等待重新接收到DHCP DISCOVER报文后按照前面介绍的选择IPv4地址的优先顺序重新选择可用的IPv4地址。
此阶段DHCPv4服务器分配给客户端的IPv4地址不一定是最终确定使用的IPv4地址,因为DHCP OFFER报文发送给客户端等待16秒后如果没有收到客户端的响应,此地址就可以继续分配给其他客户端。通过下面的选择阶段和确认阶段后才能最终确定客户端可以使用的IPv4地址。
第三步:选择阶段
如果有多个DHCPv4服务器向DHCPv4客户端回应DHCP OFFER报文,则DHCPv4客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCPv4服务器标识符(即Option54)和客户端IPv4地址(即Option50,填充了接收的DHCP OFFER报文中yiaddr字段的IPv4地址)。
DHCPv4客户端广播发送DHCP REQUEST报文通知所有的DHCPv4服务器,它将选择某个DHCPv4服务器提供的IPv4地址,其他DHCPv4服务器可以重新将曾经分配给客户端的IPv4地址分配给其他客户端。
设备作为DHCPv4客户端,如果网络中有多个DHCPv4服务器,DHCPv4客户端会根据收到DHCP OFFER报文的顺序对DHCPv4服务器进行轮询,在前一个DHCPv4服务器分配IPv4地址失败时,选择下一个DHCPv4服务器分配IPv4地址。
第四步:确认阶段
当DHCPv4服务器收到DHCPv4客户端发送的DHCP REQUEST报文后,DHCPv4服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IPv4地址(Option50填充的IPv4地址)分配给客户端使用。
DHCPv4客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IPv4地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址。如果收到了回应,说明有其他终端使用了此地址,客户端会向服务器发送DHCP DECLINE报文,并重新向服务器请求IPv4地址,同时,服务器会将此地址列为冲突地址。当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。
当DHCPv4服务器收到DHCPv4客户端发送的DHCP REQUEST报文后,如果DHCPv4服务器由于某些原因(例如协商出错或者由于发送REQUEST过慢导致服务器已经把此地址分配给其他客户端)无法分配DHCP REQUEST报文中Option50填充的IPv4地址,则发送DHCP NAK报文作为应答,通知DHCPv4客户端无法分配此IPv4地址。DHCPv4客户端需要重新发送DHCP DISCOVER报文来申请新的IPv4地址。
DHCPv4客户端重用曾经使用过的地址的工作原理
DHCPv4客户端非首次接入网络时,可以重用曾经使用过的地址。DHCPv4客户端与DHCPv4服务器交互DHCPv4报文,以重新获取之前使用的IPv4地址等网络参数,该过程称为两步交互。
是否支持重用曾经使用过的IPv4地址,因不同客户端而异。下面的DHCPv4客户端以PC为例。

第一步:选择阶段
客户端广播发送包含前一次分配的IPv4地址的DHCP REQUEST报文,报文中的Option50(请求的IPv4地址选项)字段填入曾经使用过的IPv4地址。
第二步:确认阶段
DHCPv4服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCPv4客户端可以继续使用这个IPv4地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IPv4地址。
DHCPv4 客户端更新租期的工作原理
DHCPv4 服务器给每个分配给客户端的 IPv4 地址定义一个使用期限(租期)。客户端在租期到期前的某个时间点更新 IPv4 地址的租期。更新租期的过程如下:
-
当租期达到 50%(T1)时,客户端发送 DHCP REQUEST 报文请求更新租期。
-
当租期达到 87.5%(T2)时,如果仍未收到应答,客户端再次发送 DHCP REQUEST 报文。
-
如果租期时间到时都没有收到回应,客户端停止使用此 IPv4 地址,重新发送 DHCP DISCOVER 报文请求新的 IPv4 地址。
相关文章:
动态主机配置协议 (DHCPv4)介绍,详细DHCP协议学习笔记
定义 动态主机配置协议 (DHCP) 是一种用于集中对用户 IPv4 地址进行动态管理和配置的技术。为与 IPv6 动态主机配置协议 (DHCPv6) 进行区分,本文统一将动态主机配置协议称为 DHCPv4。 DHCPv4 协议由 RFC 2131 定义,采用客户端/服务器通信模式ÿ…...
Vue.js组件开发-如何处理跨域请求
在Vue.js组件开发中,处理跨域请求(CORS,即跨来源资源共享)通常不是直接在Vue组件中解决的,而是需要后端服务器进行相应的配置,以允许来自不同源的请求。不过,前端开发者也需要了解一些基本的COR…...
【C++】构造函数与析构函数
写在前面 构造函数与析构函数都是属于类的默认成员函数! 默认成员函数是程序猿不显示声明定义,编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的,关于类与对象不才在前面笔记中有详细的介绍:点我…...
Agent区别于MOE和RAG的核心; Agent(智能体)、RAG和MOE区别
Agent区别于MOE(专家混合模型)和RAG(检索增强生成)的核心 目录 Agent区别于MOE(专家混合模型)和RAG(检索增强生成)的核心自主性与决策能力环境交互与学习能力多模态感知与处理能力Agent(智能体)、RAG(检索增强生成)和MOE(专家混合模型)区别Agent(智能体)RAG(检…...
【PCL】Segmentation 模块—— 欧几里得聚类提取(Euclidean Cluster Extraction)
1、简介 PCL 的 Euclidean Cluster Extraction(欧几里得聚类提取) 是一种基于欧几里得距离的点云聚类算法。它的目标是将点云数据分割成多个独立的簇(clusters),每个簇代表一个独立的物体或结构。该算法通过计算点与点…...
LuaJIT Garbage Collector Algorithms
Explain 本篇文章是对Make Pall发表wili内容《LuaJIT 3.0 new Garbage Collector》的翻译和扩展,因为原文是对LuaJIT 2.x GC重要功能的简介和对LuaJIT 3.0 new GC的工作计划,所以它并不是系统性介绍GC的文章。希望以后能有精力系统性的对LuaJIT 2.x GC做…...
go采集注册表
package mainimport ("fmt""golang.org/x/sys/windows/registry""log""os""strconv""strings" )func USBSTOR_Enum() {// 打开注册表键keyPath : SYSTEM\CurrentControlSet\Services\USBSTOR\Enumk, err : regist…...
软件工程师欧以宁:引领无人机导航与物联网安全的技术革新
在科技日新月异的今天,软件工程师欧以宁凭借卓越的技术能力和前瞻性的创新思维,成为了无人机自主导航和物联网安全领域的佼佼者。作为一名深耕技术前沿的专家,欧以宁不仅推动了无人机导航技术的突破性进展,还为智能家居和物联网的安全架构提供了全新的解决方案。她的研究成果,以…...
从零开始:Gitee 仓库创建与 Git 配置指南
引言 Git 是一款广泛使用的版本控制工具,它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee(码云)是国内知名的 Git 托管平台,它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…...
浅谈计算机网络02 | SDN控制平面
计算机网络控制平面 一、现代计算机网络控制平面概述1.1 与数据平面、管理平面的关系1.2 控制平面的发展历程 二、控制平面的关键技术剖析2.1 网络层协议2.1.1 OSPF协议2.1.2 BGP协议 2.2 SDN控制平面技术2.2.1 SDN架构与原理2.2.2 OpenFlow协议2.2.3 SDN控制器 一、现代计算机…...
在 QNAP NAS中使用 Container Station 运行 Docker 的完整指南
QNAP 为用户提供了一个名为 Container Station 的应用,它在 QNAP NAS 上将 Docker 和 LXC 结合在一起,通过图形化界面,让用户更轻松地在 NAS 上管理容器。本文将带你一步步了解如何在 QNAP NAS 上安装和使用 Container Station,以…...
XML在线格式化 - 加菲工具
XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...
大数据学习(34)-mapreduce详解
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
代码合并冲突解决push不上去的问题
环境:【IntelliJ IDEA】 【Gerrit】 1、错误信息 代码合并,迭代1合并到迭代2,解决冲突后,依然push不上去,报错信息如下: remote: Processing changes: refs: 1 remote: Processing changes: refs…...
万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用
文章目录 一、引言二、ARINC 653背景三、整体系统架构四、应用/执行(APEX)接口五、ARINC 653 RTOS内部机制六、健康监测功能七、软件应用八、ARINC 653现状九、总结 一、引言 在现代航空领域,综合模块化航空电子设备(IMA…...
MySQL 与 Redis 数据一致性 2
1. 强一致还是最终一致?2. 先写 MySQL 还是先写Redis?case 1 3. 缓存(Redis)更新还是清除?更新策略更新策略会有数据不一致问题?数据不一致的概率与影响如果使用监听binlog更新数据还会出现数据不一致问题?binlog的消费问题 使用消息队列行不行?其他方案总结: 数据不一致…...
MySQL程序之:使用类似URI的字符串或键值对连接到服务器
本节介绍使用类似URI的连接字符串或键值对来指定如何为MySQLShell等客户端建立到MySQL服务器的连接。 以下MySQL客户端支持使用类似URI的连接字符串或键值对连接到MySQL服务器: MySQL Shell实现X DevAPI的MySQL连接器 本节记录了所有有效的类似URI的字符串和键值…...
Docker私有仓库管理工具Registry
Docker私有仓库管理工具Registry 1 介绍 Registry是私有Docker仓库管理工具,Registry没有可视化管理页面和完备的管理策略。可借助Harbor、docker-registry-browser完成可视化和管理。Harbor是由VMware开发的企业级Docker registry服务。docker-registry-browser是…...
若依前后端分离项目部署(使用docker)
文章目录 一、搭建后端1.1 搭建流程:1.2 后端零件:1.2.1 mysql容器创建:1.2.2 redis容器创建:1.2.3 Dockerfile内容:1.2.4 构建项目镜像:1.2.5 创建后端容器: 二、前端搭建:2.1 搭建流程&#x…...
Unity2021.3.13崩溃的一种情况
如果出现如下的报错,可能是软件冲突的原因。自己的原因是使用f.lux这款软件似乎和Unity相互冲突,出现下面报错。 错误信息如上图...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...
门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
EEG-fNIRS联合成像在跨频率耦合研究中的创新应用
摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...
自定义线程池1.2
自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本,将线程池中的线程数量交给使用者决定,并且将线程的创建延迟到任务提交的时候,在本文中我们将对这个版本进行如下的优化: 在新建线程时交给线程一个任务。让线程在某种情况下…...
