DHCP详解

DHCP简介

我们都知道一台计算机或者手机想要上网,必须要有一个IP地址,要不然别人是找不到你的。

如果我们要手动配置IP的话,是非常麻烦的。因为一个IP地址要对应着一个网络,而一个网络对应一个位置。如果主机更改位置了,要重新变换IP地址。

实际上我们在使用计算机和手机或者更改位置的时候,也没有手动配置或者更换过IP地址吧。但是我们还是正常的上网了。

这就归结于DHCP的功劳了。

DHCP的全称是Dynamic Host Configuration Protocol,也叫做动态主机配置协议。简单的说,DHCP是一个应用层协议,就是为主机动态分配IP地址。

这可能和RARP有点相似,实际上,DHCP是RARP的升级版,改正了RARP存在的问题:
1、 不能跨网段申请IP地址
2、 必须在申请前就为主机配置好IP地址。

DHCP详解

在这里插入图片描述

上图就是DHCP协议的层次图。

DHCP是一个应用层协议,分为三个部分:
1、 DHCP 客户端

DHCP客户端占用68端口,DHCP客户端发送的是UDP数据包。

2、 DHCP 中继

DHCP中继是就是一个路由器,用于转发DHCP请求。

3、 DHCP 服务器
DHCP服务器监听67端口,用于接收DHCP客户端的请求。

我们首先说下DHCP报文的中包含的重要字段:
1、 XID 是对 请求IP的会话的唯一标识,是随机生成的。
2、 DHCP客户端的MAC地址。

下面说下详细过程:
1、 DHCP客户端发送一个DISCOVER包,DISCOVER包就是一个UDP包,对应的源端口号为68,目的端口为67,源IP地址为0.0.0.0,目的地址为255.255.255.255,源MAC地址为客户端的MAC地址,目的MAC地址是FFFFFFFFFFFF,表示一个广播帧。

UDP数据包中装的是XID、DHCP客户端中的MAC地址等信息。
在这里插入图片描述

2、 当帧通过交换机广播到路由器的时候,路由器会拆开帧,查看到对应的目的IP地址为255.255.255.255,源地址是0.0.0.0,并且源端口号是68,目的端口号是67,代表这是一个DHCPDISCOVER包。

路由器就是一个DHCP中继, 会将数据包拆开,取出XID和MAC地址等关键信息。

然后取出路由器中存放的DHCP服务器的IP地址 ip1,和端口号port1,加上自己端口的IP地址 ip2端口号 port2,以及DISCOVER包中XID、MAC地址等关键信息 合成一个UDP数据包,发送到对应的DHCP服务器。

路由器中可能存在多个DHCP服务器,同时会向多个DHCP服务器发送消息。

3、 当DHCP服务器收到对应的UDP包后,会取出对应的源IP地址,
源IP地址记录了DHCP处在哪个本地网络,为其分配合适的IP地址,总不能给DHCP客户端分配一个不属于本地网络的IP地址吧,如果那样的话,就是分配了,DHCP也不能正常上网啊,不能接收到别人的数据。

DHCP为DHCP客户端分配属于其本地网络的合适的IP地址。

然后将DHCP服务器信息、DNS服务器信息、IP地址、子网掩码、租期信息、默认网关信息(就是刚才DISCOVER包中的源地址)等租赁信息和XID、MAC地址等信息包装成UDP发送给 路由器中继。

这种包被称为OFFER包,表示DHCP客户端统一租用IP地址了。

4、 当路由器中继收到OFFER包后,在将其包装为帧,广播给DHCP客户端,客户端收到OFFER包后,会检测XID和MAC是否于自己是一致的。如果一直,就说明是发给自己的。

然后发送REQUEST包,REQUST中包括了XID,DHCP服务器信息、IP地址等信息。像包装DISCOVER包一样包装IP地址和端口号。然后广播发送给路由中继,路由中继 只会向 REQUEST包中的DHCP服务器发送数据包。

5、 当DHCP服务器收到REQUEST包后,会比对数据包与DHCP本地的相关IP信息是否一致,如果一致会发送ACK包给路由中继。表示同意租用IP给DHCP客户端。

如果 不一致,就发送NAK,表示出现错误,不分配IP地址给DHCP客户端。

NAK发生在什么情况下呢?
DHCP服务器在发送完OFFER包,如果在一段时间内收不到DHCP客户端的回应,会将IP分配给其他主机。因为这个时候DHCP客户端可能已经接收了其他DHCP的IP,或者下线了。这个时候就需要将IP分给其他主机或者回收。

ACK包中存在着对应的XID、MAC地址、以及IP配置信息。

6、 当路由中继收到ACK包后,通过广播转发给DHCP客户端。

7、 DHCP客户端收到ACK包后,就可以使用相关的IP信息了,就可以上网了。

在这里插入图片描述

DHCP的IP分配策略

1、 静态分配
为主机分配固定的IP地址,不会改变,即使当主机关机了,也不会将该IP地址分配给其他主机。

2、 动态分配

为主机分配不固定的IP地址,IP地址具有有效期,在有效期结束之前需要续、
当主机关机或者没有及时续约了,会将其IP地址回收,供其他主机使用

分配有以下优先级:
1、 如果为静态分配,首先为其分配其静态IP地址
2、 根据MAC地址,找到其曾经使用过的可用IP
3、 最先可用的IP地址

DHCP为什么要四次,而不是两次或者三次

因为在第一次DISCOVER的时候,路由中继会向多个 DHCP服务器 同时发送DISCOVER包。

如果只有两次的话,多个DHCP服务器同时会为一个DHCP客户端预留IP地址信息,但是实际上DHCP客户端只能用一个IP地址,所以DHCP客户端要发送REQUEST包来通知对应的DHCP服务器,让其分配IP地址,就可以了。

其他没有被选中的DHCP服务器 不会收到REQUEST包,可以在一段时间后将之前预留的IP地址分配给其他主机。

这样就减少了资源浪费。

细心的同学会发现这样的话,三次不就够了吗,为何DHCP服务器还要发送ACK包给DCHP客户端。

因为可能由于网络波动,OFFER包和REQUEST包阻塞在网络中,导致了DHCP服务器在等待时间内没有收到REQUEST包,导致将该IP分配给了其他主机。

所以DHCP服务器需要发送第四次报文ACK或者NCK来通知DHCP客户端,告知其结果。

所以最少需要四次。

DHCP租约时间

DHCP动态分配是由租约时间的,如果超过了租约时间,DHCP客户端是无法使用IP的。

1、 当到了租约时间的50%的时候,DHCP客户端会将之前申请IP时候的REQUEST包单播DHCP服务器。如果收到ACK包,就重新更新租约时间。

2、 如果到了租约的87.5%的时候,还没有收到ACK包,说明之前的DHCP服务器可能宕机了,但是同一网络中可能会存在备份的DHCP服务器。

会采用广播的方式来发送REQUEST包。如果备份的DHCP服务器收到REQUEST包,会发送ACK包到DHCP客户端,客户端就会更新租约时间了

3、 如果到租约时间结束还未收到ACK包,就放弃之前的IP地址,就重新发送DISCOVER包,重新申请IP地址。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值