[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP

本篇文章稍微有点长,但相信你一定不会后悔读这篇文章

DHCP的内容还没有讲完,如果觉得总结的还可以,记得阅读下一篇哦

关于DHCP面试的总结后续也会分享,记得关注哦

下一篇文章将写道有关DHCP的  网络攻击和防范机制

目录

一、DHCP介绍

1. 概念:

2. 用途:

3. 原理

4. 报文类型:

5. DHCP报文格式

1.DHCP协议报文封装格式 

2. DHCP协议报文格式

6. DHCP角色:

1. DHCP客户端:

2. DHCP服务器:

3.(可选)DHCP中继:

7. 端口:

二、DHCP原理描述

1. DHCP服务器给首次接入网络工作原理:

1. 无中继场景:

2. 有中继场景:

3. DHCP客户端重用曾经使用的地址的工作原理:

4. DHCP客户端更新租期的工作原理:

三、DHCP的优缺点

优点:

缺点:

四、DHCP配置方法

1. 接口配置办法

 2. 全局配置办法

最后,可以简单看张图,对着图回想中间的细节

 由于篇幅问题,关于DHCP存在的安全问题和解决方法等内容留到下一篇文章叙述


一、DHCP介绍


1. 概念:

是一种用于集中对用户IP地址进行动态管理和配置的技术。       

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议。

DHCP采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请,服务器返回为客户端分配的配置信息(包括IP地址、缺省网关、DNS Server、WINS Server等参数),可以实现IP地址动态分配,以及其他网络参数的集中配置管理。


2. 用途:

1. 给内部网络或网络服务供应商自动分配IP地址

2. 给用户或者内部网络管理员作为对所有计算机作中央管理的手段。


​​​​​​​3. 原理

DHCP四个工作步骤:

1. 客户端通过广播发送DHCP Disccover报文寻找服务器端

2. 服务器通过单播发送DHCP offer报文向客户提供IP地址等信息

3. 客户端通过广播发送DHCP Request报文告知服务端本地选择使用哪个IP

4. 服务器通过单播发送DHCP Ack报文告知客户端IP地址是合法可用的


4. 报文类型:

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP_第1张图片


5. DHCP报文格式

1.DHCP协议报文封装格式 

链路层头、IP头、UDP头和DHCP报文。

dhcp主要的数据都封装在dhcp报文中。

2. DHCP协议报文格式

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP_第2张图片

 Op消息操作代码:1byte,既可以是引导请求(BOOTREQUEST)也可以是引导答复(BOOTREPLY),1为请求报文;2为响应报文。具体的报文类型在option字段中标识。

Htype:硬件地址类型:1byte,表示client硬件地址的类型,1表示以太网类型。

Hlen:硬件地址长度:1byte,以太网的硬件地址长度为6bytes。

Xid:处理ID:1byte,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。

Secs:从获取到IP地址或者续约过程开始到现在所消耗的时间:2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。

Flags:标记:2bytes,16bit中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0.

Ciaddr:客户机IP地址:4bytes,可以是client自己的IP地址,也可以是server分配给client的IP地址。

Yiaddr:你的(客户机)IP地址:4bytes,是server分配给client的IP地址。

Siaddr:在bootstrap中使用的下一台服务器的IP地址:4bytes,是client端获取IP地址等信息的server端的地址。

Giaddr:用于导入的接替代理IP地址:4bytes,是client发出请求报文后经过的第一个中继的IP地址。

Chaddr:客户机硬件:16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。

Sname:任意服务器主机名称:空终止符,64bytes,是client端获取IP地址等信息的服务器名称。

File:DHCP发现协议中的引导文件名、空终止符、属名或者空:DHCP供应协议中的受限目录路径名

Options:可选参数字段:这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息。这个字段的结构采用“CLV”结构。


6. DHCP角色:

1. DHCP客户端:

通过DHCP协议请求获取IP地址等网络参数的设备。

例如,IP电话、PC、手机、无盘工作站等。

2. DHCP服务器:

负责为DHCP客户端分配网络参数的设备。

3.(可选)DHCP中继:

负责转发DHCP服务器和DHCP客户端之间的DHCP报文,

协助DHCP服务器向DHCP客户端动态分配网络参数的设备。


7. 端口:

DHCP报文是基于UDP协议传输的。

DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用67,客户端使用68。

DHCP客户端向DHCP服务器发送报文时采用67端口号,DHCP服务器向DHCP客户端发送报文时采用68端口号。



二、DHCP原理描述

DHCP客户端广播发送请求报文(即目的IP地址为255.255.255.255),

位于同一网段内的DHCP服务器能够接收请求报文。

如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。

不同于传统的IP报文转发,DHCP中继接收到DHCP请求或应答报文后,会重新修改报文格式并生成一个新的DHCP报文再进行转发。

在企业网络中,如果需要规划较多网段,且网段中的终端都需要通过DHCP自动获取IP地址等网络参数时,可以部署DHCP中继。这样,不同网段的终端可以共用一个DHCP服务器,节省了服务器资源,方便统一管理。


1. DHCP服务器给首次接入网络工作原理:


1. 无中继场景:

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP_第3张图片

1. 发现阶段——DHCP客户端发现DHCP服务器的阶段。

DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。

广播方式(不知道DHCP服务器的IP地址)(目的IP地址为255.255.255.255,源IP为0.0.0.0)

同一网段内所有DHCP服务器或中继都能收到此报文。

DHCP DISCOVER报文中携带了客户端的MAC地址(chaddr/clint hardware address字段)

需要请求的参数列表选项:

广播标志位(flags字段,客户端请求服务器以单播0或广播1形式发送响应报文)等信息。

2. 提供阶段——DHCP服务器提供网络配置信息的阶段。

所有同网段DHCP服务器都会接收到DHCP DISCOVER报文,DHCP服务器上可能会部署多个地址池,服务器通过地址池管理可供分配的IP地址

收到DHCP DISCOVER报文后,从地址池中选择一个可用的IP地址

然后通过DHCP OFFER报文发送给DHCP客户端。

DHCP OFFER报文里面携带了希望分配的IP地址及其租期等配置参数

DHCP服务器的地址池中会指定IP地址的租期

DHCP DISCOVER报文中携带了期望租期,服务器会将客户端期望租期与其指定的租期进行比较,时间较短的租期分配给客户端

选择IP地址的优先顺序:

1.DHCP服务器上已配置的与客户端MAC地址静态绑定的IP地址。

2.客户端发送的DHCP DISCOVER报文中请求IP地址选项指定的地址。

3.DHCP服务器上记录的曾经分配给客户端的IP地址。

4.按照IP地址从大到小的顺序查询,选择最先找到的可供分配的IP地址。

(如果未找到可供分配的IP地址,则依次查询超过租期、处于冲突状态的IP地址)

可能出现情况:

1. 找到可用的IP地址:则进行分配;

2. 没有找到可用IP:发送DHCP NAK报文作为应答,通知DHCP客户端无法分配IP地址。

DHCP客户端需要重新发送DHCP DISCOVER报文来申请IP地址。

为了防止分配出去的IP地址跟网络中其他客户端的IP地址冲突,

DHCP服务器在发送DHCP OFFER报文前可以对分配的IP地址进行地址冲突探测

如果在指定的时间内没有收到应答报文,表示网络中没有客户端使用这个IP地址,可以分配给客户端;

如果指定时间内收到应答报文,表示网络中已经存在使用此IP地址的客户端,则把此地址列为冲突地址,然后等待重新接收到DHCP DISCOVER报文后按照前面介绍的选择IP地址的优先顺序重新选择可用的IP地址。

注意:

此阶段DHCP服务器分配给客户端的IP地址不一定是最终确定使用的IP地址,因为DHCP OFFER报文发送给客户端等待16秒后如果没有收到客户端的响应,此地址就可以继续分配给其他客户端。

通过下面的选择阶段和确认阶段后才能最终确定客户端可以使用的IP地址。

3. 请求阶段——DHCP客户端选择IP地址的阶段。(客户端选择接受)

因为DHCP DISCOVER报文是广播发送的,所以如果同一网段内存在多个DHCP服务器

收到DHCP DISCOVER报文的服务器都会回应DHCP OFFER报文。

如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,

则DHCP客户端一般只接收第一个收到的DHCP OFFER报文

然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符分配给客户端IP地址

广播方式发送DHCP REQUEST报文原因:

以广播方式发送DHCP REQUEST报文,是为了通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,

其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。

4. 确认阶段——DHCP服务器确认所分配IP地址的阶段(服务器确认)

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,

DHCP服务器回应DHCP ACK报文,

表示DHCP REQUEST报文中请求的IP地址,分配给客户端使用。

冲突检测:免费ARP(后续有ARP详解)

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP(FARP)报文

探测本网段是否有其他终端使用服务器分配的IP地址,

如果在指定时间内没有收到回应,表示客户端可以使用此地址。

如果收到了回应,说明有其他终端使用了此地址,

客户端会向服务器发送DHCP DECLINE报文,

并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。

当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,如果DHCP服务器由于某些原因(如协商出错或者由于发送REQUEST过慢(16s)导致服务器已经把此地址分配给其他客户端)无法分配DHCP REQUEST报文中填充的IP地址,

则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配此IP地址。

DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。


2. 有中继场景:

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP_第4张图片

发现阶段

中继跳数最大16

客户端以广播发送DHCP DISCOVER报文,同一网段内所有DHCP服务器或中继都能收到。

检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;

否则,将hops字段加1(表明经过一次DHCP中继),并继续下面的操作。

hops字段:

Hops: DHCP报文经过的DHCP中继的数目,该字段由客户端或服务器设置为0,

每经过一个DHCP中继时,该字段加1。

hops字段的作用是限制DHCP报文所经过的DHCP中继的数目。

目前,设备最多支持DHCP客户端与服务器之间有存在16个中继。

检查DHCP报文中的giaddr(gateway ip address)字段

如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址

如果不是0,则不修改该字段,继续下面的操作。

giaddr字段:

giaddr字段:标识客户端网关的IP地址。

如果服务器和客户端不在同一个网段且中间存在多个DHCP中继,

当客户端发出DHCP请求时,第一个DHCP中继会把自己的IP地址填入此字段,

后面的DHCP中继不修改此字段内容,

DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而为客户端分配该网段的IP地址

将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,

源地址改为中继连接客户端的接口地址,

通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继

如果DHCP客户端与DHCP服务器之间存在多个DHCP中继,后面的中继接收到DHCP DISCOVER报文的处理流程同前面所述。

提供阶段

服务器接收到DHCP DISCOVER报文后,

选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址;

然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。

检查报文中的giaddr字段,

如果不是接口的地址,则丢弃该报文;否则,继续下面的操作。

DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。

选择阶段

确认阶段

选择阶段和确认阶段的过程同无中继场景。


3. DHCP客户端重用曾经使用的地址的工作原理:

DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP_第5张图片 

选择阶段:

客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文

确认阶段:

服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址。


4. DHCP客户端更新租期的工作原理:

1. DHCP服务器采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。客户端向服务器申请地址时可以携带期望租期,服务器在分配租期时把客户端期望租期和地址池中租期配置比较,分配其中一个较短的租期给客户端。

2. 租期时间到后服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。

这种机制可以提高IP地址的利用率,避免客户端下线后IP地址继续被占用。

如果DHCP客户端希望继续使用该地址,需要更新IP地址的租期(如延长IP地址租期)。

1. 当租期达到50%(T1)时

当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。

如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

2. 当租期达到87.5%(T2)时

当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);

如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。

3. 租期时间到时都没有收到服务器的回应

如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。

客户端在租期时间到之前,用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。

DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。

客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息。



三、DHCP的优缺点

自动分配IP地址,大大缩减了人力资源浪费,减轻网络管理员的工作量,加强了管理员对网络设备的管理控制。

优点:

1.提供安全而可靠的配置。

DHCP避免了由于需要手动在每个计算机上键入值而引起的配置错误。

DHCP有助于防止由于在网络上配置新的计算机时重用以前指派的IP地址而引起的地址冲突。

2.可以减少配置管理。

使用DHCP服务器可以大大降低用于配置和重新配置网上计算机的时间。

可以配置服务器以便在指派地址租约时提供其他配置值的全部范围。

这些值是使用DHCP选项指派的。

3.DHCP租约续订过程还有助于确保客户端计算机配置需要经常更新的情况

(如使用移动或便携式计算机频繁更改位置的用户),

通过客户端计算机直接与DHCP服务器通讯可以高效、自动地进行这些更改。

4.IP地址采用租用方式,需要时向DHCP服务器申请IP,用完后释放,使IP地址可以再利用。

DHCP服务器数据库是一个动态数据库,向客户端提供租约或释放租约时会自动更新,

降低了管理IP地址的难度,所有DHCP客户的设置和变更都由客户端和服务器自动完成,不需人工干涉。

缺点:

1.DHCP不能发现网络上非DHCP客户端已经在使用的IP地址

2.DHCP服务器对于用户的接入没有限制,任何一台电脑只要连接到网络上,就能够通过DHCP服务器获得正确的网络配置,从而访问网络。

这样使得非法的用户很容易进入内部网络,带来安全隐患

3.当网络上存在多个DHCP服务器时,尤其是存在私设的冒充DHCP服务器时,

一个DHCP服务器不能查出已被其它服务器租出去的IP地址,将会给网络造成混乱

4.DHCP服务器不能跨路由器与客户端通信,除非路由器允许BOOTP转发。



四、DHCP配置方法

1. 接口配置办法

1、dhcp enable      在系统视图开启DHCP功能

2、int g0/0/1         进入接口

3、dhcp select interface             DHCP选择视图模式

4、dhcp server dns-list 2.2.2.2 8.8.8.8      国际通用DNS方式

5、dhcp server lease day 5          设置期限为5天,默认是3天

6、arp broadcast enable        路由需要配置ARP启动才能进行广播

 2. 全局配置办法

1、dhcp enable      在系统视图开启DHCP功能

2、int g0/0/1   进入接口

3、dhcp select global            DHCP选择全局模式(在网关下设置这个命令)

4、quit           回到系统视图(全局模式)下进行之后配置

5、ip pool   x x         进行命名如DHCP15

6、network 15.0.0.0 mask 24       网络网段及子网

7、gateway-list 15.0.0.1         网关是15.0.0.1

8、dns-list 2.2.2.2 8.8.8.8         国际通用标准(具体的要求还得看生产环境)

最后,可以简单看张图,对着图回想中间的细节

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP_第6张图片

 由于篇幅问题,关于DHCP存在的安全问题和解决方法等内容留到下一篇文章叙述

你可能感兴趣的:(网络基础,网络协议,服务器,网络)