DHCP 原理及抓包分析

DHCP(动态主机配置协议)用于动态管理IP地址,提供集中分配IP地址、网关、DNS等功能。本文详细介绍了DHCP的工作机制,包括作用、交互流程、报文类型和格式,以及中继代理的角色。通过Wireshark抓包展示了DHCP客户端和服务器之间的典型交互,帮助理解协议的实际操作。
摘要由CSDN通过智能技术生成

目录

1. DHCP 简介

1.1 DHCP 作用

1.2 DHCP 工作机制

2.  DHCP 交互流程

2.1 正常交互流程

2.2 租约

2.3 客户端状态机

2.4 参数配置

3.  DHCP 报文

3.1 报文类型

3.2 报文格式

3.3 抓包

4. DHCP 中继代理


1. DHCP 简介

1.1 DHCP 作用

DHCP(Dynamic Host Configurations Protocol),动态主机配置协议,前身是 BOOTP 协议,是一个局域网的网络协议,使用 UDP 协议工作。

DHCP 通常被用于局域网环境,主要作用是集中的管理、分配 IP 地址,使 Client 动态的获得IP地址、Gateway 地址、DNS 服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP 就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

DHCP 涉及客户端和服务端。在使用 DHCP 之前,必须要架设一台 DHCP 服务器(很多时候使用该网段的路由器充当 DHCP 服务器)。

DHCP 客户端一般来说是局域网中独立的 PC 主机。DHCP 客户端发出的DHCP DISCOVER 包是 DHCP 协议的开始。延续租期、发现、释放IP地址等大多数 DHCP 中的行为都是由 DHCP 客户端主动发起。

DHCP 服务器端,在路由器上体现的就是给 LAN 端动态分配IP的功能。DHCP SERVER 负责接收客户端的 DHCP 请求,管理 LAN 端所有的网络IP信息,DHCP 通过“租约”来实现动态分配IP的功能,实现IP 的时分复用,从而解决 IP 资源短缺的问题。

DHCP 服务器管理IP的方式有三种:

1)   人工配置(由管理员对每台具体的计算机指定一个地址)

2)   自动配置(服务器为第一次连接网络的计算机分配一个永久地址)

3)   动态配置(在一定的期限内将地址租给计算机,租期结束后客户必须续租或者停用该地址),路由器经常使用的是动态配置。

1.2 DHCP 工作机制

DHCP 维护了两个租约表:静态租约表及动态租约表。

静态租约表:对应一个静态租约存储文件, Server 运行时从文件中读取静态租约表。

动态租约表:对应一个周期存储文件, Server 周期性将租约表存进该文件,在程序开始时将会读取上次存放的租约表。(租约表记录了当前所有分配的租约,包括静态链接的)。

客户端发起请求,服务器读取客户端信息,并在租约表中进行检索找到相应的表项,再根据客户端的状态执行不同的回复。当收到客户端的首次请求时,DHCP 服务器先查找静态租约表;若存在请求的表项,返回这个客户的静态 IP 地址;否则,从 IP 地址池中选择可用的 IP 分配给客户,并添加信息到动态数据库中。此外,服务器将会周期性的刷新租约表写入文件存档,在这个过程中会顺便对动态租约表进行租期检查。 

2.  DHCP 交互流程

2.1 正常交互流程

DHCP 正常交互流程如图 1所示:

 

图 1 客户端服务器正常交互流程

      

1)   客户端请求 DHCP 服务器:发送 DHCP DISCOVER 包

当 DHCP 客户端第一次登录网络的时候(也就是客户端上没有任何IP地址数据时),它会通过 UDP 67 端口向网络上发出一个 DHCP DISCOVER 数据包(包中包含客户端的 MAC 地址和计算机名等信息)。因为客户端还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目标地址为 255.255.255.255,然后再附上 DHCP DISCOVER 的信息,向网络进行广播。

DHCP DISCOVER 的等待时间预设为 1 秒,也就是当客户端将第一个DHCP DISCOVER 封包送出去之后,在 1 秒之内没有得到回应的话,就会进行第二次 DHCP DISCOVER 广播。若一直没有得到回应,客户端会将这一广播包重新发送四次(以 2,4,8,16 秒为间隔,加上 1-1000 毫秒之间随机长度的时间)。如果都没有得到DHCP Server的回应,客户端会从 169.254.0.0/16 这个自动保留的私有 IP 地址中选用一个IP地址。并且每隔 5 分钟重新广播一次,如果收到某个服务器的响应,则继续IP租用过程。 

2)   服务端提供 IP 地址租用:发送 DHCP OFFER 包

当 DHCP Server 监听到客户端发出的 DHCP DISCOVER 广播包后,它会从那些还没有租出去的地址中,按照一定的规则选择一个空置 IP ,通过 UDP 68 端口发送 DHCP OFFER 广播包(包中包含IP地址、子网掩码、地址租期等信息)。DHCP Server 为此客户保留它提供的 IP 地址,从而不会为其他DHCP客户分配此IP地址。

静态租用:首先匹配 MAC 地址,看是否能在静态租约表中找到对应的项,若能找到就把 IP 分配给他。静态表中的IP不能被其他客户使用。 

动态租用:

a)   Server 试图分配给 Client 上次分配过的IP,在这之前检查这个 IP 是否正在使用

b)   DISCOVER 中含有 Request IP  时,检查该IP是否在地址池范围,是否正在使用,是否到期,是否是静态 IP,网络上是否已经存在

c)   DISCOVER 不含 Request IP,从地址池上寻找一个最小的可用 IP 分配

 3)   接受 IP 租约::发送 DHCP REQUEST 包

如果客户端收到网络上多台 DHC P服务器的响应,按照一定的规则挑选其中一个 DHCP OFFER (一般是最先到达的那个),并且会向网络发送一个 DHCP REQUEST 广播数据包(包中包含客户端的 MAC 地址、接受的租约中的IP地址、提供此租约的 DHCP 服务器地址等),告诉所有 DHCP Server 它将接受哪一台服务器提供的IP地址,其他的 DHCP 服务器撤销它们未被采用的 IP。 

4)   租约确认:ACK

当 DHCP Server 接收到客户端的 DHCP REQUEST 之后,会广播返回给客户端一个 DHCP ACK 消息包,表明已经接受客户端的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户端。

客户端在

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值