DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)
是一个局域网的网络协议,主要用于给内部网络和网络服务供应商自动分配IP地址。
DHCP使用UDP协议,有两个熟知端口:DHCP服务器为67,DHCP客户端为68。
DHCP分配IP地址的方式有:自动分配、动态分配和手工配置。前两种都是由DHCP服务器给客户端分配,自动分配的是永久性的IP地址,动态分配的IP地址过一段时间过期或能被客户端主动释放。手工配置由用户手动为客户端指定IP地址。
报文类型-----八种
- discover报文-----发现报文,用来发现网络中的DHCP服务器
- offer报文--------由服务器进行回复,当收到discover报文后,并且服务器本地存在可用IP地址,则回复信息
- request报文------正式向服务器请求IP地址
- ack报文----------服务器同意使用该IP地址
- decline报文------当客户端检测到IP地址冲突时,发送给服务器,用以告知服务器,IP不可用
- nak报文----服务器拒绝客户端使用该IP地址----一般看不到
- release报文-----客户端主动释放IP地址。
- inform报文-------从服务器获得其他的一些网络配置信息,比如网关地址、DNS 服务器地址等。
其中discover报文,offer报文,request报文,ack报文这四种较为常见,decline报文和nak报文有时候也会用到
DHCP工作过程分为4个阶段:
1)发现阶段(DHCP Discover),DHCP客户端以广播的形式寻找DHCP服务器
2)提供阶段(DHCP Offer),接收到DHCP Discover的服务器都会响应,DHCP服务器从未出租的IP地址中挑选一个给客户端,发送DHCP Offer包
3)选择阶段(DHCP Request),DHCP客户端选择第一个收到的DHCP Offer包信息来接收,以广播方式回答一个DHCP Request请求信息
4)确认阶段(DHCP Ack),被选择的DHCP服务器确认所提供的IP地址,发送DHCP Ack,未被选择的服务器回收曾提供的IP地址。
1)需要IP的客户端,广播一条发现报文( DHCP Discover )。
2)所有DHCP服务器都会收到发现报文,并向客户端发送一个响应报文( DHCP Offer ),响应报文中携带服务器自己的IP和可以分配给客户端的IP;
3)客户端收到第一个响应后,会广播一个请求报文( DHCP Request ),并将响应报文中的服务器IP和可以分配的IP放到报文里。
4)所有DHCP服务器都会收到请求报文,并判断报文里的服务器IP是不是自己:如果不是自己,就收回刚才分配的IP;如果是自己,就向客户端发送一个确认响应报文( DHCP ACK ),并在报文里提供IP地址的租期。
5)客户端收到响应报文后,检查分配的IP是否可用:如果可用,就使用IP;如果不可用,比如IP已经被别人使用,就向DHCP服务器发送拒绝报文,通知服务器禁用这个IP,让后重新申请IP(回到第一步)。
6)客户端可以随时发送释放报文( DHCP Release),释放IP地址,服务器收到释放报文后,会回收IP地址并重新分配。
DHCP数据包捕获方法:重启网卡。
IP地址租期----当PC申请下来IP地址后,会存在租期时间。在这段时间内能够合理使用该IP地址
租期时间---24小时 当租期时间到达12小时,客户端就需要向服务器发起续租申请。当第一次续租得到回复后,则客户端将租期时间刷新为24小时;若没有回复,则等待租期时间仅剩下3小时。 此时使用discover报文广播发送第二次续租申请。