[Linux]经典面试题 - 服务管理 - DHCP
目录
一、DHCP概述
1.1 DHCP是什么?
- DHCP(动态主机配置协议)是一个局域网的网络协议。
- DHCP Server配置好地址池,Client登陆的时候就能自动获取到IP、掩码、DNS等。
1.2 DHCP细节
-
DHCP服务端使用UDP:67;客户端使用UDP:68。
-
DHCP运行分为四个基本过程:
-
请求IP租约
-
提供IP租约
-
选择IP租约
-
确认IP租约
-
-
客户在获得一个IP地址后,会发送一个ARP请求来避免由于HDCP地址池重叠而引发的IP冲突。
-
DHCP中涉及到中继的问题,都是把广播帧拆分成多个单播帧进行发送。
二、DHCP报文详情
2.1 DHCP的八种报文
报文类型 | 封包类型 | 作用 |
---|---|---|
DHCP DISCOVER | 广播 | 客户端用于找DHCP服务器。 |
DHCP OFFER | 单播 | DHCP服务器响应DHCP DISCOVER报文,此报文携带各种配置信息。 |
DHCP REQUEST | 广播 | 三种用途: 1. 客户端初始化,发送广播DHCP REQUEST回应DHCP OFFER报文。 2. 客户端重上线,用于确认先前分配的IP地址等配置信息。 3. 客户端租约将到期,用于进行IP地址的续约。 |
DHCP ACK | 单播 | DHCP服务器对客户端的DHCP REQUEST报文的确认,此时客户端真正获得IP与相关配置信息。 |
DHCP NAK | 单播 | DHCP服务器对客户端的DHCP REQUEST报文的拒绝。(如上所述的三种DHCP REQUEST情况的拒绝响应时发送 DHCP NAK报文)。 |
DHCP RELEASE | 单播 | 客户端可通过发送此报文主动释放服务器分配给它的IP地址,服务器收到此报文后,就可以将这个IP地址分配给其他设备。 |
DHCP DECLINE | 单播 | 客户端发现地址与其他设备冲突时,向DHCP服务器发送DHCP DECLINE报文,用于重新申请地址。 |
DHCP INFORM | 单播 | 客户端获取地址后,若想获取更为详细的信息如:DNS、网关等,则向DHCP服务器发送DHCP INFORM请求报文。 |
2.2 DHCP 报文格式
(图片来自百度)
2.3 DHCP Options
BOOTP / DHCP options (networksorcery.com)
三、DHCP工作流程
3.1 租约四步曲
-
发现,客户端广播发送DHCP DISCOVER报文给同网段的设备(DHCP服务器、DHCP中继)。报文中携带了客户端MAC(chaddr)、需请求参数列表选项(Option55)、广播标志位(flags)等。
-
提供,与客户端同网段的DHCP服务器会接受其发出的DHCP DISCOVER报文,然后DHCP服务器会从地址池(全局/接口,看具体配置)中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给客户端。
补充:关于租期,DHCP服务器会拿客户端期望租期与指定租期作比较,选较小的作为实际租期。
-
选择,通常客户端只接受第一个DHCP OFFER报文,然后广播发送DHCP REQUEST报文,报文中包含了DHCP服务器标识符(Option54)、客户端IP地址(Option50)
-
确认,DHCP服务器收到客户端发送的DHCP REQUEST报文,会回复一个携带相关配置信息的DHCP ACK报文给客户端。
在有DHCP中继的情况下,DHCP的广播报文会被转换成多个单播报文发送给相应的设备,因为三层网络隔离广播域。
3.2 重用旧地址
- 选择,客户端发送DHCP REQUEST,报文中的Option50字段填入曾使用过的地址。
- 确认,如果DHCP服务器在MAC地址表中查找到租约记录,则发送DHCP ACK告知可继续使用该IP地址,否则沉默,直至客户端再发送DHCP DISCOVER报文请求新的IP地址。
3.3 更新租约期
- 租约期到达50%时,单播DHCP REQUEST报文,请求续约,若得到响应则成功续约。
- 租约期到达87.5%时,仍未得到回应,则广播DHCP REQUEST报文,请求新的地址。