【计算机网络】14、DHCP
文章目录
- 一、概述
- 1.1 好处
- 二、概念
- 2.1 分配 IP
- 2.2 控制租赁时间
- 2.3 DHCP 的其他网络功能
- 2.4 IP地址范围和用户类别
- 2.5 安全
- 三、DHCP 消息
- 3.1 DHCP discover message
- 3.2 DHCP offers a message
如果没有 DHCP,IT管理者必须手动选出可用的 ip,这太耗时了,幸好有 DHCP。
一、概述
DHCP是一种协议,可自动为有线或无线连接的固定和移动主机分配IP地址。
当 device 使用 DHCP 时,其向 DHCP server 发请求,server 返回 ip 地址, 然后 server 不断监控此 ip 地址的使用,当此 ip 已超过一定时间不再被使用 或 device 关机时,则回收此 ip 以便后续分配给别的 device。
虽然IP地址的委派是 DHCP 协议的核心功能,但DHCP也会分配各种相关的网络参数,包括子网掩码、默认网关地址和域名服务器(DNS)。DHCP是建立在旧的BOOTP(引导协议)之上的IEEE标准,BOOTP已经过时,因为它只能在IPv4网络上工作。
1.1 好处
-
可靠的 ip 地址配置
您不能让两个用户使用相同的IP地址,因为这会造成一个或两个设备无法连接到网络的冲突。DHCP消除了人为错误,从而最大限度地减少了地址冲突、配置错误或简单的打字错误。 -
减少网络管理
DHCP 协议提供集中化和自动化的TCP/IP配置。通过部署DHCP中继代理,不需要在每个子网上都有一台DHCP server。 -
移动性
对于在有线或无线网络上移动到不同位置的便携设备上的用户,DHCP可有效地处理IP地址更改。 -
回收
DHCP不仅会分配地址,还会在不再使用地址时自动将其取回并返回到池中。 -
改变网络地址范围
通过使用DHCP,组织可以轻松地将IP地址方案从一个地址范围更改为另一个地址范围。利用DHCP,网络管理员可以在不中断最终用户的情况下进行这些更改。
二、概念
-
DHCP server
这是运行DCHP服务的联网设备,用于保存IP地址和相关配置信息。这通常是一台服务器或路由器,但也可以是充当主机的任何设备,例如SD-WAN设备。 -
DHCP client
此终端终端软件从DHCP server请求和接收配置信息。它可以安装在计算机、移动设备、物联网终端或任何其他需要连接到网络的设备上。默认情况下,大多数路由器都配置为接收DHCP信息。 -
IP address pool
可供DHCP client 使用的IP地址范围是IP地址。地址通常按从低到高的顺序分配。 -
subnet
IP网络可以划分为称为子网的网段。子网有助于保持网络的可管理性。 -
lease 租赁
DHCP client 保留IP地址信息的时间长度称为租用。租约到期时,客户端必须续订租约。 -
DHCP relay 中继器
侦听该网络上正在广播的客户端消息,然后将其转发到已配置的服务器的路由器或主机称为DHCP中继。然后,服务器将响应发送回中继代理,中继代理将响应传递给客户端。这可用于集中DHCP server,而不是在每个子网上都有一台服务器。
2.1 分配 IP
与DHCP相关的存在问题是,终端用户如何在没有IP地址的情况下首先连接到网络?
答案是,有一个复杂的来回请求和确认系统。首先,所有现代设备操作系统都包括一个默认启用的 DHCP client。为了请求IP地址,客户端设备发送广播消息–DHCPDISCOVER。网络将该请求定向到适当的 DHCP server。
通常将DHCP server功能分配给物理服务器和备份。其他设备也可以充当DHCP server,例如SD-广域网设备或无线接入点。
然后,服务器确定适当的IP地址,并将提供包发送到客户端,客户端使用请求包进行响应。在该过程的最后一步,服务器发送ACK数据包,确认已为客户端分配了IP地址。
这一切都是快速、自动完成的,最终用户无需采取任何操作。问题是,IP地址不是永久性的。它只在一段特定的时间内有效,也就是所谓的lease time(租赁时间)。
2.2 控制租赁时间
在DHCP协议下,每次DHCP server分配地址时,都会有一个相关的租用时间。当租约到期时,客户端不能再使用该IP地址,基本上会被踢出网络。
该协议旨在使活动客户端在租赁期中途自动联系DHCP server以续订租约。如果服务器没有立即响应,客户端将继续请求DHCP server续订租约,直到获得批准。
通常,当主机关闭时,租约会自动终止,以便释放其IP地址,以便网络上的另一个客户端可以使用该地址。
2.3 DHCP 的其他网络功能
除了为客户端提供通过IP地址连接到网络和Internet资源的能力外,DHCP server还会分配额外的网络参数,以提高效率和安全性。这些措施包括:
-
Default gateway
该网关负责在本地网络和Internet之间或本地子网之间来回传输数据。 -
Subnet mask
IP网络使用子网掩码来分隔IP地址的主机地址和网络地址部分。 -
DNS server
将域名(NetworkWorld.com)转换为IP地址,IP地址由长串数字表示。
2.4 IP地址范围和用户类别
DHCP动态分配地址,但不是随机分配。由于DHCP将主机连接到网络并分配网络参数,因此在某些情况下,网络管理员可能希望将特定的子网参数集分配给特定的用户组。
scope(作用域)是一个连续的IP地址范围,DHCP server 可以利用它来满足来自 DHCP client 的IP地址请求。通过在 DHCP server 上定义一个或多个作用域,server 可以管理IP地址的分配和分配给 DHCP client 。在 DHCP 协议下,网络管理员可以根据需要设置无限数量的作用域。
Class A 是作用域的子集。如果网络管理员想要将设备组划分到更大范围的一个网段中,则 Class 非常有用。例如为远程工作的员工提供SD-WAN clients。
2.5 安全
通过使用DHCP,IP地址的初始分配设计为快速高效。权衡之处在于,DHCP协议不需要身份验证。当然,企业已经为用户设置了强大的身份验证要求,要求他们一旦进入网络就可以访问资源,但这仍然使DHCP服务器本身成为安全链中的薄弱环节。
攻击者可以接管或欺骗DHCP服务器,并将错误信息分发给合法的最终用户,将他们发送到虚假站点。或者,它可以将合法的IP地址分发给未经授权的用户。这可能导致中间人攻击和拒绝服务攻击。
DHCP规范确实解决了其中的一些问题。有一个中继代理信息选项,网络工程师可以在消息到达时对其进行标记。此标签可用于控制网络访问。此外,网络管理员可以使用802.1x身份验证(网络访问控制)来帮助保护DHCP。
三、DHCP 消息
3.1 DHCP discover message
This is the first message generated in the communication process between the server and the client. This message is generated by the Client host in order to discover if there is any DHCP server/servers are present in a network or not. This message is broadcasted to all devices present in a network to find the DHCP server. This message is 342 or 576 bytes long
As shown in the figure, the source MAC address (client PC) is 08002B2EAF2A, the destination MAC address(server) is FFFFFFFFFFFF, the source IP address is 0.0.0.0(because the PC has had no IP address till now) and the destination IP address is 255.255.255.255 (IP address used for broadcasting).
因为广播报文来查找网络中的一个或多个DHCP服务器,所以用广播IP地址和MAC地址。
3.2 DHCP offers a message
The server will respond to the host in this message specifying the unleased IP address and other TCP configuration information. This message is broadcasted by the server. The size of the message is 342 bytes. If there is more than one DHCP server present in the network then the client host will accept the first DHCP OFFER message it receives. Also, a server ID is specified in the packet in order to identify the server.
大致介绍
技术细节
相关文章:

【计算机网络】14、DHCP
文章目录 一、概述1.1 好处 二、概念2.1 分配 IP2.2 控制租赁时间2.3 DHCP 的其他网络功能2.4 IP地址范围和用户类别2.5 安全 三、DHCP 消息3.1 DHCP discover message3.2 DHCP offers a message 如果没有 DHCP,IT管理者必须手动选出可用的 ip,这太耗时了…...

【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现
目录 Ⅰ. 实践说明 0x00 计数器(Counter) 0x01 异步计数器(Asynchronous Counter)...
IDEA常用快捷键
快捷键功能tab接受选择–选择的名称将覆盖带插入符号右侧的其它名称–而如果按shift或者enter,光标右边的内容会保留Ctrlshift空格智能匹配–查找当前上下文的方法和变量Ctrld对比文件–选中需要对比的文件shift滚动水平滚动Ctrlaltl格式化Ctrlk提交Ctrlaltz回滚类C…...
【2024秋招】2023-10-17 金山云文档服务端二面
1 实习 1.1 讲解一下curd启动器 1.2 数据同步的过程是怎么实现的,同步过程中的数据一致性怎么保证的 答:同步过程中会记录断点,表示每一批同步成功时的位置,如果对端出现问题,则下一次同步会继续从这个断点后开始同…...

一种excel多线程并发写sheet的方案
一、背景 有一次项目的需求要求导出excel,并且将不同的数据分别写到不同的sheet中。 二、 方案概述 首先一开始使用easyexcel去导出excel,结果发现导出时间需要3秒左右。于是想着能不能缩短excel导出时间,于是第一次尝试使用异步线程去查询数…...

深入了解接口测试:揭秘网络分层和数据处理!
网络分层和数据 上一小节中介绍了接口测试中一些必要重要的定义,这一节我们来讨论一下在学习接口测试过程中我们要关注的最重要的东西:网络分层和数据。 首先,我们来尝试理解一下,为什么网络是要分层的呢? 我们可以…...
Java并发编程
进程和线程 进程即程序的一次执行过程,各个进程之间是独立的。线程是更小的单位,一次进程中,可能会有多个线程,可能会相互影响,各个线程有自己的程序计数器,虚拟机栈和本地方法栈,同时共同使用…...

vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略
目录 引言 一、设计 1. 树状图(不方便呈现节点之间的关系,次要考虑) 2. 力引导依赖关系图 二、力引导关系图 三、如何实现节点的Open Or Fold 1. 设计逻辑 节点展开细节 节点收缩细节 代码实现 四、结果呈现 五、完整代码 引言 我…...

Unity3d 灯光阴影开启,法线贴图出现BUG
URP项目打开灯光的阴影后,法线贴图出现BUG 解决方案:按照下图所示调整材质的选项即可...

c语言:模拟实现atoi函数
atoi函数的功能和用法: 主要功能:将字符串转换为整数。例如,将字符类型的“123”转换为整数123. #include <stdio.h> #include <stdlib.h>int main() {char str[] "123";int num atoi(str);printf("Converted …...

Docker 使用心得
创建一个docker 镜像,相关运行代码,放在docker镜像文件同级, pm2 不能与 docker一起使用() # node 服务docker FROM node:10.16.3LABEL author"sj"RUN mkdir -p /var/nodeCOPY ./node /var/nodeWORKDIR /va…...

Nacos 架构原理
基本架构及概念 服务 (Service) 服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,…...
尝试修改vim光标的思路
尝试修改vim光标,失败 想让vim的光标在不同模式下显示不同样式 尝试了很多方法,但是没有作用 " Set cursor shape and color if &term ~ "xterm"" INSERT modelet &t_SI "\<Esc>[6 q" . "\<Esc&…...

SpringBoot整合Activiti7——消息事件(十)
文章目录 消息事件开始事件中间事件边界事件代码实现xml文件测试流程流程执行步骤 消息事件 消息事件只有一个接收者,消息具有名字与载荷。 信息会储存在 act_ru_event_subscr 表中。 <!-- 定义消息 --> <message id"msgId1" name"msgName…...
高翔:《自动驾驶与机器人中的SLAM技术 》-Slam_in_autonomous_driving 编译过程中遇到的问题
使用的环境是ubuntu20.04 问题1.安装g2o没有问题,不过在编译整个项目工程时候报错: ”openmp_mutex.h: 30:10: fatal error: g2o/config.h: No such file or directory“: 解决办法: 只需要将/thirdparty/g2o/build/g2o下的config.h放到/…...
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder 实现密码加密 验证 代码示例
BCryptPasswordEncoder 是 Spring Security 提供的用于加密和验证密码的实现类。它使用强大的 BCrypt 散列函数来存储密码的散列值,提供了一种安全的密码存储方法。以下是一个简单的示例代码,演示如何使用 BCryptPasswordEncoder 进行密码加密和验证&…...

《微信小程序开发从入门到实战》学习三十八
4.2 云开发JSON数据库 4.2.9 条件查询与查询指令 在查询数据时,有时需要对查找的数据添加一些限定条件,只获取满足给定条件的数据,这样的查询称为条件查询。 可以在集合引用上使用where方法指定查询条件,再用get方法࿰…...

云服务器哪家便宜?亚马逊AWS等免费云服务器推荐
在这数字化的时代,云计算技术越来越广泛应用于各种场景,尤其是云服务器,作为一种全新的服务器架构正在逐渐取代传统的物理服务器,“云服务器哪家便宜”等用户相关问题也受到越来越多的关注。自从亚马逊最早推出了首个云计算服务—…...

Linux删除了大文件为什么磁盘空间没有释放?
某天,收到监控系统的告警信息,说磁盘空间占用过高,登上服务器,使用 df -h 一看,发现磁盘占用率已经 96%了: 通过查看 /usr/local/nginx/conf/vhost/xxx.conf 找到 access_log 和 error_log 的路径&#x…...
编写bat脚本执行msyql建库sql
使用cmd命令执行(windows下) 【MySQL的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】,示例: D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql 注意: A、如果在sql脚本文件中使用了use 数据库&…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...