DHCP 协议


# DHCP 协议

# 概述

DHCP:Dynamic Host Configuration Protocol ,动态主机配置协议

作用:集中管理、动态分配 IP 地址给客户端

端口号:67(服务器)、68(客户端)

使用协议:UDP

# DHCP 报文

# 报文种类

DHCP 中一共有 8 种报文:

  • DHCP Discover
    • 客户端以广播方式发送该报文用来发现 DHCP 服务器,源地址为 0.0.0.0,目的地址为 255.255.255.255
    • DHCP 服务器收到该报文后发送应答报文,客户端据此知道服务器位置
    • 如果没有得到服务器的回应,客户端会从 169.254.0.0/16 这个地址段中选择一个地址,并每隔 5 分钟重新广播一次
  • DHCP Offer
    • 服务器收到 Discover 报文后,会在配置的地址池中查找一个合适的 IP 地址,加上租约期限和其他信息,构造成该报文,发送给客户端,源地址为服务器地址,目标地址 255.255.255.255
    • 该报文只是告诉客户端可以提供地址,还需检测该地址是否重复
  • DHCP Request
    • 未获得 IP 地址的客户端在收到的 Offer 报文中,通常选择第一个应答报文的服务器为自己的目标服务器,随后发送一个广播的 Request 请求报文,告知服务器希望获得的 IP 地址
    • 源地址为 0.0.0.0,目标地址为 255.255.255.255
    • 已获得 IP 地址的客户端在租约期过 50% 时,重新发送 Request 请求延续租约,如果没有收到 ACK 报文,在租期达到 87.5% 时,会再次发送广播的 Request 请求报文以请求续延租约
  • DHCP ACK
    • DHCP 服务器收到 Request 请求报文后,根据 Request 报文中携带的用户 MAC 来查找有没有相应的租约记录,如果有则发送 ACK 应答报文,通知用户可以使用分配的 IP 地址
    • 客户端收到该报文时,会发送三个针对此 IP 地址的 ARP 解析请求执行冲突检测
  • DHCP NAK
    • 如果 DHCP 服务器收到 Request 请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向 DHCP 客户端发送 NAK 应答报文,通知用户无法分配合适的 IP 地址
  • DHCP Release
    • DHCP 客户端不再需要使用分配 IP 地址时( 一般出现在客户端关机、下线等状况 ),主动向 DHCP 服务器发送 RELEASE 请求报文,告知服务器用户不再需要分配 IP 地址,请求 DHCP 服务器释放对应的IP地址
  • DHCP Decline
    • DHCP 客户端收到 DHCP 服务器 ACK 应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向 DHCP 服务器发送 Decline 请求报文,通知服务器所分配的 IP 地址不可用,以期望获得新的 IP 地址
  • DHCP Inform
    • DHCP 客户端如果需要从 DHCP 服务器端获取更为详细的配置信息,则向 DHCP 服务器发送Inform 请求报文
    • DHCP 服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向 DHCP 客户端发送 ACK 应答报文

# 工作过程

正常的获取 IP 地址的过程如下:

DHCP 客户端DHCP 服务端第 1 步:客户端发送 Discover 广播消息第 2 步:服务端回应 Offer,提供地址租约第 3 步:客户端选择并发送 Request 请求地址租用第 4 步:服务端发送 ACK 确认将地址租用给客户端 如果地址租约快到期时,会重新发送 Request 请求续约

# 数据包

使用 wireshark 进行数据抓包:

discover

Discover 包数据:

dhcp2

Offer 数据包:

dhcp3

Request 数据包:

dhcp4

ACK 数据包:

dhcp5

# DHCP 中继

作用:在处于不同网段的 DHCP 服务器和客户端之间转发 DHCP 数据包

过程

服务端与客户端属于不同网段

dhcp6

  • 客户端发送的报文均由中继发送到 DHCP 服务器
  • DHCP 发送的消息由中继转发给客户端

(完)