李成笔记网

专注域名、站长SEO知识分享与实战技巧

知道电脑怎么动态获取IP吗?来带你一起解密。

前言


前面介绍了应用层的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 服务器给客户端发送的确认数据包。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言