DHCP协议详解
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是DHCP?
概念: DHCP,动态主机配置协议,前身是bootp协议,是一个局域网的网络协议,使用UDP协议工作,常用的两个端口:67(server),68(client)。DHCP常用于局域网环境,主要作用是集中的管理,分配IP地址、使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率
二、原理
DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用67/udp,客户端使用68/udp,DHCP运行分为四个基本过程,分别为请求IP租约(discover)、提供IP租约(offer)、选择IP租约(request)和确认IP租约(ack),客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突 DHCP发现(DISCOVER) 当客户机接入网络后,会主动在物理子网上发送广播来寻找可用的DHCP服务器。网络管理员可以配置一个本地路由来转发DHCP包给另一个子网上的DHCP服务器。该client实现生成一个目的地址为255.255.255.255(本地地址为0.0.0.0)或者一个子网广播地址的UDP包
DHCP提供(OFFER) 当DHCP服务器收到一个来自客户的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络单播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP DHCP服务器通过地址池保存可供分配的IP地址和其他配置信息。当DHCP服务器接收到DHCP请求报文后,将从IP地址池中取得空闲的IP地址及其他的参数,发送给DHCP客户端
DHCP服务器为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。DHCP服务器通过发送ICMP Echo Request(ping)报文对分配的IP进行探测。如果在规定的时间内没有应答,那么服务器就会再次发送ping报文。到达规定的次数后,如果仍没有应答,则所分配的IP地址可用。否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配
DHCP请求(REQUEST) 如果有多台DHCP服务器向DHCP客户端回应DHCP-OFFER报文,则DHCP客户端只接受第一个收到的DHCP-OFFER报文。然后以广播方式发送DHCP-REQUEST请求报文,该报文中包含Option 54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。以广播方式发送DHCP-REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option 54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址
DHCP确认(Acknowledge,ACK) 收到DHCP客户端发送的DHCP-REQUEST请求报文后,DHCP服务器根据DHCP-REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则发送DHCP-ACK报文作为应答,通知DHCP客户端可以使用分配的IP地址。 DHCP客户端收到DHCP服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-DECLINE报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。 如果DHCP服务器收到DHCP-REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP-DISCOVER报文来请求新的IP地址
DHCP释放(RELEASE) 客户端向DHCP服务器发送一个请求以释放DHCP资源,并注销其IP地址
DHCP NAK 服务器回复客户,客户要求的网址不能被分配
三、报文解析
第二行为链路层头,第三行为IP头层,第四行为UDP头层,第五行为DHCP报文data
RELEASE DISCOVER OFFER REQUEST ACK 通过wireshark来抓取dhcp协议报文分析其原理,参考博文:https://www.cnblogs.com/Wendy-r/p/12679241.html
|