哈工大计算机网络课程网络层协议详解之:DHCP协议

news/2024/7/24 10:22:32 标签: 计算机网络, 网络, 网络协议

哈工大网络>计算机网络课程网络层协议详解之:DHCP协议

文章目录

  • 哈工大网络>计算机网络课程网络层协议详解之:DHCP协议
    • 如何获得IP地址?
      • 硬编码
      • 动态主机配置协议-DHCP:(Dynamic Host Configuration Protocol)
    • 动态主机配置协议(DHCP)
    • DHCP工作过程示例

在之前的网络层内容介绍中,我们讲解了IP地址的概念、IP子网/子网掩码、有类IP地址的划分,CIDR无类IP地址以及路由聚合等概念。接下来,继续介绍网络层中的另一个基础概念:作为一个主机,如何获得一个IP地址,并完成IP地址相关信息的配置。为此,重点介绍DHCP协议。

如何获得IP地址?

硬编码

  • 静态配置

    如下图所示,如果最上面这台主机的IP地址确定为223.1.1.1,则可以在主机的网络设置,Internet选项中,直接硬编码配置上该IP地址。

    IP地址栏即是我们固定设置的IP地址:223.1.1.1

    子网掩码:即根据当前主机所在的子网规格来配置,由于图中的子网前缀是25,说明IP地址的前25位都是网络号+子网号,所以子网掩码就是前25位为1,即255.255.255.128。

    默认网关:表示当这个子网内的IP数据报要离开这个子网时,要把它送到哪一个IP地址上进行转发。图中的子网由223.1.14这个IP地址的路由器与其他子网相连,所以默认网关的地址就是223.1.1.4。路由器中223.1.1.4这个接口的IP地址,也就是这个子网中所有主机的默认网关。

    DNS域名服务器:主机需要进行域名解析时,需要把域名解析的查询发送给哪一个服务器。

在这里插入图片描述

动态主机配置协议-DHCP:(Dynamic Host Configuration Protocol)

顾名思义,该协议提供了动态获取主机IP地址,子网掩码、默认网关等配置。

  • 从DHCP服务器动态获取(租赁):
    • IP地址
    • 子网掩码
    • 默认网关地址
    • DNS服务器名称与IP地址
  • 即插即用
    • 作为主机,只要能运行DHCP协议客户端,就能够自动的连接DHCP服务器获取动态IP地址
  • 允许地址重用。
    • 主机在接入网络时,通过DHCP协议向服务器租用一个IP地址。当我们结束网络通信或者关机后,就可以将分配的IP地址归还,DHCP服务器可以将该IP地址再租用给其他主机进行使用,大大提高了IP地址的利用率。
  • 支持移动用户加入网络

动态主机配置协议(DHCP)

有了DHCP协议后,假设存在下面的网络结构,我们在223.1.2.0/24的子网下有一个DHCP服务器,此时当有一个新的外来用户打算联入到这个网络中,希望动态得获取IP地址信息的时候,就可以借助于DHCP客户端,利用DHCP协议向DHCP服务器完成地址申请和分配。

在与DHCP服务器进行通信,报文交换的过程中,主要会交换以下几种报文:

  • 主机广播 “DHCP discover“(发现报文)

    作为一个接入网络的DHCP客户端机,需要发现网络中是否存在DHCP服务器。所以需要广播一个DHCP发现报文,来探测网络中是否存在DHCP服务器

    如果存在DHCP服务器,则DHCP服务器会利用"DHCP offer"(提供报文)进行响应

    主机向DHCP服务器发送获取IP地址请求:“DHCP request“(请求报文)

    如果DHCP服务器能够为客户机分配IP地址的话,则会返回一个DHCP确认报文,携带分配的IP地址:“DHCP ack“(确认报文)

在这里插入图片描述

DHCP工作过程示例

假设在网络中配置了一个DHCP服务器,IP地址为:223.1.2.5,端口号:67。

当一个客户端希望接入此网络,并动态的获取IP地址信息,整体流程为:

  1. 客户机向DHCP服务器发送DHCP发现报文。 客户端的src源IP地址0.0.0.0表示本机,客户端端口号是68,这些是协议规定的。dest目的地址是4个255,表示广播地址,进行广播来发现DHCP服务器。另外,指定了一个事务ID:654
  2. DHCP发现报文广播出去后,网络中的主机实际上都会收到,只是不会做响应,只有DHCP服务器会做响应
  3. 当DHCP服务器能够为客户机分配IP地址的话,会返回DHCP offer报文,其中src源IP地址为:223.1.2.5,是DHCP服务器的IP地址,dest目的地址也为:255.255.255.255,广播出去(因为此时,客户机还没有IP地址,所以只能广播的形式),只有DHCP客户机接收到该报文后,才会做出响应。分配的IP记录在yiaddr字段里,下图表示分配的IP地址为:223.1.2.4。
  4. 客户机收到DHCP offer报文后,会响应一个DHCP request请求报文。 此时可以发现,发送的报文里src目的地址还是4个255,采用的仍然是广播的方式。这里为什么在上一个报文里已经携带了DHCP服务器的IP地址,却还要使用广播地址的方式呢?原因是网络中可能不只一个DHCP服务器,因此通过这种广播的方式也是在告知其他DHCP服务器,客户机已经确定从某一个DHCP服务器中申请IP了,这样其他DHCP服务器可以快速的收回预分配给当前客户机的IP,从而可以将这些IP分配给其他客户机。
  5. DHCP服务器收到请求报文后,会返回一个确认报文ack。 在收到确认报文后,就可以从yiaddr字段中取出分配的IP地址,并进行后续一系列的动态配置等操作,真正完成地址绑定。
  6. 在确认报文中,除了包含yiaddr分配的IP地址外,还包含默认网关,子网掩码、域名服务器等等信息,从而实现客户机的动态配置。

在这里插入图片描述

通过上面的介绍也可以发现,涉及到端口号、请求/响应等过程,说明DHCP协议是一个在应用层实现的协议,采用的是典型的客户机/服务器的方式进行通信。

作为DHCP的实际实现来说,其请求报文都是封装到UDP数据报中,再到IP数据包,再到链路层。 由于DHCP协议的请求报文是利用广播的形式发送的,反映到网络层,实际上借助于IP广播的方式,反映到链路层,实际上是借助于链路层广播(e.g. 以太网广播)

整个层次结构的过程如下图所示:

在这里插入图片描述


http://www.niftyadmin.cn/n/466634.html

相关文章

【面试题13】PHP底层如何用一个zval结构实现多种变量类型的

文章目录 一、概览二、什么是zval结构?三、zval的类型四、如何创建zval结构?4.1 直接使用C代码创建4.2 使用PHP提供的函数创建 五、如何操作zval结构?5.1 Z_TYPE5.2 Z_LVAL5.3 Z_STRVAL5.4 Z_OBJ5.5 Z_ARRVAL 六、如何为zval结构设置值&#…

中国葡萄酒 当惊世界殊 宁夏贺兰山东麓葡萄酒亮相首都地铁

近日,宁夏贺兰山东麓葡萄酒以“中国葡萄酒 当惊世界殊、中国酒庄酒 天赋贺兰山”为宣传主题的宁夏贺兰山东麓葡萄酒宣传专列(列车车号:01055)亮相北京地铁1号线。该专列将从4月7日至7月6日持续开行3个月,平均每天往返穿…

Java阶段四Day08

Java阶段四Day08 文章目录 Java阶段四Day08关于pom.xml中的版本关于Session关于Token关于JWT在项目中使用JWTCustomUserDetailsUserDetailServiceImplUserServiceImpl 关于pom.xml中的版本 查看<groupId> 是同一家的只需配一个版本号<version><artifactId>中…

基于物联网技术的智能配电室综合监控系统设计与产品选型

摘要&#xff1a;配电室是电力系统的重要基础设施&#xff0c;可以保障供配电系统的安全稳定运行。但是&#xff0c;配电室数量多、部署分散、管理复杂&#xff0c;人工现场巡检管理方式费时费工、错误率高&#xff0c;如果发生故障隐患&#xff0c;往往无法及时发现。针对配电…

津津乐道设计模式 - 适配器模式详解(家里电器电源标准不统一的问题都解决了)

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

Qt/C++编写onvif工具(搜索/云台/预置位/OSD/录像存储)

一、前言 从最初编写这个工具开始的时间算起来&#xff0c;至少5年多&#xff0c;一直持续完善到今天&#xff0c;这个工具看起来小也不小大也不大&#xff0c;但是也是经历过无数个现场的洗礼&#xff0c;毫不夸张的说&#xff0c;市面上能够遇到的主流的厂商的设备&#xff…

DDD概念以及微服务划分

目录 DDD简介&#xff1a; DDD与微服务的区别&#xff1a; DDD核心概念&#xff1a; 如何划分微服务边界&#xff1a; DDD简介&#xff1a; DDD 是 Domain-Driven Design 的缩写&#xff0c;称为领域驱动设计。它是为了解决划分业务边界的问题,是一种架构模式,也是一种划分…

R语言使用xlsx包、安装包的经验以及切换工作目录的方法

R语言使用xlsx包 首先不同于读取txt和csv文件&#xff0c;R语言读取xlsx文件需要安装xlsx包 使用下面命令进行安装xlsx install.packages(“xlsx”) 安装过程非常顺利&#xff0c;需要附带安装其它几个包。如果安装出现错误&#xff0c;可以尝试切换网络&#xff0c;使用手机热…