【原理总结】DHCP数据包分析

协议分析 DHCP协议解码详解

DHCP协议简介】

 
      DHCP ,全称是  Dynamic Host Configuration Protocol �o中文名为动态主机配置协议,它的前身是  BOOTP ,它工作在 OSI 的应用层,是一种帮助计算机从指定的 DHCP 服务器获取它们的配置信息的自举协议。
        DHCP 使用客户端 / 服务器模式,请求配置信息的计算机叫做 DHCP 客户端,而提供信息的叫做 DHCP 的服务器。 DHCP 为客户端分配地址的方法有三种:手工配置、自动配置、动态配置。
        DHCP 最重要的功能就是动态分配。除了 IP 地址, DHCP 分组还为客户端提供其他的配置信息,比如子网掩码。这使得客户端无需用户动手就能自动配置连接网络。
 

DHCP的工作流程】

    
       发现阶段,即 DHCP 客户机寻找 DHCP 服务器的阶段。 DHCP 客户机以广播方式(因为 DHCP 服务器的 IP 地址对于客户机来说是未知的)发送 DHCP discover 发现信息来寻找 DHCP 服务器,即向地址 255.255.255.255 发送特定的广播信息。网络上每一台安装了 TCP/IP 协议的主机都会接收到这种广播信息,但只有 DHCP 服务器才会做出响应。
 
        提供阶段,即 DHCP 服务器提供 IP 地址的阶段。在网络中接收到 DHCP discover 发现信息的 DHCP 服务器都会做出响应,它从尚未出租的 IP 地址中挑选一个分配给 DHCP 客户机,向 DHCP 客户机发送一个包含出租的 IP 地址和其他设置的 DHCP offer 提供信息。
 
       选择阶段,即 DHCP 客户机选择某台 DHCP 服务器提供的 IP 地址的阶段。如果有多台 DHCP 服务器向 DHCP 客户机发来的 DHCP offer 提供信息,则 DHCP 客户机只接受第一个收到的 DHCP offer 提供信息,然后它就以广播方式回答一个 DHCP request 请求信息,该信息中包含向它所选定的 DHCP 服务器请求 IP 地址的内容。之所以要以广播方式回答,是为了通知所有的 DHCP 服务器,他将选择某台 DHCP 服务器所提供的 IP 地址。
 
       确认阶段,即 DHCP 服务器确认所提供的 IP 地址的阶段。当 DHCP 服务器收到 DHCP 客户机回答的 DHCP request 请求信息之后,它便向 DHCP 客户机发送一个包含它所提供的 IP 地址和其他设置的 DHCP ACK 确认信息,告诉 DHCP 客户机可以使用它所提供的 IP 地址。然后 DHCP 客户机便将其 TCP/IP 协议与网卡绑定,另外,除 DHCP 客户机选中的服务器外,其他的 DHCP 服务器都将收回曾提供的 IP 地址。
 
       重新登录,以后 DHCP 客户机每次重新登录网络时,就不需要再发送 DHCP discover 发现信息了,而是直接发送包含前一次所分配的 IP 地址的 DHCP request 请求信息。当 DHCP 服务器收到这一信息后,它会尝试让 DHCP 客户机继续使用原来的 IP 地址,并回答一个 DHCP ACK 确认信息。如果此 IP 地址已无法再分配给原来的 DHCP 客户机使用时(比如此 IP 地址已分配给其它 DHCP 客户机使用),则 DHCP 服务器给 DHCP 客户机回答一个 DHCP NACK 否认信息。当原来的 DHCP 客户机收到此 DHCP NACK 否认信息后,它就必须重新发送 DHCP discover 发现信息来请求新的 IP 地址。
 
      更新租约, DHCP 服务器向 DHCP 客户机出租的 IP 地址一般都有一个租借期限,期满后 DHCP 服务器便会收回出租的 IP 地址。如果 DHCP 客户机要延长其 IP 租约,则必须更新其 IP 租约。 DHCP 客户机启动时和 IP 租约期限过一半时, DHCP 客户机都会自动向 DHCP 服务器发送更新其 IP 租约的信息。

DHCP的报文格式】

 

我们来介绍一下 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 传送,每站加 1 ,若在同一网内,为 0
Transaction ID :事务 ID ,是个随机数,用于客户和服务器之间匹配请求和相应消息;
Seconds :由用户指定的时间,指开始地址获取和更新进行后的时间;
Flags :从 0-15bits ,最左一 bit 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用;
Ciaddr :用户 IP 地址;
Yiaddr :服务器分配给客户的 IP 地址;
Siaddr :用于 bootstrap 过程中的 IP 地址;(服务器的 IP 地址)
Giaddr :转发代理(网关) IP 地址;
Chaddr client 的硬件地址;
Sname :可选 server 的名称,以 0x00 结尾;
File :启动文件名;
Options :,厂商标识,可选的参数字段
 
 

【抓包分析】

此次用的软件是: wireshark (在宿舍内)

1.发现阶段:

2.提供阶段:

3.选择阶段

4.确认阶段:

【总结】

 

 

        环境分析:根据上述内容,我的 pc 获取到 ip 地址是有经过代理的。而且是只经过一个路由器代理,即是网关。
实验说明:此次实验仅分析 pc 到网关这个广播域的包走向过程,网关和 dhcp 服务器之间这里没做分析。
此时实验让自己更加理解了 dhcp 的获取过程,还熟悉了抓包软件的使用。

 

 

你可能感兴趣的:(网络,wireshark,广播,DHCP,单播)