首页 > 其他分享 >《计算机网络微课堂》6-3 动态主机配置协议DHCP

《计算机网络微课堂》6-3 动态主机配置协议DHCP

时间:2024-05-30 09:02:40浏览次数:24  
标签:主机 IP 报文 计算机网络 地址 服务器 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 服务器的数量太多。

本节课的内容小结如下:

标签:主机,IP,报文,计算机网络,地址,服务器,DHCP,课堂
From: https://www.cnblogs.com/PeterJXL/p/18215000

相关文章

  • 《计算机网络微课堂》6-2 客户—服务器方式和对等方式
    本节课我们介绍客户服务器方式和对等方式。我们知道网络应用程序运行在处于网络边缘的不同端系统上,通过彼此间的通信来共同完成某项任务。因此开发一种新的网络应用,首先要考虑的问题就是网络应用程序,在各种端系统上的组织方式和他们之间的关系。目前流行的主要有以下两种,一种是......
  • 《计算机网络微课堂》第六章 应用层
    6-1应用层概述从本节课开始,我们进入第6章应用层的学习。本节课我们对应用层进行概述,在之前的课程中,我们按计算机网络体系结构,由低到高的顺序,依次学习了物理层、数据链路层、网络层、运输层。物理层解决使用何种信号来传输比特的问题数据链路层解决分组在一个网络或一段链路......
  • 华为eNSP模拟器配置DHCP
    由于DHCP协议的部署成本较低,所有很多设备都可以充当服务端,所以下面我们使用路由器来充当DHCP的服务端; 基本的拓扑配置如图,下面进入DHCP的配置环节;首先配置接口IP,上图路由器GE0/0/0和GE0/0/1我们分别为其配置为(r1为路由器): 第二步开启DHCP服务: 第三步设置IP池: 这......
  • 计算机网络——三种交换方式
    电路交换(CircuitSwitching)要实现每台主机相互连接是不现实,假如一台主机要和另外一台主机相连,则需要一根连接线,五台就需要十条连接线,而更多则需要的连接线成指数级上升(代词),如果有n个主机则需要的连接线计算公式为:2/n(n-1) 那么怎么实现通过减少连接线还能让主机与主机......
  • 计算机网络中的负载均衡
    本期从什么是负载均衡,为什么要有负载均衡,如何实现负载均衡,以及负载均衡相关的算法来讨论负载均衡1.什么是负载均衡:负载均衡(LoadBalancing)是一种在计算机网络中用于分发网络流量或工作负载的方法,以确保资源的高效利用和系统的高可用性。它通过将请求或任务分发到多个服务器......
  • 计算机网络的网络拥塞
    1.什么是网络拥塞:对网络中的某一资源的需求超过了资源所能提供的可用部分,网络性能就要变坏;这种情况就叫拥塞(网络资源包括带宽,交换节点中的缓存和处理机等),拥塞会导致网络的性能随着负荷的增大而下降。所以如何减少拥塞是网络重中之重的问题。2.TCP拥塞控制算法:以下算法都是建......
  • 《计算机网络微课堂》5-9 TCP报文段的首部格式
    本节课我们介绍TCP报文段的首部格式。在之前的课程中我们曾介绍过,为了实现可靠传输,TCP采用了面向字节流的方式,如图所示TCP将应用进程交付下来的应用报文看作是字节流,存入TCP发送缓存中,但TCP在发送数据时是否发送缓存,取出一部分或全部字节,并给其添加一个首部使之成为TCP......
  • 《计算机网络微课堂》5-8 TCP的运输连接管理
    从本节课开始,我们将分两次课来介绍TCP的运输连接管理。5.8.1TCP的连接建立TCP是面向连接的协议,它基于运输连接来传送TCP报文段TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程TCP运输连接有以下三个阶段第一个阶段是建立TCP连接,也就是通过......
  • 《计算机网络微课堂》5-7 TCP 可靠传输的实现
    本节课我们介绍TCP可靠传输的实现。TCP基于以字节为单位的滑动窗口来实现可靠传输。我们来举例说明,这是因特网上的两台主机,他们之间已经建立了一个TCP连接,为了简单起见,我们假定数据传输只在一个方向进行,换句话说,发送方给接收方发送TCP数据报文段,接收方给发送方发送相应的......
  • 《计算机网络微课堂》5-6 TCP超时重传时间的选择
    本节课我们介绍TCP超时重传时间的选择,超时重传时间的选择是TCP最复杂的问题之一。我们来举例说明,假设主机A和B是因特网上的两台主机,他们之间已经建立了TCP连接,纵坐标为时间,现在主机A给主机B发送TCP数据报文段0,并记录下当前的时间。主机B收到后给主机A发送......