理解并取证:DHCP的工作原理、怎么检测IP地址冲突

简介:

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)被设计用于动态的为网络中的主机分配IP地址及其它相关的TCP/IP属性,它属于客户/服务模式的应用程序,使用UDP协议号67(服务端)和68(客户端)工作。它代替了网络管理员手工为网络中的计算机配置IP地址及其它TCP/IP属性的工作,如果网络中的计算机数量较大,使用人工静态配置IP地址容易造成配置错误,比如:把一个IP地址配置到两台不同的计算机,当配置量过大时,这种失误是很有可能的,造成过大的管理成本开销,所以,在中大型网络中通常都使用DHCP为计算机自动配置IP地址及其它相关的TCP/IP属性,本小节将以描述DHCP的工作原理与演示DHCP在思科路由器上的配置为重点。


理解DHCP的雏形BOOTP(Bootstrap Protocol):

DHCP的前生是BOOTP(Bootstrap Protocol),要理解DHCP,不得不说明一下这个BOOTP(Bootstrap Protocol),它比DHCP出现得更早,与DHCP提供类似的服务,用于网络早期的无盘工作站,这个无盘工作站在现今的网络应用中基本上已经退出应用市场了,如果还能看到它影子,那就是超市和商场所用的收银机。BOOTP的功能就是为这些无盘终端自动的分配IP地址、子网掩码、默认网关、DNS地址。


DHCP的为什么要替代BOOTP;它们的区别在哪里?

由于DHCP的出现,BOOTP逐渐被DHCP所替代,因为DHCP有更完善、更安全的工作机制、能够提供更灵活的IP地址分配方式、能够为客户机自动配置更多的TCP/IP参数,如果更具体的讲就是:BOOTP在分配IP地址时,IP地址和请求主机的MAC必须被预置到BOOTP服务器上,如果BOOTP客户端发来的IP地址请求消息中,请求主机的源MAC地址在BOOTP服务器上有记录,并对应了一个IP,那么,BOOTP服务器将对应的IP发放给BOOTP的客户端,如果没有对应记录的存在,请求会话将失败,这是BOOTP缺泛灵活性的一种典型代表;另外DHCP支持发放IP地址的“租约”机制,但是BOOTP不支持,关于“租约”机制,后面会有详细的描述;BOOTP只能最多分配4个网络参数,分别是IP地址、子网掩码、默认网关、DNS地址,DHCP可以提供更多的TCP/IP属性的自动配置。


理解DHCP的工作原理与每个过程的数据帧取证:

现在来理解DHCP的工作原理并取证每个工作过程的数据帧,如下图 9.12所示为DHCP的工作过程,这四个过程,基本上是现今网络领域公认的四大过程,但事实上,DHCP的工作原理在这四个公认的过程中还有一些小插曲,关于这一点,取证了如下图9.13所示的DHCP完整工作过程的数据帧,所以现在拟订一个清晰的学习思路:

理解DHCP四个工作步骤,并分析每个工作步骤的数据帧。

理解为什么在这四个工作步骤中会携带两个ARP请求消息,并分析这两个ARP请求消息。

第一步:DHCP客户端向本地子网发送一个DHCPDiscover消息,该消息是以广播的形式被发送到网络上,源MAC地址是发送源主机的MAC地址,源IP地址是 0.0.0 .0,因为此时的客户机还没有被DHCP动态的配置IP地址,目标MAC地址是广播MACFFFF.FFFF.FFFF),目标IP地址是广播IP255.255.255.255,为什么该消息会是广播,因为客户端现在根本就不知道网络上谁是DHCP服务器,关于DHCP客户端发送的DHCP Discover消息的数据帧如下 9.14所示。

图9.14 DHCP的在Discover数据帧

在执行DHCP第二步Offer消息前的小插曲:当收到客户端发来的Discover消息的DHCP服务器会立即查寻自己可对外提供IP地址的地址池,提供一个可以分配给DHCP客端的机会IP,比如192.168.2.5;注意:此时并不是立即将这个地址分配出去,这只是一个可供分配的机会IP,DHCP服务器会以自己的MAC作为源MAC,自己的IP作为源目标,向网络中发送一个目标IP地址为192.168.2.5(事实上,就是那个机会IP)的ARP请求,目的在于:确认这个它(DHCP服务器)认为可以分配给某个客户端的IP地址,是否正在被别的主机使用,如果网络上有主机正在使用这个IP地址,可能是管理员人工输入的,该主机就会对这个ARP请求应答,这说明,192.168.2.5这个地址正在被使用,反之,没有应答,就表示DHCP可以将这个地址分配给某个DHCP的客户端,关于DHCP用于检测机会IP是否被其它主机使用的数据帧如图9.15所示。

第二步:DHCP服务器必须完在上述的小插曲后,方可确定机会IP地址可以提供给DHCP的客户端,这也是为什么在DHCP工作的四个步骤中会出现一个ARP消息的原因。此时DHCP向网络中发送一个Offer消息,为客户端提供IP地址。

注意:行业工程师一直在争论着一个问题:Offer消息到底是以单播的方式进行发送,还是以广播的方式进行发送,然后,在进行协议分析时,有时会出现广播消息的Offer数据帧;有时会出现单播消息的数据帧,这是怎么回事?


首先说明:DHCP服务器发送的Offer消息,即可以是单播形式,也可以是广播形式,这要分情况而定,如果将Offer消息单纯的定义为广播或是单播发送都是不严密的定义,事实上DHCP的Offer消息是广播还是单播,这取决于DHCP客户的具体情况,它可以从如下图图 9.16所示DHCP报文中的两个关键字段来做出定义,客户端IP地址(CIAddr)和标志(Flags)中的Broadcast flag来决定:

n如果Broadcast flag被转置位为1,则表示客户机不允许DHCP服务器的Offer消息以单播的方式回应,所以必须使用广播回应,在如下图 9.16所示的数据帧中Broadcastflag被转置位为0,所以DHCP服务器可以选择以单播的方式发送Offer消息。

n如果客户端IP地址(CIAddr)有一个明确的IP地址,这个已经存在的IP地址,可能是上次引导计算机时DHCP服务器提供的IP地址。那么,此时DHCP服务器的Offer消息将以单播的方式回应。

n如果Broadcast flag和客户端IP地址(CIAddr)都是0;此时,DHCP服务器既可以使用广播进行Offer消息发送,也可以使用上一步小插曲中的ARP记录进行单播发送,因为在小插曲中的机会地址检测说明网络上没有主机使用这个地址,所以,此时DHCP服务可以假定192.168.2.5这个IP地址可供请求主机使用,所以,可以使用单播的形式回送Offer消息给DHCP客户机,但事实上,请求主机此时还没有真正的获得这个IP。


第三步:当DHCP的客户机收到服务器发来的Offer消息后,它会以广播的形式发出一个DHCP的Request消息,正式向DHCP服务器申请IP地址,注意该消息并不是只发给提供机会IP的DHCP服务器,而是以广播的形式发送给网络中的所有DHCP服务器,因为一个网络上有可能存在多台DHCP服务器,现在DHCP客户端正是使用这个DHCP的Request广播向整个网络可能存在的所有DHCP服务器讲:“我现在准备申请192.168.2.1这台DHCP服务器所提供的192.168.2.5这个IP地址如下图 9.17所示,其它DHCP服务器,你们的好意心领了!”相当于是委婉的拒绝其它的DHCP服务器提供相应的IP地址,也就是说:如果网络上还有其它的DHCP服务器,它们收到这个Request广播后,拆开广播帧,发现该数据帧里面的DHCP服务器Identifier字段为192.168.2.1,就视作客户端对自己的拒绝。

第四步:当DHCP服务器收到客户端发来的Request消息后,提供IP地址的DHCP服务器会给DHCP客户端发送一个DHCP的ACK消息,目的在于告诉DHCP客户端分配的IP地址的“租期”生效;并且告之什么时间可以提交“续租请求”;以及什么时候被分配的IP地址将从客户机上解除绑定;如下图9.18所示,所谓IP地址的“租期”指示IP地址在客户机上存在的有效时间,思科的路由器一般“租期”为24小时(1天),“续租请求”指示当“租期”已经使用了一天的一半时间时即12小时的时候,DHCP客户端可以发送续订这个IP地址的请求,如果DHCP服务器有更多的地址供分配给其它主机,那么,DHCP服务器将答应客户端的“续租请求”,然后将“租期”时间重新复位到24小时,如果,此时DHCP服务器上的地址池很紧张,已经没有多余的IP地址可供分配给其它主机,那么,DHCP服务器将拒绝“租期”,但是,它暂时不会回收IP地址,直到解除绑定时间到期,它仍然没有多余的IP供分配,那么DHCP服务器将回收已经分配出去的IP地址。关于DHCP服务器发送ACK消息的类型,可以是单播,也可以是广播,这与第二步中的DHCP Offer消息一样,关键取决于DHCP的客户端的几个关键字段,在这里就不再重复描述。


当DHCP客户端完成IP地址申请后的一个小插曲:

当完成上述DHCP的四个工作过程后,得到IP地址的主机为了最终确保在网络中,没有其它主机正在使用分配给它的IP地址,DHCP客户端会向网络中发送一条IP地址冲突检测的ARP消息,如下图 9.19所示,源和目标IP地址都是自己的IP,源MAC地址为DHCP客户端的MAC地址,目标MAC全为0;这个ARP请求,将永远不希望得到回应,因为“自己请求解析自己,如果网络上没有一个相同的自己(冒牌货,实际上就是地址冲突)”那么,这个ARP请求永远不可能得到回应,如果主机回应了这个ARP请求,就表示网络上有两台主机正在使用相同的IP地址,此时,DHCP客户端会给DHCP服务器发送一个DHCP的Decline的消息,意思就是“DHCP服务器,我被你忽悠了!现在我不要你的IP地址”。





本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1270601,如需转载请自行联系原作者

相关文章
|
网络协议 Windows
网络协议与攻击模拟-11-DHCP协议原理
网络协议与攻击模拟-11-DHCP协议原理
77 0
|
11天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
36 2
|
13天前
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
38 4
|
23天前
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
【10月更文挑战第27天】计算机主机网关的作用类似于小区传达室的李大爷,负责将内部网络的请求转发到外部网络。当小区内的小不点想与外面的小明通话时,必须通过李大爷(网关)进行联系。网关不仅帮助内部设备与外部通信,还负责路由选择,确保数据包高效传输。此外,网关还参与路由表的维护和更新,确保网络路径的准确性。
45 2
|
3月前
|
网络协议
|
4月前
|
网络协议 Linux 开发工具
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
配置Linux固定IP地址,为什么要固定IP,因为他是通DHCP服务获取的,DHCP服务每次重启都会重新获取一次ip,VMware编辑中有一个虚拟网络编辑器
|
6月前
|
监控 负载均衡 网络协议
|
6月前
|
网络协议 Linux iOS开发
|
6月前
|
域名解析 网络协议 Linux
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍
|
6月前
|
网络协议 Linux Windows
DHCP服务器原理
DHCP服务器原理
86 0