百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

职场小白必备知识点-DHCP协议介绍

nanshan 2024-11-17 14:10 13 浏览 0 评论

1 DHCP协议简介

DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。

DHCP使用客户端/服务器模式,请求配置信息的计算机叫做DHCP客户端,而提供信息的叫做DHCP的服务器。DHCP为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。

DHCP最重要的功能就是动态分配。除了IP地址,DHCP分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。

2 需求背景及优缺点

2.1 为什么需要DHCP协议

在IP网络中,每一台终端要想与其他的终端进行通信,需要为每一个终端分配一个唯一的标示号,这个标示号就是IP地址。

传统分配IP地址的方式有 PPP协议的自协商方式,用户自己静态配置, 管理员统一分配和配置等。

(1)PPP:不需要用户自己动手操作,但是需要在终端安装专门的客户端软件,而且需要服务器处事先配置好用户的账号和密码,否则用户则无法上网,优点是安全性好;

(2)用户静态配置:对于普通用户难以操作而且要防止IP地址产生冲突;

(3)管理员配置:需要专门人员维护规划网络,工作量大,成本高

除了以上这些,更为重要的是 许多终端启动不仅仅需要IP地址,而且还需要动态的获得更多的启动配置信息,如无盘工作站;有的还需要其他种种动态信息。而这些动态信息是我们前面所说的几种无法提供的,因此产生了需求------->新的主机配置方式。

2.2 DHCP的发展过程

在需求背景的基础上,新的主机配置方式应运而生,最早的就是 BOOTP协议(引导程序协议)。

BOOTP协议是一种较老的系统引导协议,主要用于无盘工作站启动时,从服务器获得IP地址和启动文件。它多与TFTP协议配合使用,后来为了功能的扩展,又发展了 DHCP协议。

DHCP协议兼容了BOOTP协议。但是BOOTP用于相对静态的环境,每个主机都有一个永久的网络连接,

管理人员创建一个BOOTP配置文件来定义每个主机的BOOTP参数在计算机经常移动和实际计算机数目超过了可获得的IP主机地址时这种只提供从主机标识到主机参数的静态映射就不适用了。

DHCP协议从2个方面扩充了BOOTP协议:

(1)DHCP协议可以使用一个消息来使计算机获得它所需要所有的配置信息,即传送配置信息的协议;

(2)DHCP协议允许计算机快速动态的获得IP地址,即动态分配IP地址的机制。 DHCP支持三种类型的IP地址分配方式:自动分配,动态分配和手工分配。 自动分配,即DHCP给主机指定一个永久的IP地址; 动态分配,即DHCP给主机指定一个有时间限制的IP地址; 手工分配, 即主机IP地址实际上是由网络管理员指定的,DHCP只是把这个指定的IP地址传递给主机。 显然,动态分配可以回收IP,在IP不够用的情况下是一个较好的选择。


2.3 DHCP协议主机配置的优缺点

(1)DHCP协议主机配置方式最重要的特点是 整个配置过程自动实现 ,而且所有的配置信息都在一个地方集中控制,这就是 DHCP SERVER的作用;

(2)根据上述介绍,我们可以很明显的看出DHCP协议是采用C/S方式来实现的。而且DHCP协议是基于UDP层之上的应用,DHCP Client 采用 端口号68,DHCP Server采用 知名端口号67 进行交互;

(3)最早的BOOTP/DHCP协议都是采用在同一个物理子网中使用广播的方式来实现的。这也就是说无法穿越路由器扩展到不同的物理子网中。这样的话,要使用DHCP协议的每一个网络都必须要有一台DHCP服务器,为了克服这一缺陷,采用了DHCP RELAY的方式使得BOOTP/DHCP能够穿越路由实现。

(4)BOOTP协议主要用于一些较为简单的终端设备,通过它获得的信息也很少,但是它的C/S交互过程也比较简单。 DHCP协议功能比较全面,可以获得的信息较多,随之而来的是复杂的C/S交互过程;

(5)DHCP协议一般采用终端的硬件地址来唯一标示一个终端设备,如果是以太网,则就是我们常说的MAC地址;

(6)DHCP协议通过设置IP地址使用租期,可以达到IP地址分时复用的效果,从而能够解决IP地址资源短缺的问题;

(7)DHCP协议基本上是一个单向驱动协议。 Server端完全是被动的,其动作、行为基本完全由Client的请求行为而激发,即Server端无法主动控制Client端。也是因为这一点,DHCP的交互性和安全性就没有PPP协议来的那么完善,这是DHCP协议的致命缺点。

3 图解DHCP的4步租约过程

DHCP租约过程就是DHCP客户机动态获取IP地址的过程。

DHCP租约过程分为4步:

①客户机请求IP(客户机发DHCPDISCOVER广播包);

②服务器响应(服务器发DHCPOFFER广播包);

③客户机选择IP(客户机发DHCPREQUEST广播包);

④服务器确定租约(服务器发DHCPACK/DHCPNAK广播包)。

详解4步租约过程:

第1步:客户机请求IP

客户机请求IP也称为DHCPDISCOVER。

当一个DHCP客户机启动时,会自动将自己的IP地址配置成0.0.0.0,由于使用0.0.0.0不能进行正常通信,所以客户机就必须通过DHCP服务器来获取一个合法的地址。由于客户机不知道DHCP服务器的IP地址,所以它使用0.0.0.0的地址作为源地址,使用UDP68端口作为源端口,使用255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播请求IP地址信息(见图一)。广播信息中包含了DHCP客户机的MAC地址和计算机名,以便使DHCP服务器能确定是哪个客户机发送的请求。

DHCP客户机总是试图重新租用它接收过的最后一个IP地址,这给网络带来一定的稳定性。

图一:客户机请求IP

第2步:服务器响应

服务器响应也称为DHCPOFFER。

当DHCP服务器接收到客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机。如果有,DHCP服务器就将此IP地址做上标记,加入到DHCPOFFER的消息中,然后DHCP服务器就广播一则包括下列信息的DHCPOFFER消息:

DHCP客户机的MAC地址;DHCP服务器提供的合法IP地址;子网掩码;默认网关(路由);租约的期限;DHCP服务器的IP地址。

因为DHCP客户机还没有IP地址,所以DHCP服务器使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255.255.255.255作为目标地址,使用UDP68端口作为目的端口来广播DHCPOFFER信息(见图二)。

图二:服务器响应

第3步:客户机选择IP

客户机选择IP,也称为DHCPREQUEST。

DHCP客户机从接收到的第一个DHCPOFFER消息中选择IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能提供给另一个DHCP客户机。当客户机从第一个DHCP服务器接收DHCPOFFER并选择IP地址后,DHCP租约的第三过程发生。客户机将DHCPREQUEST消息广播到所有的DHCP服务器,表明它接受提供的内容。DHCPREQUEST消息包括为该客户机提供IP配置的服务器的服务标识符(IP地址)。DHCP服务器查看服务器标识符字段,以确定它自己是否被选择为指定的客户机提供IP地址,如果那些DHCPOFFER被拒绝,则DHCP服务器会取消提供并保留其IP地址以用于下一个IP租约请求。

在客户机选择IP的过程中,虽然客户机选择了IP地址,但是还没有配置IP地址,而在一个网络中可能有几个DHCP服务器,所以客户机仍然使用0.0.0.0的地址作为源地址,使用UDP68端口作为源端口,使用255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播DHCPREQUEST信息(见图三)。

图三:客户机选择IP

第4步:服务器确认租约

服务器确认租约,也称为DHCPACK/DHCPNAK。

DHCP服务器接收到DHCPREQUEST消息后,以DHCPACK消息的形式向客户机广播成功的确认,该消息包含有IP地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的DHCPACK消息,所以服务器仍然使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255.255.255.255作为目标地址,使用UDP68端口作为目的端口来广播DHCPACK信息(见图四)。当客户机收到DHCPACK消息时,它就配置了IP地址,完成了TCP/IP的初始化。

如果DHCPREQUEST不成功,例如客户机试图租约先前的IP地址,但该IP地址不再可用,或者因为客户机移到其他子网,该IP无效时,DHCP服务器将广播否定确认消息DHCPNAK。当客户机接收到不成功的确认时,它将重新开始DHCP租约过程。

如果DHCP客户机无法找到DHCP服务器,它将从TCP/IP的B类网段169.254.0.0中挑选一个IP地址作为自己的IP地址,继续每隔5分钟尝试与DHCP服务器进行通讯,一旦与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而使用DHCP服务器分配的IP地址。

如果一台DHCP客户机有两个或者多个网卡,则DHCP服务器会为每个网卡分配一个唯一而有效的IP地址。

图四:服务器确认租约

图五:DHCP服务器日志

注:因为是虚拟机,所以这个DHCP服务器的系统时间有些问题

图六:DHCP客户机IP信息

可以看到客户端获取的IP地址是192.168.1.34;默认网关是192.168.1.10;DHCP服务器IP是192.168.1.240;租约时间是6个小时。

相关推荐

实战派 | Java项目中玩转Redis6.0客户端缓存

铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...

轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)

1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...

Redis与本地缓存联手:多级缓存架构的奥秘

多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...

腾讯云国际站:腾讯云服务器如何配置Redis缓存?

本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...

Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?

你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...

【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案

在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...

Spring boot 整合Redis缓存你了解多少

在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...

揭秘!Redis 缓存与数据库一致性问题的终极解决方案

在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...

高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局

一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...

Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决

缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

Redis客户端缓存的几种实现方式

前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...

Nginx合集-常用功能指导

1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...

腾讯云国际站:腾讯云怎么提升服务器速度?

本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...

雷霆一击服务器管理员教程

本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...

取消回复欢迎 发表评论: