熟悉网络通信的都应该知道,想要在入网,那么就需要一个IP地址,那么,IP地址是怎么获取的呢?那就是DHCP协议,全称Dynamic Host Configuration Protocol,动态主机配置协议。当配置动态IP时,DHCP服务器会根据DHCP协议,给DHCP客户端配置IP,接下来就详细讲解,DHCP协议交互内容。
获取IP,主要分为四步,discover、offer、request、ack,体现报文的话就是四个报文,结合wireshark抓取的报文,详细分析一下四步。
DHCP Discover
第一步,DHCP客户端会主动广播Discover包,作用是寻找当前网络中的DHCP服务器。
结合报文可以看到,当前源IP地址为0,目标IP为255.255.255.255的广播地址,广播的本地端口为68,目标端口为67。
DHCP Offer
当具有DHCP服务器的对端收到client发的Discover包之后,然后会看一下自己的IP地址池是否已满,如果还有空余,会挑选一个IP地址封装成DHCP Offer包发过去,表示客户端可以使用这个IP。具体报文如图:
同样通过报文可以看到,DHCP Offer包也是广播包,提供了一个新的IP地址。
DHCP Request
如果当前有很多DHCP服务器,那边客户端在发送第一包之后,会有很多的Offer包发过来,那么需要选择一个使用,所以第三包是客户端的DHCP Request包。告知DHCP服务器决定使用你给的IP,当然,收到DHCP Request包,发现不是使用自己给的IP的DHCP服务器,会回收自己分配的IP。报文如下:
该报文的会带着即将使用的IP地址,告知DHCP服务器,你分配的IP被选中了,开始使用了。
DHCP ACK
最后一包,DHCP服务器收到客户端的确认包之后,会回一个ACK,告知客户端,我知道我分配的IP被你选中了,那么开始使用吧,宣告整个流程结束。报文如下:
总结
以上就是获取IP的简单流程,当然,DHCP协议不止于此,包括IP地址会有一个租期的概念,如何维护IP地址的回收和重新分配还有更多的协议内容。这里不做赘述,有兴趣可以评论交流。
通过以上流程的整理,这里想分享两个通过漏洞的DHCP攻击,第一种就是模拟客户端,疯狂发送DHCP请求,导致服务器IP资源耗尽;第二种就是相反,通过模拟DHCP服务器,欺骗客户端连接。
另:有一个疑问,如果同一网段,有不同的DHCP服务器,那么客户端是不是有可能会选中自己本不想选的DHCP服务器呢?