1、 DHCP 协议解码详解成都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 1 / 7协议分析 DHCP 协议解码详解一、 DHCP 协议简介DHCP,全称是 Dynamic Host Configuration Protocol中文名为动态主机配置协议,它的前身是 BOOTP,它工作在 OSI 的应用层,是一种帮助计算机从指定的 DHCP 服务器获取它们的配置信息的自举协议。DHCP 使用客户端/ 服务器模式,请求配置信息的计算机叫做 DHCP 客户端,而提供信息的叫做 DHCP 的服务器。DHCP 为客户端分配地址的方法有三种:手
2、工配置、自动配置、动态配置。DHCP 最重要的功能就是动态分配。除了 IP 地址,DHCP 分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。1. DHCP 的工作流程发现阶段,即 DHCP 客户机寻找 DHCP 服务器的阶段。DHCP 客户机以广播方式(因为DHCP 服务器的 IP 地址对于客户机来说是未知的)发送 DHCP discover 发现信息来寻找DHCP 服务器,即向地址 255.255.255.255 发送特定的广播信息。网络上每一台安装了TCP/IP 协议的主机都会接收到这种广播信息,但只有 DHCP 服务器才会做出响应。提供阶段,
3、即 DHCP 服务器提供 IP 地址的阶段。在网络中接收到 DHCP discover 发现信息的 DHCP 服务器都会做出响应,它从尚未出租的 IP 地址中挑选一个分配给 DHCP 客户机,向 DHCP 客户机发送一个包含出租的 IP 地址和其他设置的 DHCP offer 提供信息。选择阶段,即 DHCP 客户机选择某台 DHCP 服务器提供的 IP 地址的阶段。如果有多台DHCP 服务器向 DHCP 客户机发来的 DHCP offer 提供信息,则 DHCP 客户机只接受第一个收到的 DHCP offer 提供信息,然后它就以广播方式回答一个 DHCP request 请求信息,该信息中
4、包含向它所选定的 DHCP 服务器请求 IP 地址的内容。之所以要以广播方式回答,是为了通知所有的 DHCP 服务器,他将选择某台 DHCP 服务器所提供的 IP 地址。确认阶段,即 DHCP 服务器确认所提供的 IP 地址的阶段。当 DHCP 服务器收到 DHCP 客户机回答的 DHCP request 请求信息之后,它便向 DHCP 客户机发送一个包含它所提供的 IP 地址和其他设置的 DHCP ACK 确认信息,告诉 DHCP 客户机可以使用它所提供的IP 地址。然后 DHCP 客户机便将其 TCP/IP 协议与网卡绑定,另外,除 DHCP 客户机选中的服务器外,其他的 DHCP 服务器
5、都将收回曾提供的 IP 地址。DHCP 协议解码详解成都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 2 / 7重新登录,以后 DHCP 客户机每次重新登录网络时,就不需要再发送 DHCP discover 发现信息了,而是直接发送包含前一次所分配的 IP 地址的 DHCP request 请求信息。当DHCP 服务器收到这一信息后,它会尝试让 DHCP 客户机继续使用原来的 IP 地址,并回答一个 DHCP ACK 确认信息。如果此 IP 地址已无法再分配给原来的 DHCP 客户机使用时(比如此 IP 地址已分配给其它 DHCP
6、客户机使用) ,则 DHCP 服务器给 DHCP 客户机回答一个 DHCP NACK 否认信息。当原来的 DHCP 客户机收到此 DHCP NACK 否认信息后,它就必须重新发送 DHCP discover 发现信息来请求新的 IP 地址。更新租约,DHCP 服务器向 DHCP 客户机出租的 IP 地址一般都有一个租借期限,期满后DHCP 服务器便会收回出租的 IP 地址。如果 DHCP 客户机要延长其 IP 租约,则必须更新其 IP 租约。DHCP 客户机启动时和 IP 租约期限过一半时,DHCP 客户机都会自动向DHCP 服务器发送更新其 IP 租约的信息。2. DHCP 的报文格式我们来
7、介绍一下 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 的 报文格式) OP:若是 client 送给 server 的封包,设为 1,反向为 2; Htype:硬件类别,ethernet 为 1; Hlen:硬件长度, ethernet 为 6; Hops:若数据包需经过 router 传送,每站
8、加 1,若在同一网内,为 0; Transaction ID:事务 ID,是个随机数,用于客户和服务器之间匹配请求和相应消息; Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间; Flags:从 0-15bits,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 DHCP 协议解码详解成都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 3 / 7client,其余尚未使用; Ciaddr:用户 IP 地址; Yiaddr:客户 IP 地址; Siaddr:用于 bootstrap 过程中的 IP
9、地址; Giaddr:转发代理(网关)IP 地址; Chaddr:client 的硬件地址; Sname:可选 server 的名称,以 0x00 结尾; File:启动文件名; Options:,厂商标识,可选的参数字段二、 解码信息通过 DHCP 的 工作流程,我们知道从 DHCP 服务器获取配置信息的 4 个阶段中,DHCP客户端会出现有 4 种报文(DHCPDISCOVERY,DHCPOFFER,DHCPREQUEST,DHCPACK) 。我们分别来看看 4 报文的解码内容:1. 发现阶段使用科来网络分析系统捕获 DHCP DISCOVERY 数据包,如图 2,DHCP 协议解码详解成
10、都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 4 / 7(图 2 DHCP DISCOVERY 数据包解码)由图 2 可以看到 DHCP DISCOVERY 包的解码信息,由于 DHCP 是 BOOTP 的以个扩展,DHCP 兼容 BOOTP,我们可以看到 BOOTP 和 DHCP 的解码。2. 提供阶段使用科来网络分析系统捕获 DHCP OFFER 数据包,如图 3,DHCP 协议解码详解成都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 5 / 7(图 3 DHCP
11、OFFER 数据包解码)3. 选择阶段使用科来网络分析系统捕获 DHCP REQUEST 数据包,如图 4,DHCP 协议解码详解成都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 6 / 7(图 4 DHCP REQUEST 数据包解码 )4. 确认阶段使用科来网络分析系统捕获 DHCP ACK 数据包,如图 5,DHCP 协议解码详解成都科来软件有限公司 电话:028-85120922 Email:http:/ 传真:028-85120911 7 / 7(图 5 DHCP ACK 数据包解码)以上为 DHCP 工作的 4 种数据包,每种数据包都是有区别的。成都科来软件有限公司2006 年 6 月