本文总共4052个字,阅读需14分钟,全文加载时间:2.361s,本站综合其他专栏收录该内容! 字体大小:

文章导读:前言 前面介绍了应用层的DNS协议 你知道上网时输入的URL是怎么解析成IP地址的吗?一文带你搞懂DNS,我们知道了DNS可以将域名映射成IP地址。 今天给大家介绍下应用层另一个协议——动态主机配置协议DHCP。 我们的P……各位看官请向下阅读:

前言

前面介绍了应用层的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基于服务器-客户端的模式进行工作。

3DHCP的工作原理

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

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地址续租:

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

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

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

在使用租期超过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地址的生命周期。

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

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

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

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

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:可选选项,格式为“代码+长度+数据”。

5DHCP的应用场景:

在大型网络中,会有大量的主机或设备需要获取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、搭建拓扑图如下:

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

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地址获取情况。

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

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

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

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

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

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

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

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

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

以上内容由优质教程资源合作伙伴 “鲸鱼办公” 整理编辑,如果对您有帮助欢迎转发分享!

你可能对这些文章感兴趣:

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注