LOnils风迷 's Blog

hacking for fun

0x06 DHCP协议分析

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。


6.1 DHCP头

  

  • 操作代码OP :若是client送给server的封包,设为1,反向为2。

  • 硬件类别Htype:ethernet为1。

  • 硬件长度Hlen:ethernet为6。

  • 跳数Hops:若数据包需经过router传送,每站加1,若在同一网内,为0。

  • 事务ID Transaction ID:是个随机数,用于客户和服务器之间匹配请求和相应消息。

  • 时间 Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间。

  • 标志 Flags:从0-15bits,最左一bit为1时表示server将以广播方式传送封包给 client,其余尚未使用。

  • Ciaddr(client ip address):客户端的IP地址。

  • Yiaddr(Your ip address):DHCP服务器提供的IP地址。

  • Siaddr(Server ip address):DHCP服务器的IP地址。

  • Giaddr(Gateway ip address):网关的IP地址。

  • Chaddr (Client ip address):client的硬件地址。

  • Sname:可选server的名称,以0x00结尾。

  • File:启动文件名。

  • Options:厂商标识,可选的参数字段

 

2.2 IP地址的租用

    DHCP的续租使用4种类型的DHCP数据包:发现(Discover)、提供(Offer)、请求(Request)、确认(Acknowledgement)。

    第一种发现数据包就是主机用来发现DHCP服务器的请求包,之后DHCP服务器给主机一个offer,表明我就是主机所需要的DHCP服务器,之后主机向其请求ip地址,之后服务器将其分配的IP送给主机。(具体细节请看下面)


    2.2.1发现(Discover)

可以发现souree IP 为0.0.0.0,说明主机还未获取IP地址,之后广播,寻找DHCP服务器,所以称为发现(发现DCHP服务器)。



在传输层上标注了其发送端口为68、目的端口未67,且为UDP。


展开主要的四个域都能得到很多信息。

第三个Option域中的ip地址为上一次DHCP获取的地址。

    

    2.2.2 提供(Offer)


    我们可以看见其transaction id和 发现DHCP包的 transaction id相同,用于确认。另外2个类型的数据包(请求和确认)中的transaction id也是一样的。

    其中Your IP address域中的IP地址就是要提供给客服端的ip地址。


    2.2.3 请求(Request)

此时我们发送方的ip地址仍为0.0.0.0,因为DHCP过程还未完全结束。

 

    2.2.4 确认(Acknowledgement)

最后一步将其ip地址传给客服端。



评论
热度(2)