DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),是一个应用层协议,通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。
DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送 DHCP discover发现信息来寻找DHCP服务器,源地址为0.0.0.0目的地址为255.255.255.255。网络上每一台安装了TCP/IP协议的主机 都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的 IP地址和其他设置的DHCP offer信息。
DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定。
另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回之前为其提供的IP地址。
以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给 DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户 机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的 信息。
Op: 报文类型,分为 两大类: Request(1) 和 Reply(2)
HW Type: 硬件类型,一般是以太网:1
HW Len: 硬件地址长度,单位字节。对应以太网:6(mac地址长度为6字节48bit)
Transaction ID:事务ID,随机数,有客户端生成,服务器Reply时,会把Request中的Transaction拷贝到Reply报文中。
Secs: 距离第一次发射IP请求或Renew请求过去的秒数
Flags:标志位,目前仅第一个bit有使用,置1 标明广播
Client IP Address:当前客户端的IP地址,如果当前客户端没有IP地址,则置0
Your IP Address: 服务器想客户端提供IP地址时,会把IP地址填入本字段
(Next)Server IP Address:客户端引导时需要的另一个服务器的IP地址
Gateway (Relay) IP Address: 网关(中继)IP地址,有DHCP 中继器在转发DHCP报文的时候填入
Server Name: Server名字,有64bytes,一般不使用,填充为0
Boot File name: boot file的路径,128bytes, 一般不使用,填充为0
Option: 选项,不定长度。
Option | 名称 | 描述 |
---|---|---|
0 | Pad | 填充位 |
1 | Subnet Mask | 子网 掩码 |
3 | Router Address | 路由器地址 |
6 | DNS | DNS server |
15 | DN | 域名 |
50 | Requested IP Address | 请求的IP地址 |
51 | Address Lease Time | 地址租约时间 |
53 | DHCP Message Type | DHCP消息类型,如Discover、Request、Offer、ACK等 |
54 | Server Identifier | 服务器标识 |
55 | Parameter Request List | 参数请求列表 |
56 | DHCP Error Message | DHCP 错误消息 |
58 | Lease Renewal Time | 租约续期时间 |
59 | Lease Rebinding Time | 租约重新设定的时间 |
61 | Client Identifier | 客户标识 |
119 | Domain Search List | 域名查找列表 |
255 | End | 结束 |
在DHCP Option中,我们着重看下DHCP Message Type(53),DHCP Message Type标识DHCP消息类型,主要有一下类型:
DHCP 消息类型 | 对应的Option值 |
---|---|
DHCPDISCOVER | 1 |
DHCPOFFER | 2 |
DHCPREQUEST | 3 |
DHCPDECLINE | 4 |
DHCPACK | 5 |
DHCPNAK | 6 |
DHCPRELEASE | 7 |
DHCPINFORM | 8 |
DHCPFORCERENEW | 9 |
DHCPLEASEQUERY | 10 |
DHCPLEASEUNASSIGNED | 11 |
DHCPLEASEUNKNOWN | 12 |
DHCPLEASEACTIVE | 13 |
详细的抓包分析可以参见Wireshark分析DHCP
举例:服务器用DHCP ACK包对DHCP请求进行响应
从上图可以看出,在数据包中包含以下信息,表示将这些资源信息分配给Client.
Your(client) IP address:分配给Client的可用IP。
DHCP Message Type(53):DHCP服务器发送的消息类型(ACK)
Subnet Mask:Client端分配到的IP的子网掩码;
Router:路由器
Domain Name Server:DNS,域名服务器
IP Address Lease Time:IP租用期
DHCP通信原理详解
DHCP的基本实现原理
DHCP协议 详解
Wireshark分析DHCP