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

news2024/11/15 13:36:51

哈工大计算机网络课程网络层协议详解之: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.coloradmin.cn/o/684198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式篇(Java):前言(UML类图、七大原则)

编写软件过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序(软件),具有更好: 代码重用性 (即:相同功能的…

Web自动化测试平台的设计与落地

目录 前言 一、目标和定位 二、平台特点 三、系统架构 四、相关技术栈 五、UI概览 六、待完善部分 总结: 前言 我最初开始接触Web自动化测试的时候,没有直接的领路人,测试行业知识也远不及如今这么丰富和易获取,当时我对于…

Hello算法学习笔记之搜索

一、二分查找 1.从数组中找到target的索引 注意&#xff1a;while条件是< O&#xff08;logn&#xff09; 二分查找并非适用于所有情况&#xff0c;原因如下&#xff1a; 二分查找仅适用于有序数据。若输入数据无序&#xff0c;为了使用二分查找而专门进行排序&#xff…

视频处理器对LED显示屏的作用

视频处理器在LED显示屏中扮演着重要的角色&#xff0c;其作用如下&#xff1a; 图像和视频信号处理&#xff1a;视频处理器负责对输入的图像和视频信号进行处理和优化&#xff0c;以确保在LED显示屏上呈现出高质量的图像和视频内容。它可以对图像进行去噪、锐化、色彩校正、亮度…

【数据结构】复杂度

目录 &#x1f4d6;什么是数据结构&#xff1f;&#x1f4d6;什么是算法&#xff1f;&#x1f4d6;算法效率&#x1f4d6;时间复杂度&#x1f516;大O的渐进表示法&#x1f516;常见时间复杂度计算举例&#x1f516;面试题&#xff1a;消失的数字 &#x1f4d6;空间复杂度&…

I2C协议应用(嵌入式学习)

I2C协议&应用 0. 前言1. 概念2. 特点&工作原理3. 应用示例代码模板HAL模板 0. 前言 I2C是Inter-Integrated Circuit的缩写&#xff0c;它是一种广泛使用的串行通信协议。它由飞利浦&#xff08;现在是NXP Semiconductors&#xff09;开发&#xff0c;并已成为各种电子…

无迹卡尔曼滤波在目标跟踪中的作用(一)

在前一节中&#xff0c;我们介绍了扩展卡尔曼滤波算法EKF在目标跟踪中的应用&#xff0c;其原理是 将非线性函数局部线性化&#xff0c;舍弃高阶泰勒项&#xff0c;只保留一次项 &#xff0c;这就不可避免地会影响结果的准确性&#xff0c;除此以外&#xff0c;实际中要计算雅各…

软件测试面试试卷,答对90%直接入职大厂

一&#xff0e;填空 1、 系统测试使用&#xff08; C &#xff09;技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括&#xff08;B &…

Linux 如何刷新 DNS 缓存

Linux 如何刷新 DNS 缓存 全文&#xff1a;如何刷新 DNS 缓存 (macOS, Linux, Windows) Unix Linux Windows 如何刷新 DNS 缓存 (macOS, FreeBSD, RHEL, CentOS, Debian, Ubuntu, Windows) 请访问原文链接&#xff1a;https://sysin.org/blog/how-to-flush-dns-cache/&#…

Elasticsearch:install

ElasticSearch Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。 Elasticsearch结合Kibana、Logstash、Beats&#xff0c;也就是elastic stack(ELK)。被广泛应用在日志分析、实时监控&#xff08;CPU、Memory、Program&#xff09;等领域。 elasticsearch是…

【Linux 驱动篇(一)】字符设备驱动开发

文章目录 一、字符设备驱动简介二、字符设备驱动开发步骤1. 驱动模块的加载和卸载2. 字符设备注册与注销3. 实现设备的具体操作函数3.1 能够对 chrtest 进行打开和关闭操作3.2 对 chrtest 进行读写操作 4. 添加 LICENSE 和作者信息 三、Linux 设备号1. 设备号的组成 一、字符设…

网工内推 | 2023应届生专场,上市公司招网工,CCNP以上认证优先

01 浙江宇视科技有限公司 招聘岗位&#xff1a;IT网络工程师 职责描述&#xff1a; 1、负责公司内部核心网络建设&#xff0c;进行网络架构的规划、设计、调整、性能优化&#xff1b; 2、负责公司网络环境的管理&#xff0c;配置&#xff0c;监控、排错&#xff0c;维护&#…

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

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

Servlet 相关内容

1. Servlet 1.1 Servlet概述 Servlet 是 SUN 公司提供的一套规范&#xff0c;名称就叫 Servlet 规范&#xff0c;它也是 JavaEE 规范之一&#xff0c;可以通过API来学习。目前在Oracle官网中的最新版本是JavaEE8&#xff0c;该网址中介绍了JavaEE8的一些新特性。当然&#xff…

【C语言初阶】带你轻松玩转所有常用操作符(2) ——赋值操作符,单目操作符

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,这里是君兮_&#xff0c;今天给大家带来的是有关操作符的第二部分内容&#xff0c;废话不多说&#xff0c;咱们直接开始吧&#xff01; 在正式开始之前&#xff0c;我们还是借助一张思维导图帮助大致简单回忆一下有…

Docker-compose的使用

目录 Docker-compose 简介 docker-compose的安装 docker-compose.yaml文件说明 compose的常用命令 总结 Docker-compose 简介 Docker-compose 是用于定义和运行多容器的 Docker 应用程序的工具。可以使用YAML文件来配置应用程序的服务。&#xff08;通俗讲是可以通过yml文…

LeetCode108-将有序数组转换为二叉搜索树

题目来源 108. 将有序数组转换为二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 题目 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵高度平衡 二叉搜索树。 高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的…

智慧地下采矿,“像素游戏”智能呈现

在这个像素世界里&#xff0c;我们需要一个智能地下采矿可视化综合管理平台&#xff0c;来帮助我们管理和监控地下采矿全流程。 图扑软件依托自主研发的 HT for Web 产品&#xff0c;结合三维定制化渲染、动态模拟、物理碰撞、5G、物联网、云计算及大数据等先进技术&#xff0c…

从零开始理解Linux中断架构(8)---执行上下文之CPU上下文

1 CPU上下文的来由 CPU上下文是切换任务到CPU时需要保存和恢复的CPU寄存器。ARM64需要保存的寄存器如下图所示 X19-X29作为CPU上下文的依据是什么? 实际上这里使用了一个隐含的事实:Linux所有的任务切换都是在内核中__switch_to函数中进行的,当前任务通过__…

KubeSphere 社区双周报 | OpenFunction 发布 v1.1.1 | 2023.6.9-6.22

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.6.9-6.22。 …