目录
DHCP基础知识汇总
主要是关于DHCP报文类型、报文结构、同网段通信原理以及帧中继的基础内容
DHCP报文种类
DHCP有八种报文种类,其中常见的是前7种报文,比较重要的是前4种报文,如下:
- DHCP DISCAVER报文:DHCP客户端在本地网络以广播的形式发送discover请求报文(源IP:0.0.0.0 目的IP:255.255.255.255),用于发现网络中的DHCP服务器;
- DHCP OFFER报文:DHCP服务器收到discover请求报文后,会查找地址池里可用IP地址,并将租期、子网掩码、网关、DNS等信息一同封装在offer请求报文(源IP:DHCP服务器 目的IP:255.255.255.255)以广播的方式发送出去并且在服务器上添加租约记录;
- DHCP REQUEST报文:客户端用于请求收到offer报文里的IP地址所发送的request请求报文(源IP:0.0.0.0 目的IP:255.255.255.255);在租期时间只剩1/2时,也会发送该报文用于请求延长租期,如果DHCP没有回复ACK应答报文,就会在租期时间只剩7/8时,也会再次发送该报文用于请求延长租期;
- DHCP ACK报文:服务器收到客户端的request报文,请求的IP地址及参数无误就会发送ACK应答报文(源IP:DHCP服务器 目的IP:255.255.255.255)同意客户端的请求;根据该报文的用户Mac地址查找是否有相应的租约记录,如果有就发送ACK报文同意续租(收到续租时发送request报文);
- DHCP NAK报文:如果服务器收到的request报文中请求的IP地址及参数有误或没有相应的租约记录就会发送NAT应答报文,通知客户端无法分配IP地址或者续约;
- DHCP RELEASE报文:客户端主动释放IP地址时就会发送该报文,用于告知服务器不再使用该IP地址,服务器就能快速收回地址;
- DHCP DELINE报文:客户端获得IP地址后,发送免费ARP发现服务器分配的IP地址已经被使用或者由于某种原因使得该IP不能正常使用,就会发送该报文通告DHCP服务器地址不可用,希望获取新的IP地址;
- DHCP INFORM报文:客户端有IP地址但没有其他参数就会向DHCP发送inform报文请求获取其他参数(很少见);
注:在客户端获取IP地址过程中,所有报文都是采用广播形式发送(同网段);如果有DHCP中继器,那么中继器与客户端发送的报文都是广播形式,中继器与DHCP服务器之间发送的报文都为单播形式;
报文结构分析
报文字段 | 说明 |
---|---|
OP | 指定DHCP报文的类型,请求报文置为1,应答报文置为2(请求报文包含:discover报文,request报文,decline报文,release报文,inform报文;应答报文包括:offer报文,ack报文,nak报文) |
Hype | 指定客户端MAC地址类型,该字段置为1表示最常见的以太网类型 |
Hlen | 指定客户端MAC地址的长度 |
Hops | 指定DHCP经过DHCP中继器的数量,请求报文经过一个DHCP中继器该字段就会增加1,没有经过置为0 |
Xid | 在客户端发送discover报文时随机产生的标识符,用于标识IP地址请求过程,整个IP地址的请求过程使用的都是一样的,简单来说,整个IP地址请求的过程都使用discover报文产生的XID值,便于区分不同客户端的IP地址请求过程(一个DHCP服务器有多个客户端,便于区分不同客户端的IP地址请求过程) |
Secs | 指客户端获取到IP地址后已使用的时间或者续约成功后IP地址已使用时间(定时器,确定IP地址租期是否过期)单位为秒,没有获取IP地址之前置为0 |
Flags | 标识应答报文是采用单播还是广播发送,置为0是单播发送,置为1是广播发送(只使用第一位,其余位未使用) |
Ciaddr | DHCP客户端的IP地址;在没有获取到IP地址之前该字段都置为0.0.0.0 |
Yiaddr | DHCP服务器分配给客户端的IP地址,除offer和ACK报文,其他报文该字段为0.0.0.0(只有应答报文才有该字段) |
Siaddr | DHCP服务器的IP地址,除offer和ACK报文,其他报文该字段为0.0.0.0(只有应答报文才有该字段) |
Giaddr | DHCP客户端发送的报文经过的第一个DHCP中继器的IP地址,没有经过中继器就置为0.0.0.0 |
Chaddr | 记录DHCP客户端的MAC地址,每个报文中都有 |
Sname |