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

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

nanshan 2024-11-17 14:10 19 浏览 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个小时。

相关推荐

雷军1994年写的老代码曝光,被称像诗一样优雅

大数据文摘授权转载自程序员的那些事雷军的代码像诗一样优雅↓↓↓有些网友在评论中质疑,说雷军代码不会是“屎”一样优雅吧。说这话的网友,也许是开玩笑的,也许是真没看过雷军写过的代码。在2011年的时候,我...

原创经验分享:低级bug耗费12小时Fix

调试某程序非常简单的程序,简单到认为不可能存在缺陷,但该BUG处理时间超过12小时:程序属于后台进程,监控系统每隔15秒检查外设IO状态,IO异常后发出报警或复位外设,外设都在linux下有/sys/...

SpringBoot实现的简单停车位管理系统附带导入和演示教程视频

这一次为大家带来的是简单的停车位管理系统,基于SpringBoot+Thymeleaf+Mybatis框架,这个系统相对来说比较简单,很容易学习并快速上手,因为逻辑很清晰,没有太复杂的代码逻辑,所以学...

一个开箱即用的代码生成器(代码自动生成工具开源)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

【免费开源】JeecgBoot单点登录源码全部开源了

JeecgBoot单点登录源码全部开源了,有需要的朋友可以来薅羊毛了。一、JeecgBoot介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCl...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

为什么越来越多的人选择使用idea软件

IDEA软件是什么?IDEA软件是干什么的?为什么越来越多的人选择使用IDEA软件?IDEA软件,全称IntelliJIDEA,它是由JetBrains公司开发开发的一款功能强大的集成开发环境(ID...

开题报告大学生互助系统(附源码)java毕设

本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,大学生群体对信息共享与互助的需求日益增长。关于大...

SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!

项目简介及系统架构JeecgBoot是一款基于SpringBoot的开发平台,它采用前后端分离架构,集成的框架有SpringBoot2.x、SpringCloud、AntDesignof...

新手配电脑13代CPU怎么选择(新手配电脑13代cpu怎么选择好)

Intel第13代酷睿i3、i5、i7、i9系列处理器的核心参数、性能差异及适用群体的详细说明(以桌面端为例):一、13代酷睿全系参数对比(桌面端主流型号)参数i3-13100i5-13600Ki7-...

加速 SpringBoot 应用开发,官方热部署神器真带劲

平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款Sp...

基于微信小程序的移动端物流系统-计算机毕业设计源码+LW文档

摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理移动端物流系统app的最新形式。本论文是以构建移动端物流系...

springboot教务管理系统+微信小程序云开发附带源码

今天给大家分享的程序是基于springboot的管理,前端是小程序,系统非常的nice,不管是学习还是毕设都非常的靠谱。本系统主要分为pc端后台管理和微信小程序端,pc端有三个角色:管理员、学生、教师...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统

本系统基于Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统。简单实现了充值、购买歌曲、poi数据导入导出、歌曲上传下载、歌曲播放、用户注册登录注销等功能。难度等级:简单技术...

取消回复欢迎 发表评论: