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地址传给客服端。