【网络协议详解】——DHCP系统协议(学习笔记)

news2024/11/25 4:42:45

目录

  • 🕒 1. DHCP概述
  • 🕒 2. 工作过程
  • 🕒 3. DHCP的报文格式
  • 🕒 4. DHCP中继代理
  • 🕒 5. 实验:DHCP配置

🕒 1. DHCP概述

动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了一种机制,称为即插即用连网(plug-and-play networking)。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手工参与

DHCP目前是因特网草案标准[RFC 2131,RFC 2132]。

DHCP 使用客户——服务器方式

需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCP Discover),这时该主机就成为 DHCP 客户。

本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。

DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCP Offer)。

🕒 2. 工作过程

  • DHCP报文在运输层使用UDP协议封装
    • DHCP客户使用的UDP端口号为68
    • DHCP服务器使用的UDP端口号为67
  • DHCP客户在未获取到IP地址时使用地址0.0.0.0

DHCP主要使用以下报文来实现其功能:

  • DHCP DISCOVER发现报文,DHCP客户端用来寻找DHCP服务器,广播
    • 事务ID
    • DHCP客户端的MAC地址
  • DHCP OFFER提供报文,DHCP服务器用来响应DHCP Discover报文,单播
    • 事务ID
    • 配置信息:
      • IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)
      • 子网掩码
      • 地址租期
      • 默认网关
      • DNS服务器
  • DHCP REQUEST请求报文,DHCP客户端请求配置确认,或者续借租期。广播
    • 事务ID
    • DHCP客户端的MAC地址
    • 接受的租约中的IP地址
    • 提供此租约的DHCP服务器端的IP地址
  • DHCP ACK确认报文,DHCP服务器对Request报文的确认响应,单播
  • DHCP NACK否认报文,DHCP服务器对Request报文的确认响应,广播
  • DHCP RELEASE释放报文,DHCP客户端要释放地址时用来通知DHCP服务器,单播
  • DHCP DECLINE谢绝报文,客户端收到DHCP服务器的地址后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文;目的为通知服务器所分配的IP地址不可用,以期获得新的IP地址
  • DHCP INFORM请求更多信息报文,向DHCP服务器请求更为详细的配置信息;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文;目前基本不用。

DHCP工作过程可以分为以下阶段:

  • 地址自动分配过程
    • 发现阶段
    • 提供阶段
    • 选择阶段
    • 确认阶段
  • 地址续约过程
  • 释放过程

在这里插入图片描述

  • DHCP客户机首先进行广播寻找DHCP服务器(DHCP DISCOVER),源地址为本机0.0.0.0,目的地址为广播地址255.255.255.255

  • DHCP服务器收到后,返回DHCP OFFER消息,其中包含提供给DHCP客户机的IP地址(使用ARP确保所选IP地址未被网络中其他主机占用)和相关配置信息。源地址为DHCP服务器地址,目的地址为广播地址(因为此时目的客户机还没有IP地址)

  • 客户机可能会收到多个DHCP提供消息,一般以收到的第一个为准。此时客户机知道DHCP服务器可以给它分配地址,因此发送DHCP REQUEST报文来请求分配IP地址,报文的源地址为0.0.0.0,目的地址为255.255.255.255

  • DHCP收到请求信息后,查看其中事务ID是否相符,若不符则丢弃;符合则从地址池中取得一个IP地址,并通过ARP协议确认此地址未被使用后,将其封装进DHCP ACK信息中,报文源地址为DHCP服务器地址,目的地址为广播地址

  • 客户机收到DHCP确认信息后,查看其中事务ID是否相符,不符则丢弃;符合则再次使用ARP确认IP地址没有被使用

    • 若被占用:给DHCP服务器发送DHCP DECLINE报文撤销IP地址租约,并重新发送DHCP DISCOVER报文;
    • 若未被占用:可以使用租约中的IP地址与网络中其他主机通信了。
  • 当IP地址租约达到0.5倍时间时,客户机会再次向DHCP服务器发送请求信息更新租用期。源地址为租用的IP地址,目的地址为DHCP服务器地址。此时DHCP服务器会出现以下三种情况:

    • 收到请求后,返回确认报文DHCP ACK),其中有新的IP地址租期,重新设置计时器。
    • 收到请求后,返回否认报文DHCP NACK),则客户机收到后立刻停止使用IP地址并重新发送DHCP DISCOVER报文
    • 不响应。则在租期达到0.875倍时,DHCP客户必须重新发送DHCP REQUEST报文,继续等待DHCP服务器可能做出的反应。若依然无反应,则租用期到后,客户机必须立刻停止使用当前IP地址,并重新发送DHCP DISCOVER报文来重新申请IP地址。
  • 客户端可随时终止DHCP服务器提供的租用期,这时只需要向DHCP服务器发送DHCP RELEASE即可。源地址0.0.0.0,目的地址255.255.255.255

🕒 3. DHCP的报文格式

在这里插入图片描述

  • 操作码字段长度为8比特,定义了DHCP报文的类型:请求(1)、提供(2)。
  • 硬件类型字段长度为8比特,定义了物理网络的类型。为 1 时表示为最常见的以太网 MAC 地址类型。
  • 硬件长度字段为8比特,定义了以字节为单位的物理地址的长度。
  • 跳数字段长度为8比特,定义分组可经历的最大跳数。
  • 事务标识字段长度为4字节,该字段携带了一个整数,用来对回答和请求进行匹配。
  • 秒数字段长度为16比特,表示DHCP 客户从获取到 IP 地址或者续约过程开始到现在所过去的秒数。
  • 标志字段长度为16比特,只使用了最左一位,其余位都应当置0,指明服务器是否强制使用广播应答(而不是单播)(1广播,0单播)
  • 客户IP地址字段长度为4字节,包含客户IP地址,在确认报文中才会填入。
  • 你的IP地址字段长度为4字节,包含客户IP地址。该字段由服务器(在应答报文中)在客户的请求下填入。
  • 服务器IP地址字段长度为4字节,包含服务器IP地址。
  • 网关IP地址字段长度为4字节,中继的IP地址。
  • 客户硬件地址字段长度为16字节,指明客户的物理地址。
  • 服务器名字段长度为64字节,指明服务器的名字。
  • 引导文件名字段长度为128字节,由服务器为 DHCP 客户端指定的启动配置文件名称及路径信息。
  • 选项字段长度可变,可以携带附加信息(如网络掩码或默认路由器地址)和携带某些厂商特定的信息,该字段只用在应答报文中。

在这里插入图片描述

选项由三个字段组成:

  • 标记字段
  • 长度字段
  • 值字段
标记长度符说明
0填充
14子网掩码子网掩码
3可变IP地址默认路由器
6可变IP地址DNS服务器
12可变DNS名主机名
132整数引导文件大小
531稍后讨论用于动态配置
128~254可变特定信息厂商相关
255列表结束

🕒 4. DHCP中继代理

在每一个网络上都设置一个DHCP服务器会使DHCP服务器的数量太多。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,作为各网络中计算机与DHCP服务器的桥梁。

在这里插入图片描述

🕒 5. 实验:DHCP配置

在这里插入图片描述

设备名端口ip地址掩码
R1f0/0192.168.1.1255.255.255.0
f0/1192.168.2.1255.255.255.0
PC1E0DHCP获取DHCP获取
PC2E0DHCP获取DHCP获取

实验步骤:

一、基本配置

R1(config)#int f0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut
R1(config)#int f0/1
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#no shut

二、在R1上配置DHCP–192.168.1.0网段
(1)建立DHCP地址池

R1(config)#ip dhcp pool ttoken1

(2)设置DHCP地址池的网络地址和掩码

R1(dhcp-config)#network 192.168.1.0 255.255.255.0    

(3)设置客户端默认网关

R1(dhcp-config)#default-router 192.168.1.1 

(4)设置域名服务器

R1(dhcp-config)#dns-server 192.168.1.100 

三、在R1上配置DHCP–192.168.2.0网段
(1)建立DHCP地址池

R1(config)#ip dhcp pool ttoken2

(2)设置DHCP地址池的网络地址和掩码

R1(dhcp-config)#network 192.168.2.0 255.255.255.0    

(3)设置客户端默认网关

R1(dhcp-config)#default-router 192.168.2.1 

(4)设置域名服务器

R1(dhcp-config)#dns-server 192.168.2.100 

四、在R1和SW1、R1和SW2的链路上开启抓包
五、在PC1和PC2配置DHCP

PC-1> ip dhcp
DDORA IP 192.168.1.2/24 GW 192.168.1.1
PC-2> ip dhcp
DDORA IP 192.168.2.2/24 GW 192.168.2.1

在这里插入图片描述


❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/579046.html

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

相关文章

TA-lib第三方库安装问题

因为学习的需要,用到Talib库做写指标分析,但是百度了好久,说是去要某某网站下载对应版本的文件进行本地安装,但是把…404 Not found 然后通过查找,Ta-lib库的安装已经迁移到这里了 https://github.com/TA-Lib/ta-lib-p…

【SpringBoot教程】SpringBoot+MybatisPlus数据库连接测试 用户收货信息接口开发

⛪ 专栏地址 系列教程更新中 🚀 文章介绍: SpringBootMybatisPlus组合可以大大加快开发效率,紧接上一篇文章的内容,这篇文章进行数据库的连接与查询测试,并配置日志输出调试 🚀 源码获取: 项目中的资料可以通过文章底部…

数据安全治理科技系统能力-数据安全复合治理框架和模型解读(3)

数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,落地数据安全治理科技水平差异直接决定产品和项目是否可持续性,当前和未来更需要专业和有效创新。数据安全治理…

《数据库》期末考试复习手写笔记-第11章 并发控制(锁)【10分】

目录 知识点:封锁活锁死锁可串行化调度 考题1:可串行化调度 考题2:调度正确判断&共享锁写锁 考题3: 事务调度死锁 知识点:封锁活锁死锁可串行化调度 考题1:可串行化调度 考题2:调度正确判…

杨立昆:科学之路读书笔记2

杨立昆:科学之路读书笔记2 人工智能的低谷人工智能无所不能吗?谁将从AI人工智能革命中获益结语 一起学AI系列博客:目录索引 人工智能的低谷 上回分享了读书缘由,杨立昆的背景及其对人工智能的研究看法,这回分享他如何…

15.Kafka系列之事务原理及实践

我们先来回顾下6.Kafka系列之设计思想(四)-消息传递语义中的一些内容 1. 消息传递保证 At most once:最多一次。消息可能会丢失,但永远不会重新传递At least once:至少一次。消息永远不会丢失,但可能会重新传递Exactly once&…

rust 初识基础: 变量、数据类型、函数、所有权、枚举

了解到 rust 和 WebAssembly 的结合使用,可以构建前端应用,而且性能也比较好。初步学习使用 rust 是预编译静态类型语言。 安装 rust 官网下载 rust-CN , 大致了解下为什么选择:高性能、可靠性、生产力。 打开控制台啊,执行安装…

【Servlet】

目录 🎂1. 第一个 Servlet 程序:使用 Servlet 写 hello world 🥞1.1 创建项目 🍳1.2 引入依赖 🎃1.3 创建目录 🍘1.4 开始写代码 🌍1.5 打包代码 🍤1.6 部署 👑1…

如何在华为OD机试中获得满分?Java实现【获取最大软件版本号】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

使用kotlin用回溯法解决电话号码的字母组合问题

17. 电话号码的字母组合 难度中等 2474 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入&#…

23种设计模式中之中介者模式(Mediator Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的迭代器模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

运维工程师面试总结(含答案)

运维工程师面试总结 原文链接:https://www.cuiliangblog.cn/detail/article/2 一、linux 1. linux系统启动流程 第一步:开机自检,加载BIOS第二步:读取MBR第三步:Boot Loader grub…

uni-app常用场景速查记录

记录一下uniapp开发过程中遇到的问题场景,方便后期查看. 1.elementUI中textarea文本如何设置换行显示 2.uniapp中实现文字滚动显示 3.下拉刷新和触底分页查询 1.elementUI中textarea文本设置换行显示 el-input标签中type为textarea中录入的文本内容,在表格中显示…

关键词搜索1688商品数据采集、1688商品列表数据接口

1688:指中国最大的电子商务综合平台,类似于美国的亚马逊。 关键词:是用于描述检索文档或记录的词语或短语,通常是用户输入的查询信息。 搜索:是在数据库、网页搜索引擎或其他信息存储库中查找信息内容的过程。 商品数…

springboot+springsecurity+jwt+elementui图书管理系统

​​图书管理系统​​ 关注公号&#xff1a;java大师&#xff0c;回复“图书”&#xff0c;获取源码 一、springboot后台 1、mybatis-plus整合 1.1添加pom.xml <!--mp逆向工程 --><dependency><groupId>org.projectlombok</groupId><artifactId&…

腾讯云服务器可用区是什么意思?可用区详细说明

腾讯云服务器可用区什么意思&#xff1f;可用区&#xff08;Zone&#xff09;是指腾讯云在同一地域内电力和网络互相独立的物理数据中心&#xff0c;一个可用区故障不会影响另一个可用区的正常运行&#xff0c;所以可用区用于构建高容灾、高可靠性应用。腾讯云服务器网来详细说…

华为OD机试真题B卷 Java 实现【食堂供餐】,附详细解题思路

一、题目描述 某公司员工食堂以盒饭的方式供餐。 为将员工取餐排队时间降为0&#xff0c;食堂的供餐速度必须要足够快。 现在需要根据以往员工取餐的统计信息&#xff0c;计算出一个刚好能达到排队时间为0的最低供餐速度。 即&#xff0c;食堂在每个单位时间内必须至少做出…

分布式事务的21种武器 - 7

在分布式系统中&#xff0c;事务的处理分布在不同组件、服务中&#xff0c;因此分布式事务的ACID保障面临着一些特殊难点。本系列文章介绍了21种分布式事务设计模式&#xff0c;并分析其实现原理和优缺点&#xff0c;在面对具体分布式事务问题时&#xff0c;可以选择合适的模式…

Rocketmq学习之路(一)从生产上的问题引出MQ

前言&#xff1a; 从来没有真正弄明白mq是什么&#xff0c;只知道他有消峰&#xff0c;异步&#xff0c;解耦的作用。但是在日常开发工作中&#xff0c;就是简单的生产者发送消息&#xff0c;消费者接受消息。所以&#xff0c;从今天开始。我要吃掉这个技术。 一.这该死的订单…

word解决文字与公式mathtype不对齐

修改字体和段落里面的这两个。