从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

      • 课程概述
      • 1-1 计算机网络在信息时代的作用
      • 1-2 因特网概述
      • 1-3 三种交换方式
      • 1-4 计算机网络的定义和分类
      • 1-5 计算机网络的性能指标
      • 1-6 计算机体系结构
      • 2-1 物理层的基本概念
      • 2-2 物理层下面的传输媒体
      • 2-3 传输方式
      • 2-4 编码与调制
      • 2-5 信道的极限容量
      • 3-1 概述
      • 3-2 封装成帧
      • 3-3 差错检测
      • 3-4 可靠传输
      • 3-5 点对点协议 PPP
      • 3-6 媒体接入控制的基本概念
      • 3-7 MAC 地址
      • 3-7 IP 地址
      • 3-7 ARP 协议
      • 3-8 集线器与交换机的区别
      • 3-9 以太网交换机自学习和转发帧的流程
      • 3-10 以太网交换机的生成树协议 STP
      • 3-11 虚拟局域网 VLAN
      • 4-1 网络层概述
      • 4-2 网络层提供的两种服务
      • 4-3 IPv4 地址
      • 4-4 IP 数据报的发送和转发过程
      • 4-5 静态路由配置及其可能产生的路由环路问题
      • 4-6 路由选择
      • 4-7 IPv4 数据报的首部格式
      • 4-8 网际控制报文协议 ICMP
      • 4-9 虚拟专用网 VPN 与网络地址转换 NAT
      • 5-1 运输层概述
      • 5-2 运输层端口号、复用与分用的概念
      • 5-3 UDP 和 TCP 的对比
      • 5-4 TCP 的流量控制
      • 5-5 TCP 的拥塞控制
      • 5.6 TCP 超时重传时间的选择
      • 5-7 TCP 可靠传输的实现
      • 5-8 TCP 的运输连接管理
      • 5-9 TCP 报文段的首部格式
      • 6-1 应用层概述
      • 6-2 客户—服务器方式和对等方式
      • 6-3 动态主机配置协议 DHCP
      • 6-4 域名系统 DNS
      • 6-5 文件传送协议 FTP
      • 6-6 电子邮件
      • 6-7 万维网 WWW
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂
2023-11-16

6-3 动态主机配置协议 DHCP

# 630.6-3 动态主机配置协议DHCP

本节课我们介绍动态主机配置协议 DHCP。

‍

我们首先来举例说明 DHCP 的作用。如图所示有这样一个网络拓扑,请同学们思考一下,我们应该给网络中的各主机设置怎样的网络相关配置信息,才能使他们可以正常访问网络中的 WEB 服务器。根据我们之前课程所介绍过的相关知识可知,需要给网络中的各主机正确配置 IP 地址,子网掩码,默认网关,DNS 服务器的网络相关配置信息。

例如这是我们给该主机手工配置的网络相关配置信息,这是我们给另一台主机手工配置的网络相关配置信息。试想一下,如果网络中的主机数量比较多,则这种手工配置的工作量就比较大,并且容易出错。

​​

如果我们给网络中添加一台 DHCP 服务器,在该服务器中设置好,可谓网络中其他各主机配置的网络配置信息。网络中各主机开机后自动启动 DHCP 程序,向 DHCP 服务器请求自己的网络配置信息,这样网络中的各主机就都可以从 DHCP 服务器自动获取网络配置信息,而不用手工参与。

​​

接下来我们举例说明 DHCP 的工作过程,假设网络中有两台 DHCP 服务器和多台用户主机,为了简单而有效的描述 DHCP 的工作过程,我们画出网络中的这两台 DHCP 服务器和一台用户主机,DHCP 使用客户/服务器方式,在 DHCP 服务器上运行 DHCP 服务器进程,也可简称为 DHCP 服务器。在用户主机上运行 DHCP,客户进程也可简称为 DHCP 客户。DHCP 是 TCP 协议体系应用层中的协议,它使用运输层的 UDP 所提供的服务,也就是说 DHCP 报文在运输层会被封装成为 UDP,用户数据报 DHCP 服务器使用的 UDP 端口是 67,DHCP 客户使用的 UDP 端口是 68,这两个 UDP 端口都是熟知端口,封装有 DHCP 报文的 UDP 用户数据报,在网络层会被封装成 IP 数据报,然后再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送。例如封装城以太网帧。

为了简单起见,在后续描述过程中,除非有特别需要,否则我们将不再每次描述 DHCP 报文逐层封装的过程。

下面我们来看看 DHCP 客户与 DHCP 服务器的交互过程,当启用主机的 DHCP 后,DHCP 客户将广播发送 DHCP 发现报文封装该报文的,IP 数据报的源 IP 地址为 0.0.0.0,这是因为主机目前还未分配到 IP 地址,因此使用该地址来代替,目的 IP 地址为广播地址 255.255.255.255。之所以进行广播发送,是因为主机现在并不知道网络中有哪几个 DHCP 服务器,它们的 IP 地址各是什么,由于是广播的 IP 数据报,因此网络中的所有设备都会收到该 IP 数据报,并对其层层解封。解封出封装有 DHCP 发现报文的 UDP 用户数据报,对于 DHCP 客户其应用层没有监听该 UDP 用户数据报的目的端口 67 的进程,也就是 DHCP 服务器进程,因此无法交付 DHCP 发现报文只能丢弃,而对于 DHCP 服务器且应用层始终运行着 D HCP 服务器进程,因此会接受该 DHCP 发现报文并作出响应。

DHCP 报文的格式比较复杂,对于 DHCP 发现报文,我们只需要知道其内部封装有事务 ID 和 DHCP 客户端的 MAC 地址即可。DHCP 服务器收到 DHCP 发现报文后,根据其中封装的 DHCP 客户端的 MAC 地址来查找自己的数据库,看是否有针对该 MAC 地址的配置信息,如果有则使用这些配置信息来构建并发送 DHCP 提供报文。如果没有,则采用默认配置信息来构建并发送 DHCP 提供报文,封装该报文的 IP 数据报的源 IP 地址为 DHCP 服务器的 IP 地址,目的 IP 地址仍为广播地址,仍然使用广播地址的原因是主机目前还没有配置 IP 地址,为了使主机可以收到,只能发送广播,这样一来,网络中的所有设备都会收到该 IP 数据报,并对其层层解封,解封出封装有 DHP 提供报文的 UDP 用户数据报。对于 DHCP 服务器且应用层没有监听该 UDP 用户数据报,目的端口 68 的进程,也就是 DHCP 客户进程,因此无法交付 DHCP 提供报文,只能丢弃。

而对于 DHCP 客户且应用层运行着 DHC 客户进程,因此会接受该 DHCP 提供报文,并作出相应处理。DHCP 客户会根据 DHCP 提供报文中的事物 ID 来判断该报文是否是自己所请求的报文。换句话说,如果该事物 ID 与自己之前发送的 DHCP 发现报文中封装的是事物 ID 相等,就要表明这是自己所请求的报文,就可以接受该报文,否则就要丢弃该报文。DHCP 提供报文装,还封装有配置信息,例如 IP 地址、子网掩码、地址租期、默认网关、DNS 服务器等。需要注意的是 DHCP 服务器从自己的 IP 地址池中挑选在租用给主机的 IP 地址时,会使用 ARP 来确保所选 IP 地址未被网络中其他主机占用。

​​

在本例中 DHCP 客户会收到两个 DHCP 服务器发来的,DHCP 提供报文,DHCP 客户从中选择一个。一般来说选择先到的。并向所选择的 DHCP 服务器发送 DHCP 请求报文,封装该报文的 IP 数据报的源地址仍为 0.0.0.0,因为此时 DHCP 客户才从多个 DHCP 服务器中挑选一个作为自己的 DHCP 服务器,他首先需要征得该服务器的同意,之后才能正式使用向该 DHCP 服务器租用的 IP 地址,目的 IP 地址,仍为广播地址。这样做的目的是不用像网络中的每一个 DHCP 服务器,单播发送 DHCP 请求报文,来告知他们是否请求他们作为自己的 DHCP 服务器。DHCP 请求报文中,封装有事物 ID,DHCP 客户端的 MAC 地址,接受的租约中的 IP 地址,提供此租约的 DHCP 服务器端的 IP 地址等信息。

在本例中,假设 DDCP 客户选择 DHCP 服务器 1,作为自己的 DHCP 服务器,并且 DHCP 服务器 1 接受该请求,于是 DHCP 服务器 1 给 DHCP 客户发送 DHCP 确认报文,封装该报文的 IP 数据报的源 IP 地址为 DHCP 服务器 1 的 IP 地址,目的 IP 地址仍为广播地址,DPHP 客户收到该确认报文号,就可以使用所作用到的 IP 地址了。

需要注意的是在使用所用到的 IP 地址之前,主机还会使用 ARP 检测该 IP 地址是否已被网络中其他主机占用。若被占用,DHCP 客户会给 DHCP 服务器发送 DACP 谢绝报文,来谢绝 IP 地址租约,并重新发送 DHCP 发现报文,若未被占用,则可以使用租约中的 IP 地址与网络中的其他主机通信了。当租用期过了一半时,DHCP 客户会向 DHCP 服务器发送 DHCP 请求报文,来请求更新租用期,封装该报文的 IP 数据报的源 IP 地址为 DHCP 客户之前租用到的 IP 地址,目的 IP 地址为 PHP 服务器 1 的地址,DHCP 服务器若同意则发回 DHCP 确认报文,这样 DHP 客户就要得到了新的租用期。
DHCP 服务器若不同意,则发回 DHCP 否认报文。这时 DHCP 客户必须立即停止使用之前租用的 IP 地址,并重新发送 DHCP 发现报文,来重新申请 IP 地址。

DHCP 服务器若未作出响应,则在作用期过了 87.5%,DHCP 客户必须重新发送 DHCP 请求报文,然后继续等待第一次 CP 服务器可能做出的反应。若 DHCP 服务器未作出反应,则当租用期到期后,DHCP 客户必须立即停止使用之前租用的 IP 地址,并重新发送 DHCP 发现报文,来重新申请 IP 地址。

DHCP 客户可以随时提前终止 DHCP 服务器所提供的租用期,这时只需要向 DHCP 服务器发送 DHCP 释放报文段即可。综上所述,这部分是 DHC P 客户寻找 DHCP 服务器,这部分是 DHCP 服务器,向第一次 CP 客户提供 IP 地址租用。

这部分是 DHCP 客户接受 IP 地址租约。

这部分是 DHCP 服务器,确认 IP 地址租约。

这部分是 DHCP 客户进行 IP 地址续约,这部分是 DHCP 客户可以随时解除 IP 地址租约。

需要注意的是 D HCP 服务器再给 DHCP 客户挑选 IP 地址时,使用 ARP 来确保所挑选的 IP 地址未被网络中其他主机占用,而 DHCP 客户在使用所租用的 IP 地址之前,也会使用 ARP 来检测该 IP 地址是否已被网络中其他主机占用。

​​

最后我们再来看看 DHCP 中继代理的概念,如图所示有这样一个网络拓扑,请大家思考一下该网络中的各主机是否可以通过 DHCP 来自动获取的网络配置信息,答案是否定的,原因很简单,该网络中的主机广播发送 DHCP 发现报文,但该广播报文不会被路由器转发,而是丢弃。

解决方法是给该路由器配置 DHCP 服务器的 IP 地址,并使之成为 DHCP 中继代理,这样该网络中的各主机就可以通过 DHCP 来自动获取到网络配置信息了。当该路由器收到广播的 DHCP 发现报文号,会将其单播转发给 DHCP 服务器,DHCP 客户和 DCCP 服务器,通过该路由器的后续交互过程,我们就要不再赘述了。使用 DHCP 中继代理的主要原因是我们并不愿意在每一个网络上都设置一个 DHCP 服务器,因为这样会使 DHCP 服务器的数量太多。

​​

本节课的内容小结如下:

​​ ‍

上次更新: 2025/6/3 09:31:54
6-2 客户—服务器方式和对等方式
6-4 域名系统 DNS

← 6-2 客户—服务器方式和对等方式 6-4 域名系统 DNS→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式