动态主机配置协议DHCP

在网络环境中,每个设备连接到网络时都需要一个唯一的IP地址以进行通信。在早期的网络中,IP地址的分配通常是手动进行的,这不仅耗时耗力,而且随着网络规模的扩大,手动管理IP地址变得越来越复杂和容易出错

动态主机配置协议DHCP:可为计算机自动配置网络参数,使得计算机 “即插即联网” (Plug-and-Play Networking)

在网络中添加一台DHCP服务器,在服务器中设置好信息,网络中的主机开机后自动启动自己的DHCP程序,向DHCP服务器请求网络配置信息,动态地获得自己要请求的服务器的地址等各种信息

DHCP的基本工作过程

基本特点:

  • DHCP使用的是UDP提供的服务
  • DHCP服务器使用的UDP端口号是67
  • DHCP客户使用的UDP端口号是68

page=21
动态主机配置协议DHCP的基本工作过程

广播DHCP发现报文

当启动主机的 DHCP 后,DHCP 客户将广播发送 DHCP 发现报文

  • 该报文的 IP 数据报的源 IP 地址为 0.0.0.0(由于主机目前还为分配到 IP 地址)
  • 目的地址为 255.255.255.255(由于主机不知道网络中有哪几个 DHCP 服务器及 IP 地址)

DHCP服务器查找配置信息

DHCP 服务器接收到该报文(内部封装有事务 ID、DHCP 客户端的 MAC 地址),根据其中封装的 DHCP 客户端的 MAC 地址来查找自己的数据库,看是否针对该 MAC 地址的配置信息

  • 若有,则使用这些信息构造并发送 DHCP 提供报文
  • 若无,采用默认配置信息来构建并发送 DHCP 提供报文,封装该报文的IP数据报的源IP地址为DHCP服务器的IP地址

配置信息

配置信息包括:

  • IP 地址(DHCP 会使用 ARP 确保所选 IP 地址未被网络中其他主机占用 IP 地址
    • 子网掩码
    • 地址租期
    • 默认网关
  • DNS 服务器
    • 目的地址仍为广播地址(主机目前没有配置 IP 地址)

DHCP客户接受报文

DHCP 客户会接受该报文并做出相应处理(由运行着 68 端口号的进程)

  • DHCP 客户会根据 DHCP 提供报文中的事务 ID 来判断该报文是否是自己所请求的报文(事务 ID 相等则接受)
  • DHCP 服务器从自己的 IP 地址池中挑选待租用给主机的 IP 地址时,使用 ARP 确保所选地址未被网络中其他主机占用
  • 客户会收到多个 DHCP 服务器的报文,一般只选第一个
  • 紧接着向所选择的 DHCP 服务器发送 DHCP 请求报文,源 IP 地址为 0.0.0.0(由于刚挑选好 DHCP 服务器,需要征得该服务器的同意才能正确使用)
  • 目的 IP 仍为广播地址(不同向网络中的每一个 DHCP 服务器单播发送 DHCP 请求报文【内封装有事务 ID,及客户端 MAC 地址,接受租约的 IP 地址,提供该 IP 地址的 DHCP 服务器 IP 地址 】)

DHCP服务器发送确认报文

若 DHCP 服务器接收到该 DHCP 客户的报文,并发送确认报文(源 IP 为该服务器 IP 地址),目的地址仍为广播地址

客户判断是否收到可使用的租用ip地址

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

  • 若是,则发送DHCP谢绝报文,并重新发送DHCP发现报文;
  • 否则,可以使用租约中的IP地址与网络中其他主机通信了

客户向DHCP服务器请求更新租用期

当租用期过了一半时(0.5 倍租用期),DHCP 客户向 DHCP 服务器发送 DHCP 请求报文,请求更新租用期

  • 封装该报文的 IP 数据报的源 IP 地址为租用地址,目的地址为 DHCP 服务器地址
  • 情况 1:DHCP 服务器同意,发会 DHCP 确认报文,得到新的租用期
  • 情况 2:DHCP 服务器不同意,发会 DHCP 否认报文,立即停止使用租用的 IP 地址 重新发送 DHCP 发现报文
  • 情况 3:DHCP 服务器不响应,则在过了 0.875 倍租用期后,重新发送 DHCP 请求报文,继续等待 DHCP 反应
  • 到期后只能停止使用

客户可随机终止租用IP地址

客户可随机终止租用 IP 地址,只需要向 DHCP 服务器发送 DHCP 释放报文段即可

DHCP中继代理

page=27
能自动获取到IP地址等网络配置参数吗?

路由器隔离广播域会在一些情况下导致主机不能自动获取到IP地址等网络配置参数

路由器配置DHCP服务器地址

通过给路由器配置 DHCP 服务器地址,称为 DHCP 中继代理;
当该路由器收到广播的 DHCP 发现报文后,会将其单播发送给 DHCP 服务器;

为此,在网络中减少了 DHCP 服务器的数量