dhcp协议_你知道你的电脑IP地址是如何获取的吗?一文带你搞懂DHCP动态主机配置协议...

7158333eb227a59de169e50a7b012291.gif

前言

前面介绍了应用层的DNS协议 你知道上网时输入的URL是怎么解析成IP地址的吗?一文带你搞懂DNS,我们知道了DNS可以将域名映射成IP地址。

今天给大家介绍下应用层另一个协议——动态主机配置协议DHCP

我们的PC在和网络中的其他终端通信时需要获取一个IP地址,这个IP地址可以手动配置,也可以通过DHCP协议动态获取今天就来看下我们的PC是如何动态获取到IP地址的?

正文

1 为什么需要DHCP动态分配IP地址? DHCP和手动配置IP的优缺点?

手动配置IP地址

操作简单,但是在局域网容易造成IP地址冲突,如果终端数量较多需要一台台配置,工作量大。

使用DHCP动态分配IP地址:

可以减少管理员的工作量,避免用户手工配置网络参数时造成的地址冲突。

2 什么是DHCP协议

DHCP(动态主机配置协议)应用层的网络协议,可以用于给客户端动态分配IP地址和子网掩码。DHCP基于服务器-客户端的模式进行工作。

3 DHCP的工作原理

DHCP协议是基于客户端-服务器模式的,为了动态获取IP地址和子网掩码配置信息,DHCP客户端需要和DHCP服务器进行报文交互

9056e13ed461acf8ae16eb08a5d12537.png

1、DHCP客户端发送DHCP Discover广播报文来发现DHCP服务器。(询问谁可以为我分配IP地址。)

2、DHCP服务器在收到DHCP Discover报文后,会选取一个未分配的IP地址,向DHCP客户端发送DHCP提供报文(DHCP Offer),此报文中包含IP地址等配置信息。如果存在多个DHCP服务器,每个DHCP服务器都会响应。(告诉DHCP客户端我可以给你提供服务)

3、如果有多个DHCP服务器向DHCP客户端发送DHCP提供报文,DHCP客户端将会选择收到的第一个DHCP提供报文,然后发送DHCP Request报文,报文中包含请求的IP地址。(告诉所有的DHCP服务器我选择哪个服务器给我分配的地址)

4、DHCP服务器在收到DHCP Request报文后,会回应一个DHCP Ack报文。(告诉DHCP客户端我知道了)

地址冲突检测:

DHCP客户端收到DHCP Ack报文后,会发送免费ARP报文,检查网络中是否有其他主机使用分配的IP地址。

1、如果指定时间内没有收到ARP应答,DHCP客户端会使用这个IP地址。

2、如果有主机使用该IP地址,DHCP客户端会向DHCP服务器发送DHCP拒绝报文,通知服务器该IP地址已被占用。然后DHCP客户端会向服务器重新申请一个IP地址。

DHCP地址续租:

01f08e7711b7c07b12e721d6ca278f2e.png

在使用租期超过50%时刻处DHCP Client会以单播形式向DHCP Server发送DHCP Request报文来续租IP地址。

1、如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;

2、如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址。

41ede95da6eb954c3dd949b6b0ee7ee3.png

在使用租期超过87.5%时刻处,DHCP Client会以广播形式向DHCP Server发送DHCP Request报文来续租IP地址。

1、如果DHCP Client成功收到DHCP Server发送的DHCP ACK报文,则按相应时间延长IP地址租期;

2、如果没有收到DHCP Server发送的DHCP ACK报文,则DHCP Client继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址,并开始新的IP地址申请过程。

注意:

从上面我们知道DHCP客户端经历了从DHCP服务器动态获取IP地址续租IP地址最后释放IP地址的生命周期。

4 DHCP报文类型和报文格式:

d90672d9cb7bbda332ae3bfe8969a796.png

DHCP 协议提供了多种类型的报文,但是基本格式是相同的,不同类型的报文只是报文中的某些字段值不同。

DHCP 报文的基本格式如图所示:

d9859ce3556450c521814e1cc0656852.png

上图中每个字段含义如下:

  • op:报文的操作类型。分为请求报文和响应报文。客户端发送给服务器的包为请求报文,值为 1;服务器发送给客户端的包为响应报文,值为 2。

  • htype:DHCP 客户端的 MAC 地址类型。MAC 地址类型其实是指明网络类型,htype 值为 1 时表示为最常见的以太网 MAC 地址类型。

  • hlen:硬件地址长度。以太网 MAC 地址长度为 6 个字节,即 hlen 值为 6。

  • hops:跳数,DHCP 报文经过的中继数量。每经过一个路由器,该字段就会增加 1。如果没有经过路由器,则值为 0(同一网内)。

  • xid:事务 ID。客户端发起一次请求时选择的随机数,用来标识一次地址请求过程。在一次请求中所有报文的 xid 都是一样的。

  • secs:DHCP 客户端从获取到 IP 地址或者续约过程开始到现在所过去的时间,以秒为单位。在没有获得 IP 地址前,该字段始终为 0。

  • flags:BOOTP 标志位。只使用第 0 比特位,是广播应答标识位,用来标识 DHCP 服务器应答报文是采用单播还是广播发送。其中,0 表示采用单播发送方式,1 表示采用广播发送方式。其余位尚未使用。

  • ciaddr:DHCP 客户端的 IP 地址。仅在 DHCP 服务器发送的 ACK 报文中显示,在其他报文中均显示为 0。这是因为在得到 DHCP 服务器确认前,DHCP 客户端还没有分配到 IP 地址。

  • yiaddr:DHCP 服务器分配给客户端的 IP 地址。仅在 DHCP 服务器发送的 Offer 和 ACK 报文中显示,其他报文中显示为 0。

  • siaddr:为 DHCP 客户端分配 IP 地址等信息的其他 DHCP 服务器 IP 地址。仅在 DHCP Offer、DHCP ACK 报文中显示,其他报文中显示为 0。

  • giaddr:转发代理(网关)IP 地址,DHCP 客户端发出请求报文后经过的第一个 DHCP 中继的 IP 地址。如果没有经过 DHCP 中继,则显示为 0。

  • chaddr:DHCP 客户端的 MAC 地址。在每个报文中都会显示对应 DHCP 客户端的 MAC 地址。

  • sname:为客户端分配 IP 地址的服务器名称(DNS 域名格式)。只在 DHCP Offer 和 DHCP ACK 报文中显示发送报文的 DHCP 服务器名称,其他报文显示为 0。

  • file:DHCP 服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。仅在 DHCP Offer 报文中显示,其他报文中显示为空。

  • options:可选选项,格式为“代码+长度+数据”。

5 DHCP的应用场景:

在大型网络中,会有大量的主机或设备需要获取IP地址等网络参数时,使用DHCP协议动态分配地址。

6 实战:

DHCP地址池

在做实验前先讲下DHCP地址池。

DHCP服务器的地址池是用来定义分配给主机的IP地址范围,DHCP支持配置两种地址池,包括全局地址池接口地址池

1、接口地址池为连接到同一网段的主机或终端分配IP地址。

可以在服务器的接口下执行dhcp select interface命令,配置DHCP服务器采用接口地址池的DHCP服务器模式为客户端分配IP地址。

2、全局地址池为所有连接到DHCP服务器的终端分配IP地址。

可以在服务器的接口下执行dhcp select global命令,配置DHCP服务器采用全局地址池的DHCP服务器模式为客户端分配IP地址。

接口地址池的优先级比全局地址池高。配置了全局地址池后,如果又在接口上配置了地址池,客户端将会从接口地址池中获取IP地址。

实验配置:在ENSP模拟器上模拟客户端通过DHCP获取IP地址

1、搭建拓扑图如下:

f484c4bd2e5a6a7fe1add6d651218c23.png

2、配置PC1的IP地址获取方式为DHCP

cd9a579a7432ab47c06786fdd907e3e6.png

3、在R1路由器下做DHCP配置,采用接口地址池分配IP地址:

#

dhcp enable

#

interface Ethernet0/0/0

ip address 10.1.1.1 255.255.255.0

dhcp select interface

dhcp server excluded-ip-address 10.1.1.2

dhcp server lease day 3 hour 0 minute 0

dhcp server dns-list 10.1.1.2

#

dhcp enable命令用来使能DHCP功能。在配置DHCP服务器时,必须先执行dhcp enable命令,才能配置DHCP的其他功能并生效。

dhcp select interface命令用来关联接口和接口地址池,为连接到接口的主机提供配置信息。在本示例中,接口Ethernet 0/0/0被加入接口地址池中。

dhcp server dns-list命令用来指定接口地址池下的DNS服务器地址。

dhcp server excluded-ip-address命令用来配置接口地址池中不参与自动分配的IP地址范围。

dhcp server lease命令用来配置DHCP服务器接口地址池中IP地址的租用有效期限功能。缺省情况下,接口地址池中IP地址的租用有效期限为1天。

4、配置完成后通过ipconfig命令在PC1上查看IP地址获取情况。

dba9da1f92d2085f1e40d11cbbe06b0e.png

可以看到PC1获取了IP地址为10.1.1.254,子网掩码为255.255.255.0,DNS服务器地址为10.1.1.2

7 Wireshark抓包获取 DHCP 请求 IP 地址时的每种报文。

如下图所示为DHCP的四次握手的交互报文

652ac3dc6261c8dcb5d79366cc668203.png

1、该数据包是客户端向服务器发送的 DHCP Discover 数据包。

3aaa50232e470a876de448d97584d41c.png

在上图中,由于当前客户端还没有 IP 地址,所以源 IP 地址为 0.0.0.0;客户端是向网络中所有服务器进行发送,使用的是广播包,所以目标 IP 地址为 255.255.255.255

2、该数据包是 DHCP 服务器收到客户端 DHCP Discover 广播包后返回的 DHCP Offer 包。

f0c930aaf3fe86828c6cd5d4633b92ee.png

由于是 DHCP 服务器给 DHCP 客户端发送提供的地址信息。因此,报文中应该包含 DHCP 服务器提供给客户端的 IP 地址信息,这里为 10.1.1.254;提供给客户端的子网掩码信息这里为 255.255.255.0

3、该数据包是 DHCP 客户端向网络中所有 DHCP 服务器主机发出的 DHCP Request 消息。

a904fcc12e48417b16e02dafe89cae72.png


由于此时客户端还没有真正拥有IP地址,因此源 IP 地址仍然为 0.0.0.0,该数据包是用来通知所有服务器的,以广播形式发出,因此目标 IP 地址为 255.255.255.255

4、DHCP ACK 数据包是 DHCP 服务器给客户端发送的确认数据包。

d778c6aeda52dd9e106f9ad8cdf4474a.png


可以看到服务器标识地址为 10.1.1.1,所以捕获的数据包的源 IP 地址为 10.1.1.1。目标地址为提供的 IP 地址 10.1.1.254

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值