dhcp,全称是 dynamic host configuration protocol﹐中文名为动态主机配置协议,它的前身是 bootp,它工作在osi的应用层,是一种帮助计算机从指定的dhcp服务器获取它们的配置信息的自举协议。
dhcp使用客户端/服务器模式,请求配置信息的计算机叫做dhcp客户端,而提供信息的叫做dhcp的服务器。dhcp为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。
dhcp最重要的功能就是动态分配。除了ip地址,dhcp分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。
发现阶段,即dhcp客户机寻找dhcp服务器的阶段。dhcp客户机以广播方式(因为dhcp服务器的ip地址对于客户机来说是未知的)发送dhcp discover发现信息来寻找dhcp服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了tcp/ip协议的主机都会接收到这种广播信息,但只有dhcp服务器才会做出响应。
提供阶段,即dhcp服务器提供ip地址的阶段。在网络中接收到dhcp discover发现信息的dhcp服务器都会做出响应,它从尚未出租的ip地址中挑选一个分配给dhcp客户机,向dhcp客户机发送一个包含出租的ip地址和其他设置的dhcp offer提供信息。
选择阶段,即dhcp客户机选择某台dhcp服务器提供的ip地址的阶段。如果有多台dhcp服务器向dhcp客户机发来的dhcp offer提供信息,则dhcp客户机只接受第一个收到的dhcp offer提供信息,然后它就以广播方式回答一个dhcp request请求信息,该信息中包含向它所选定的dhcp服务器请求ip地址的内容。之所以要以广播方式回答,是为了通知所有的dhcp服务器,他将选择某台dhcp服务器所提供的ip地址。
确认阶段,即dhcp服务器确认所提供的ip地址的阶段。当dhcp服务器收到dhcp客户机回答的dhcp request请求信息之后,它便向dhcp客户机发送一个包含它所提供的ip地址和其他设置的dhcp ack确认信息,告诉dhcp客户机可以使用它所提供的ip地址。然后dhcp客户机便将其tcp/ip协议与网卡绑定,另外,除dhcp客户机选中的服务器外,其他的dhcp服务器都将收回曾提供的ip地址。
重新登录,以后dhcp客户机每次重新登录网络时,就不需要再发送dhcp discover发现信息了,而是直接发送包含前一次所分配的ip地址的dhcp request请求信息。当dhcp服务器收到这一信息后,它会尝试让dhcp客户机继续使用原来的ip地址,并回答一个dhcp ack确认信息。如果此ip地址已无法再分配给原来的dhcp客户机使用时(比如此ip地址已分配给其它dhcp客户机使用),则dhcp服务器给dhcp客户机回答一个dhcp nack否认信息。当原来的dhcp客户机收到此dhcp nack否认信息后,它就必须重新发送dhcp discover发现信息来请求新的ip地址。
更新租约,dhcp服务器向dhcp客户机出租的ip地址一般都有一个租借期限,期满后dhcp服务器便会收回出租的ip地址。如果dhcp客户机要延长其ip租约,则必须更新其ip租约。dhcp客户机启动时和ip租约期限过一半时,dhcp客户机都会自动向dhcp服务器发送更新其ip租约的信息。
我们来介绍一下dhcp的报文格式,如图1,
op(1) | htype(1) | hlen(1) | hops(1) |
transaction id(4) | |||
seconds(2) | flags(2) | ||
ciaddr(4) | |||
yiaddr(4) | |||
siaddr(4) | |||
giaddr(4) | |||
chaddr(16) | |||
sname(64) | |||
file(128) | |||
options(variable) |
图1 dhcp的 报文格式
通过dhcp的 工作流程,我们知道从dhcp服务器获取配置信息的4个阶段中,dhcp客户端会出现有4种报文(dhcpdiscovery,dhcpoffer,dhcprequest,dhcpack)。我们分别来看看4报文的解码内容:
使用科来网络分析系统捕获dhcp discovery 数据包,如图2,
图2 dhcp discovery数据包解码
由图2可以看到dhcp discovery包的解码信息,由于dhcp是bootp的以个扩展,,dhcp兼容bootp,我们可以看到bootp和dhcp的解码。
使用科来网络分析系统捕获dhcp offer数据包,如图3,
图3 dhcp offer数据包解码
使用科来网络分析系统捕获dhcp request数据包,如图4,
图4 dhcp request数据包解码
使用科来网络分析系统捕获dhcp ack数据包,如图5,
图5 dhcp ack数据包解码
以上为dhcp工作的4种数据包,每种数据包都是有区别的。