圖解網絡:什麼是DHCP動態主機配置協議?

2022.07.11
圖解網絡:什麼是DHCP動態主機配置協議?

如果沒有DHCP,很難想像我們將如何連接到互聯網或本地網絡,DHCP 是我們在IP 網絡上的設備如何相互通信以及與我們周圍的世界通信的重要組成部分。

DHCP是網絡技術世界一項特別偉大的技術,解決了靜態配置IP繁瑣的過程,其動態分配IP地址的特性,使得網絡變得靈活可擴展。

如果沒有DHCP,很難想像我們將如何連接到互聯網或本地網絡,DHCP 是我們在IP 網絡上的設備如何相互通信以及與我們周圍的世界通信的重要組成部分。

那麼DHCP背後的原理是什麼?為什麼說DHCP是革命性的技術?在配置DHCP的時候要注意什麼?

本文,瑞哥就用圖解的形式帶大家揭開DHCP的神秘面紗,讓我們直接開始!

什麼是DHCP?

英文全稱:Dynamic Host Configuration Protocol

中文名稱:動態主機配置協議

是一種網絡管理協議

DHCP術語

  • DHCP有許多專業術語,下面我們來簡單了解一下:
  • DHCP Discover:當客戶端(PC) 啟動時,它會通過以太網廣播DHCP Discover 消息來定位同一子網中的所有可用DHCP 服務器,到達同一子網中的所有DHCP 服務器。
  • DHCP Offer:當DHCP 服務器收到來自客戶端的DHCP Discover 消息時,它還會通過以太網廣播DHCP Offer 消息,通知客戶端它可用。
  • DHCP Request:收到DHCP Offer 消息的客戶端識別出在同一子網上有可用的DHCP 服務器,然後它通過以太網向服務器廣播DHCP 請求消息,請求網絡配置數據,包括自己的IP 地址。
  • DHCP Reservation:網絡的預定義IP 地址範圍
  • DHCP ACK:DHCP確認
  • DHCP Server:DHCP服務器,運行和管理DHCP 信息的設備
  • DHCP Client:DHCP客戶端,負責請求IP 地址並與DHCP 服務器建立DHCP 連接
  • DHCP Relay Agent:DHCP 中繼代理,是在本地DHCP 客戶端和遠程DHCP 服務器之間發送請求和回复的主機或路由器,當多個LAN中只有一個DHCP 服務器時,中繼代理會處理所有網絡的請求。
  • Lease Time:租用時間,客戶端可以使用分配給它的IP 地址的時間

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP 基本拓撲

DHCP組成部分

上面我們介紹了DHCP的術語,一般DHCP會包含以下部分:

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP組成部分

這個就印證了上面的DHCP 基本拓撲圖,IP地址池、子網、DHCP租約我們會在DHCP原理中介紹。

DHCP原理

DHCP 在應用層運行以動態地為客戶端分配IP 地址,這是通過共享DHCP 事務或DHCP 會話來實現的:

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP過程

我們來用一張圖來簡單的解釋以下DHCP的握手過程:

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP的握手過程

  • 第一步:discover:客戶端發送一個dhcp discover消息通知服務器
  • 第二步:offer:服务器回应一个可用的IP地址和其他参数
  • 第三步:request:客户端从服务器请求IP地址
  • 第四步:acknowledge:服务器回应一个可用的IP地址和其他参数

为了方便大家记忆,我们将图简化一下:

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP工作过程

我们来看一下DHCP工作过程的抓包:

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP工作过程的抓包分析

DHCP 租约

每个 IP 地址都不会无限期地属于某一台计算机,与 IP 地址一起,DHCP 服务器将发送一个称为租用时间的到期日期,表示主机何时需要更新地址,DHCP 租约可以避免一定程度上的IP地址的浪费,因为可能有些IP分配出去了,但是所属计算机已经不在某个局域网了,这个时候如果这个地址还不释放的话,久而久之就会造成浪费。

DHCP租约周期如下:

  • 客户端通过向 DHCP 服务器请求一个 IP 地址租用的分配过程来获得一个 IP 地址租用。
  • 如果客户端已从现有租约中获得 IP 地址,则在重启时需要刷新其 IP 地址,并联系 DHCP 服务器重新分配IP 地址。
  • 租约未到期,则客户端绑定相关租约和IP地址。
  • 租约到期,客户端将联系最初授予租约的服务器来更新它,获得继续使用其 IP 地址的权力。
  • 如果客户端移动到不同的网络,它的动态 IP 地址将被终止,它会从新网络的 DHCP 服务器请求一个新的 IP 地址。

配置DHCP

Windows

windows配置dhcp比较简单,而且也几乎是默认的配置方式:

  • 打开【网络和internet设置】

圖解網絡:什麼是DHCP動態主機配置協議?

网络和internet设置

  • 点击你连接的网络的【属性】

圖解網絡:什麼是DHCP動態主機配置協議?

网络属性

  • 找到【IP设置】

圖解網絡:什麼是DHCP動態主機配置協議?

找到【IP设置】

看到我的电脑已经是设置成DHCP获取的方式了

圖解網絡:什麼是DHCP動態主機配置協議?

ip设置

点开【IP设置】我们看到有DHCP和手动两种设置方式。

我们来看下通过DHCP设置后,我的IP地址是多少:

圖解網絡:什麼是DHCP動態主機配置協議?

查看本机IP地址

可以看到通过DHCP自动分配后,我的电脑IP地址为:192.168.50.234

Linux

我以我的一个云服务器为例子给大家演示一下,我的这台云服务器是香港的,Centos系统,那么网络配置文件都是在/etc/sysconfig/network-scripts/路径下。

我们来看一下这台服务器的网络设置:

more /etc/sysconfig/network-scripts/ifcfg-eth0
  • 1.

命令行显示:

# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

圖解網絡:什麼是DHCP動態主機配置協議?

服务器的网络设置

由此可见我的这台云服务器的ip地址也是DHCP的方式。

查看DHCP分配的地址租约

我们怎么去查看DHCP分配的地址租约呢?

还是以我这台香港的云服务器为例:

执行命令:

cat /var/lib/dhclient/dhclient--eth0.lease
  • 1.

结果显示:

lease {
  interface "eth0";
  fixed-address 172.16.2.231;
  option subnet-mask 255.255.0.0;
  option routers 172.16.0.1;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 8.8.4.4;
  option dhcp-server-identifier 172.16.0.2;
  option interface-mtu 1450;
  option dhcp-renewal-time 40305;
  option classless-static-routes 32.169.254.169.254 172.16.0.2,0 172.16.0.1;
  option broadcast-address 172.16.255.255;
  option dhcp-rebinding-time 72705;
  option host-name "host-172-16-2-231";
  option domain-name "openstacklocal";
  renew 6 2022/07/09 09:49:26;
  rebind 6 2022/07/09 19:34:44;
  expire 6 2022/07/09 23:22:59;
}
lease {
  interface "eth0";
  fixed-address 172.16.2.231;
  option subnet-mask 255.255.0.0;
  option routers 172.16.0.1;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 8.8.4.4;
  option dhcp-server-identifier 172.16.0.2;
  option interface-mtu 1450;
  option dhcp-renewal-time 39746;
  option classless-static-routes 32.169.254.169.254 172.16.0.2,0 172.16.0.1;
  option broadcast-address 172.16.255.255;
  option dhcp-rebinding-time 72146;
  option host-name "host-172-16-2-231";
  option domain-name "openstacklocal";
  renew 6 2022/07/09 20:31:46;
  rebind 0 2022/07/10 05:51:52;
  expire 0 2022/07/10 09:49:26;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.

圖解網絡:什麼是DHCP動態主機配置協議?

DHCP分配的地址租约

我们看到有一项参数叫option dhcp-lease-time 86400,这个就是租期时间,单位是秒。

我们还能看出:

  • renew 6 2022/07/09 20:31:46;:重新设置的时间
  • rebind 0 2022/07/10 05:51:52;:将要重新绑定的时间
  • expire 0 2022/07/10 09:49:26;:到期时间

以上就是DHCP的设置部分,我们最后看看DHCP的优缺点。

DHCP的优缺点

DHCP优点

  • 减少 IP 冲突:手动分配 IP 地址会增加网络中不正确或重复地址的可能性,使用 DHCP可以确保通过集中控制自动、准确地分配地址。
  • 简化网络管理:借助DHCP,网络管理员可以轻松监控、管理和分配 IPv4 和 IPv6 地址。
  • 降低成本: 与手动分配 IP 相比,DHCP 有助于节省大量时间,尤其是对于大型企业而言,它还可以节省资金和其他资源,因为公司不需要有专门的专家来持续监督知识产权管理和分配。

DHCP缺点

DHCP 本身并不安全,如果恶意行为者访问 DHCP 服务器,他们可能会造成严重破坏。

如果 DHCP 服务器没有备份并且服务器出现故障,它所服务的设备也会出现故障。

如果网络只有一个 DHCP 服务器,则 DHCP 服务器可能是单点故障。

总结

DHCP 是 1985 年网络 IP 管理协议 Bootstrap 协议 ( BOOTP ) 的扩展,用于为网络上的每台主机动态分配 IP 地址和其他信息,以便它们能够高效地进行通信。DHCP 自动、集中管理 IP 地址的分配,简化了网络管理员的工作,除了IP 地址,DHCP 还为主机分配子网掩码、默认网关和域名服务器地址等配置,从而使网络管理员的工作更加轻松。