|
|
|
|
公众号矩阵

我们一起谈谈DHCP协议

DHCP(DynamicHost ConfigurationProtocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

作者: Firefly 来源: 知晓编程|2021-01-12 05:08

 

01DHCP协议简介

DHCP(DynamicHost ConfigurationProtocol),动态主机配置协议,是一个应用层协议,具体可以参考《TCP/IP四层模型》文章。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

DHCP的几个概念:

DHCPClient:DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。

DHCPServer:DHCP服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。

DHCPRelay:DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能。

DHCPSecurity:DHCP安全特性,实现合法用户IP地址表的管理功能。

DHCPSnooping:DHCP监听,记录通过二层设备申请到IP地址的用户信息。

02DHCP工作原理

DHCP使用UDP协议工作,采用67(DHCP服务器端)和68(DHCP客户端)两个端口号。546号端口用于DHCPv6Client,而不用于DHCPv4,是为DHCPfailover服务。DHCP客户端向DHCP服务器发送的报文称之为DHCP请求报文,而DHCP服务器向DHCP客户端发送的报文称之为DHCP应答报文。

DHCP交互过程共分为4步

第一步

Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCPServer。

第二步

可用的DHCPServer接收到Discover包之后,通过发送DHCPOffer包给予Client端应答,意在告诉Client端它可以提供IP地址。

第三步

Client端接收到Offer包之后,发送DHCPRequest包请求分配IP。

第四步

DHCPServer发送ACK数据包,确认信息。

03Wireshark抓包分析

要想抓取到DHCP包,先要保证有可用的DHCP服务器,然后将主机IP地址获取方式设置为自动获取。我们的测试环境是,笔记本设置为DHCP模式,路由开启DHCP服务。由于笔记本在开机时想路由DHCP去获取IP,开机时无法迅速打开wireshark软件进行抓包,我们使用以下命令先断开主机的网络连接,然后再连接网络。

  1. ipconfig /release 
  2. ipconfig /renew 

在cmd中可以使用ipconfig/?查看各参数的含义:

命令详解:

(1)ipconfig /release

断开当前的网络连接,主机IP变为0.0.0.0,主机与网络断开,不能访问网络。

(2)ipconfig /renew

更新适配器信息,请求连接网络,这条命令结束之后,主机会获得一个可用的IP,再次接入网络。

抓取的数据包如下,注意使用dhcp过滤条件。

wireshark抓包文件

链接:https://pan.baidu.com/s/1RzvISOkzkVoWOzJDRi5NwQ

提取码:lpg9

(提示:公众号不支持外链接,请复制链接到浏览器下载)

可以清楚看到DHCP的四个步骤。

DHCP Discover数据包

在Discover阶段,可以看出客户端发出的是广播复制,MAC地址广播相关内容请看《802.3以太网帧》,IP地址广播相关内容请看《IP协议详解》。从下图也可以看出DHCP是基于UDP协议的,采用67(DHCP服务器端)和68(DHCP客户端)两个端口号,这个上文讲过了,在抓包文件中证实了。DHCP报文格式基于BOOTP的报文格式,DHCP具体的报文格式并不是本文重点,本文并不会详细讲解DHCP报文中每个字节的含义。

DHCP Offer包

当DHCP服务器收到一条DHCPDiscover数据包时,用一个DHCPOfferr包给予客户端响应。 这一数据报中客户客户端获取到了最重要的IP地址信息。除此之外,服务器还发送了子网掩码,路由器,DNS,域名,IP地址租用期等信息。

DHCP服务器仍然使用广播地址作为目的地址,因为此时请求分配IP的Client并没有自己ip,而可能有多个Client在使用0.0.0.0这个IP作为源IP向DHCP服务器发出IP分配请求,DHCP也不能使用0.0.0.0这个IP作为目的IP地址,于是依然采用广播的方式,告诉正在请求的Client们,这是一台可以使用的DHCP服务器。

DHCP Request包

当Client收到了DHCPOffer包以后(如果有多个可用的DHCP服务器,那么可能会收到多个DHCPOffer包),确认有可以和它交互的DHCP服务器存在,于是Client发送Request数据包,请求分配IP。

此时的源IP和目的IP依然是0.0.0.0和255.255.255.255。

DHCP ACK包

服务器用DHCPACK包对DHCP请求进行响应。

04DHCP缺点

DHCP可以很好的进行IP地址的分配,但是DHCP协议已存在一些缺点,如:

1、DHCP协议不支持跨网段进行地址分配

2、DHCP协议不能获取非DHCP客户端的IP地址,在地址池设置不合理的情况下可能会造成地址冲突。

基于上述的缺陷,我们需要合理对IP地址池进行设置,并预留一些IP地址,分配给需要固定IP的服务器。

本文转载自微信公众号「 知晓编程」,可以通过以下二维码关注。转载本文请联系 知晓编程公众号。

【编辑推荐】

  1. 企业实战:DHCP和DNS 你所不知道的故事
  2. 为什么物联网协议是智能家居的基础
  3. 来说说 Vrrp 协议?
  4. 【干货!不讲PPT系列】Multicast组播技术很简单!PIM、IGMP组播协议!实践出真知
  5. 系统设计基础 长轮询、WebSocket、服务器发送事件(SSEs)协议
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

1人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

30人订阅学习

数据中心和VPDN网络建设案例

数据中心和VPDN网络建设案例

漫画+案例
共20章 | 捷哥CCIE

209人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微