百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

图解网络:什么是DHCP动态主机配置协议?

nanshan 2024-11-17 14:09 9 浏览 0 评论

你好,这里是网络技术联盟站。

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 基本拓扑图,IP地址池、子网、DHCP租约我们会在DHCP原理中介绍。

DHCP原理

DHCP 在应用层运行以动态地为客户端分配 IP 地址,这是通过共享 DHCP 事务或 DHCP 会话来实现的:

DHCP过程

我们来用一张图来简单的解释以下DHCP的握手过程:

DHCP的握手过程

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

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

DHCP工作过程

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

DHCP工作过程的抓包分析

DHCP 租约

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

DHCP租约周期如下:

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

配置DHCP

Windows

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

  1. 打开【网络和internet设置】

网络和internet设置

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

网络属性

  1. 找到【IP设置】

找到【IP设置】

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

ip设置

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

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

查看本机IP地址

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

Linux

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

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

more /etc/sysconfig/network-scripts/ifcfg-eth0

命令行显示:

# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
MTU=1450
ONBOOT=yes
TYPE=Ethernet
USERCTL=no

服务器的网络设置

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

查看DHCP分配的地址租约

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

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

执行命令:

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

结果显示:

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;
}

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 还为主机分配子网掩码、默认网关和域名服务器地址等配置,从而使网络管理员的工作更加轻松。

本文主要从以下方面剖析了DHCP的种种知识:

  • 什么是DHCP?
  • DHCP术语
  • DHCP 组成部分
  • DHCP 原理
  • DHCP 租约
  • 配置DHCP WindowsLinux查看DHCP分配的地址租约
  • DHCP的优缺点 DHCP优点DHCP缺点
  • 总结

感谢您的阅读,如果觉得文章对您有帮助,别忘了点赞、收藏?哦!有任何问题,欢迎在下方评论区与我讨论!!!

相关推荐

实战派 | Java项目中玩转Redis6.0客户端缓存

铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...

轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)

1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...

Redis与本地缓存联手:多级缓存架构的奥秘

多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...

腾讯云国际站:腾讯云服务器如何配置Redis缓存?

本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...

Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?

你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...

【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案

在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...

Spring boot 整合Redis缓存你了解多少

在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...

揭秘!Redis 缓存与数据库一致性问题的终极解决方案

在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...

高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局

一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...

Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决

缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

Redis客户端缓存的几种实现方式

前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...

Nginx合集-常用功能指导

1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...

腾讯云国际站:腾讯云怎么提升服务器速度?

本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...

雷霆一击服务器管理员教程

本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...

取消回复欢迎 发表评论: