DHCP
IETF于1993年发布了DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)。DHCP实现了网络参数配置的自动化,降低客户端的配置和维护成本。
•DHCP是一种用于集中对用户IP地址进行动态管理和配置的协议。
•DHCP采用C/S(Client/Server,客户端/服务器)通信模式,协议报文基于UDP的方式进行交互,采用67(DHCP服务器)和68(DHCP客户端)两个端口号
•DHCP相对于手工配置有如下优点:
▫效率高
▫灵活性强
▫易于管理
工作原理
1,发现阶段
DHCP客户端会 广播 发送 DHCP DISCOVER 报文来发现DHCP服务器。
DHCP DISCOVER报文中携带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息。
广播是因为 不知道DHCP服务器在哪,有几个。
2,提供阶段
DHCP服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后(广播/单播)发送DHCP OFFER报文(携带了将要分配给客户端的IP地址并暂时为客户端保留—可能多个dhcp服务器)发送给DHCP客户端。 DHCP服务器从地址池中取出ip时,会使用ARP确保所选IP地址未被网络中其他主机占用。
广播/单播原因 — 区分厂商华为默认使用单播思科使用广播
3,选择阶段
如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收 第一个 收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。
广播的原因 – 1.告知服务器我选择了你提供的IP地址
2.告知其他服务器我已经有选择了
4,确认阶段
DHCP服务器在接收到报文后,(单播)回复给客户端确认或者拒绝的信息DHCP ACK包。
拒绝的原因:可能有两台PC同时请求地址,结果服务器给出的地址都是同一个,这样就导致后一个发送DHCP request报文的PC无法获取到有效地址
DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,检测所分配到的IP地址是否已被网络中其他主机占用。
若被占用:客户端会给服务器发送DHCP DECLINE报文 撤销 IP地址续租。并重新发送Discover报文
若未被占用:可以使用续租中的IP地址与网络中其他主机通信。
当PC获取到IP地址后,且IP地址可用,则使用DHCP inform报文来获取网关、DNS等配 置信息。
•在确认阶段,两种情况可能出现IP地址的冲突:
1,DHCP服务器收到DHCP DISCOVER报文时,给客户端分配IP地址前会发送Ping探测,如果能Ping通则标识该地址不可用,并选择其他IP地址分配给客户端。
2,DHCP客户端获取IP地址成功后,会立即发送免费ARP报文,如果收到响应,则发送DHCP DECLINE报文通知DHCP服务器该IP地址冲突,DHCP服务器标识该地址不可用,客户端发送DHCP DISCOVER报文重新申请IP地址。
DHCP消息类型
•1-DHCP DISCOVER:
DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个消息,用来寻找DHCP服务器。
•2-DHCP OFFER:
DHCP服务器用来响应DHCP DISCOVER消息,此消息携带了各种配置信息。
•3-DHCP REQUEST:
客户端初始化后,发送广播的 DHCP REQUEST 报文来回应服务器的 DHCP OFFER 报文。
客户端重启初始化后,发送广播的 DHCP REQUEST 报文来确认先前被分配的 IP 地址等配置信息。
当客户端已经和某个 IP 地址绑定后,发送 DHCP REQUEST 报文来延长 IP 地址的租期。
•4-DHCP DECLINE:
当客户端发现服务器分配给它的 IP 地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。
•5-DHCP ACK:
服务器对客户端的 DHCP REQUEST 报文的确认响应报文,客户端收到此报文后,才真正获得了 IP 地址和相关的配置信息。
•6-DHCP NAK:
服务器对客户端的 DHCP REQUEST 报文的拒绝响应报文,比如服务器对客户端分配的 IP 地址已超过使用租借期限(服务器没有找到相应的租约记录)或者由于某些原因无法正常分配 IP 地址,则发送 DHCP NAK 报文作为应答(客户端移到了另一个新的网络)。
通知 DHCP 客户端无法分配合适 IP 地址。DHCP 客户端需要重新发送
•7-DHCP RELEASE:
客户端可通过发送此报文主动释放服务器分配给它的 IP 地址,当服务器收到此报文后,可将这个 IP 地址分配给其它的客户端
•8-DHCP INFORM:
客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其他的一些网络配置信息,比如网关地址、DNS 服务器地址等。
DHCP地址续租
•DHCP服务器给每个分配给客户端的IP地址定义一个使用期限,该使用期限被称为租期。在租期到期前,DHCP客户端如果仍需要使用该IP地址,可以请求延长租期;如果不需要,可以主动释放该IP地址。在没有其他空闲地址可用的情况下,DHCP服务器会把客户端主动释放的IP地址分配给其他客户端。
•DHCP客户端无论在T1还是T2时刻发送DHCP REQUEST报文后,如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
•客户端在租期时间到之前,如果用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息。