6.3、动态主机配置协议 DHCP

1、DHCP的作用

如下所示,我们如何配置用户主机,才能是用户主机正常访问网络中的 Web 服务器

image-20230108230719775

即:需要给网络中的各主机正确配置 IP 地址、子网掩码、默认网关、DNS 服务器等网络相关配置信息

例如:如下所示,手工配置的网络相关配置信息

image-20230108234321484

若配置的主机比较多,则手工配置的工作量比较大,且容易出错!

image-20230108234400722


若给该网络配置一台 DHCP 服务器,在该服务器中设置好可为网络中其他各主机配置的网络配置信息

网络中各主机开机后自动给启动 DHCP 程序,向 DHCP 服务器请求自己的网络配置信息

  • 这样网络中的各主机就都可以从 DHCP 服务器自动获取网络配置信息

image-20230108234751273

2、DHCP的工作过程

2.1、前提说明

假设网络中有两台 DHCP 服务器和一台用户主机

image-20230108234844086

DHCP 使用 C/S 方式,在 DHCP 服务器上运行 DHCP 服务器进程

  • 也可以简称为 DHCP 服务器

在用户主机上运行 DHCP 客户进程

  • 也可以简称为 DHCP 客户

image-20230108235011684


DHCP 是应用层的协议,它使用 UDP 所提供的服务

  • 也就是说 DHCP 报文在运输层会被封装成为 UDP 用户数据报

DHCP 服务器使用的 UDP 端口: 67 67 67

DHCP 客户使用的 UDP 端口: 68 68 68

这两个 UDP 端口都是熟知端口


封装有 DHCP 的用户数据报在网络层会被封装成 IP 数据报

  • 然后再根据所使用的网络接口封装成相应的相应的数据链路层的帧进行发送
  • 例如:封装成以太网帧

2.2、DHCP 客户与DHCP服务器的交互过程

image-20230109193348246


当启用主机的 DHCP 后,DHCP 客户将广播发送 DHCP 发现报文 \color{blue}\texttt{DHCP}发现报文 DHCP发现报文

封装该报文的 IP 数据报的源 IP 地址为 0.0.0.0 0.0.0.0 0.0.0.0

  • 这是因为主机目前还未分配到 IP 地址,因此使用该地址来代替

目的 IP 地址为广播地址 255.255.255.255 255.255.255.255 255.255.255.255

  • 之所以进行广播发送,是因为主机现在并不知道网络中有哪几个 DHCP 服务器

由于是广播的 IP 数据报,因此网络中的所有设备都会收到该 IP 数据报

  • 并对其层层解封

解封出封装有 DHCP 发现报文的 UDP 用户数据报

image-20230109001953098


对于 DHCP 客户,其应用层没有监听UDP 用户数据报目的端口 67 67 67 的进程

  • 也就是没有监听 DHCP 服务器进程

因此无法交付 DHCP 发现报文,只能丢弃(网络中其他客户机丢弃了这个 DHCP 发现报文)

对于 DHCP 服务器,其应用层始终运行着 DHCP 服务器进程,

  • 因此会接受该 DHCP 发现报文并作出响应

DHCP 报文的格式比较复杂,对于 DHCP 发现报文

  • 我们只需要知道其内部封装有事务 IDDHCP 客户端的 MAC 地址即可

image-20230109005850649


DHCP 服务器收到 DHCP 发现报文后,根据其中封装的 DHCP 客户端的 MAC 地址来查找自己的数据库

  • 看是否有针对该 MAC 地址的配置信息。

若有,则使用这些配置信息来构建并发送 DHCP 提供报文 \color{blue}\texttt{DHCP} 提供报文 DHCP提供报文

若没有,则采用默认配置信息来构建并发 DHCP 提供报文


封装有该报文的 IP 数据报的源 IP 地址为 DHCP 服务器的 IP 地址

目的 IP 地址仍为广播地址

  • 原因是:主机目前没有配置 IP 地址,为了使主机可以收到,只能发送广播

这样一来网络中的所有设备都会收到该 IP 数据报,并对其层层解封

  • 解封出封装有 DHCP 提供报文的 UDP 用户数据报

对于 DHCP 服务器,其应用层没有监听该 UDP 用户数据报目的端口 68 68 68 的进程

  • 也就是 DHCP 客户进程,因此无法交付 DHCP 提供报文,只能丢弃

image-20230109010145251


而对于 DHCP 客户,其应用层运行着 DHCP 进程

  • 因此会接受该 DHCP 提供报文并作出相应处理

DHCP 客户会根据 DHCP 提供报文中的事务 ID 来判断该报文是否是自己所请求的报文

  • 若该事务 ID 与自己之前发送的 DHCP 发现报文中封装的事务 ID 相等

    就表明这是自己所请求的报文,就可以接收该报文;否则丢弃该报文

image-20230109010846766


DHCP 提供报文中还封装有配置信息

  • 例如:IP 地址,子网掩码, 地址租期,默认网关,DNS 服务器等

注意DHCP 服务器从自己的 IP 地址池中挑选待租用给主机 IP 地址时,

  • 会使用 ARP 来确认所选 IP 地址未被网络中其他主机占用

image-20230109011152207


在本例中,DHCP 客户会收到两个 DHCP 服务器发来的 DHCP 提供报文,

  • DHCP 客户从中选择一个,一般来说,选择先到的那个
  • 并向所选择的 DHCP 服务器发送 DHCP 请求报文 \color{blue}\texttt{DHCP} 请求报文 DHCP请求报文

封装该该报文的 IP 数据报的源 IP 地址仍为 0.0.0.0 0.0.0.0 0.0.0.0

  • 因为此时 DHCP 客户才从多个 DHCP 服务器中挑选一个作为自己的 DHCP 服务器,

    它首先需要征得该服务器的同意,之后才能正是使用向该 DHCP 服务器租用的 IP 地址

目的地址仍为广播地址

  • 因为不用向网络中的每一个 DHCP 服务器单播发送 DHCP 请求报文,

    来告知它们是否请求它们作为自己的 DHCP 服务器

DHCP 请求报文中封装有事务 ID

  • DHCP 客户端的 MAC 地址
  • 接受的租约中的 IP 地址
  • 提供此租约的 DHCP 服务器端的 IP 地址

image-20230109011927410


在本例中,假设 DHCP 客户选择 DHCP 服务器 1 1 1 作为自己的 DHCP 服务器

  • 并且 DHCP 服务器 1 1 1 接收该请求

于是 DHCP 服务器 1 1 1DHCP 客户发送 DHCP 确认报文

封装该该报文的 IP 数据报的源 IP 地址为 DHCP 服务器 1 1 1IP 地址

  • 目的地址仍为广播地址(DHCP 客户还没有所提供的使用 IP 地址)

image-20230109012212767

DHCP 客户收到该确认报文后,就可以使用所租用的 IP


注意:在使用租用到的 IP 地址之前

DHCP 客户使用 ARP 检测所分配到的 IP 地址是否已被网络中其他主机占用:

若被占用:给 DHCP 服务器发送 DHCP DECLINE” (DHCP 谢绝)报文撤销(谢绝) IP 地址租约,并重新发送 “DHCP DISCOVER” (DHCP 发现)报文;

若未被占用:可以使用租约中的 IP 地址与网络中其他主机通信了。

image-20230109012555141


当租用期过了一半时,DHCP 客户会向 DHCP 服务器发送 DHCP 请求报文

  • 来请求更新租用期

封装该报文的 IP 数据报的源 IP 地址为 DHCP 客户之前租用到的 IP 地址

  • 目的 IP 地址为 DHCP 服务器 1 1 1 的地址

DHCP 服务器若同意,则发回 DHCP 确认报文

  • 这样 DHCP 客户就得到了新的租用期

DHCP 服务器若不同意,则发回 DHCP 否认报文

  • 这时 DHCP 客户必须立即停止使用之前租用的 IP 地址

    并重新发送 DHCP 发现报文来重新申请 IP 地址

DHCP 服务器若未作出响应,则在租用期过了 87.5 % 87.5\% 87.5%

  • DHCP 客户必须重新发送 DHCP 请求报文

    然后继续等待 DHCP 服务器可能做出的响应

DHCP 服务器若未作出响应,则当租用期到期后

  • DHCP 客户必须立即停止使用之前租用的 IP 地址

    并重新发送 DHCP 发现报文来重新申请 IP 地址

DHCP 客户可以随时提前终止 DHCP 服务器所提供的租用期,

  • 这时只需要向 DHCP 服务器发送 DHCP 释放报文段即可

image-20230109193408082


注意DHCP 服务器再给 DHCP 客户挑选 IP 地址时,使用 ARP 来确保所挑选的 IP 地址未被网络中其他主机占用

  • DHCP 客户在使用 IP 地址之前也会使用 ARP 来检测该 IP 地址是否被网络中其他主机占用

综上

image-20230109193348246

3、DHCP中继代理

image-20230109193535324

该网络中的主机广播发送 DHCP 发现报文,但该广播报文不会被路由器转发,而是丢弃!

image-20230109193623352


解决办法

image-20230109193714329

当该路由器收到广播的 DHCP 发现报文后,会单播转发给 DHCP 服务器

image-20230109193811178


使用中继代理的原因:

  • 并不愿意在每一个网络上都设置一个 DHCP 服务器,因为这样会使 DHCP 服务器的数量太多

4、小结

image-20230109194440493

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值