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

目录

  • 🕒 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
博客链接:🔎 作者博客主页

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudAlibaba整合分布式事务Seata

文章目录 1 整合分布式事务Seata1.1 环境搭建1.1.1 Nacos搭建1.1.2 Seata搭建 1.2 项目搭建1.2.1 项目示意1.2.2 pom.xml1.2.2.1 alibaba-demo模块1.2.2.2 call模块1.2.2.3 order模块1.2.2.4 common模块 1.2.3 配置文件1.2.3.1 order模块1.2.3.2 call模块 1.2.4 OpenFeign调用1…

【C++】容器篇(四)—— queue的基本介绍以及模拟实现

前言: 在上期博文中我带大家对stack进行深入的学习,本期我将带领学习的是关于 queue的基本知识,并且还将给大家介绍并实现 priority_queue。接下来,让我们正式本期的内容。 目录 (一)queue的基本介绍 &…

Eclipse教程 Ⅵ

今天分享Eclipse Java 构建路径、Eclipse 运行配置(Run Configuration)和Eclipse 运行程序 Eclipse Java 构建路径 设置 Java 构建路径 Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包项目相关的 jar 包及类文件项目引用的的类…

83.响应式设计原则

什么是响应式设计? ● 使网页根据任何可能的屏幕尺寸(窗口或视口尺寸)调整其布局和视觉风格的设计技术。 ● 在实践中,这意味着响应式设计使网站可以在所有设备上使用,如台式电脑、平板电脑和手机。 ● 这是一套做法&…

LearnOpenGL-高级OpenGL-9.几何着色器

本人初学者,文中定有代码、术语等错误,欢迎指正 文章目录 几何着色器使用几何着色器造几个房子爆破物体法向量可视化 几何着色器 简介 在顶点和片段着色器之间有一个可选的几何着色器几何着色器的输入是一个图元(如点或三角形)的一…

Spark入门介绍

目录 一、Spark框架概述 1、Spark简介 2、发展 二、Spark功能及特点 1、定义

K8s进阶7——Sysdig、Falco、审计日志

文章目录 一、分析容器系统调用:Sysdig1.1. 安装1.2 常用参数1.3 采集分析1.4 示例1.4.1 查看某进程系统调用事件1.4.2 查看建立TCP连接事件1.4.3 查看某目录下打开的文件描述符1.4.4 查看容器的系统调用 1.5 Chisels工具1.5.1 网络类1.5.2 硬盘类1.5.3 cpu类1.5.4 …

奇舞周刊第493期:Hook 革命!浅谈 React 新 Hook 的未来与思想

关注前端生态发展,了解行业动向。 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ Hook 革命!浅谈 React 新 Hook 的未来与思想 作者阳羡曾写文章对 React 新 Hook use 的设计理念和限制进行了深入分析,并提供了一个可能的实现来帮助读者…

如何在 Alpine Linux 上启用或禁用防火墙?

防火墙是计算机网络安全的重要组成部分,它用于保护计算机和网络免受未经授权的访问和恶意攻击。Alpine Linux 是一种轻量级的 Linux 发行版,常用于构建容器化应用和嵌入式系统。本文将详细介绍如何在 Alpine Linux 上启用或禁用防火墙。步骤 1&#xff1…

Seata-Server安装

1.去哪下 发布说明: https://github.com/seata/seata/releases 2.怎么玩 本地**Transactional**全局**GlobalTransactional** 我们只需要使用一个 GlobalTransactional 注解在业务方法上: 3.Seata-Server安装 官网地址 3.1.版本0.9.0 seata-server-0.9.0.zip解压到指定目…

Linux——进程轮换

目录 一.进程切换 1.定义: 2.硬件上下文: 总结: 一.进程切换 1.定义: 进程切换(process switch),作为抢占式多任务的一个重要功能,其实质就是OS内核挂起正在运行的进程A,然后将先前被挂起的另一个进程B恢复运行。 2.硬…

什么是Redission可重入锁,其实现原理是什么?

一、概述 Redission是一个可重入锁,它可以在分布式系统中用于实现互斥锁。这种锁可以允许多个线程同时获取锁,但在任何给定时间只有一个线程可以执行受保护的代码块。 Redission锁提供了一种简单的方法来保证在分布式系统中的互斥性,同时支…

K8s in Action 阅读笔记——【5】Services: enabling clients to discover and talk to pods

K8s in Action 阅读笔记——【5】Services: enabling clients to discover and talk to pods 你已了解Pod以及如何通过ReplicaSets等资源部署它们以确保持续运行。虽然某些Pod可以独立完成工作,但现今许多应用程序需要响应外部请求。例如,在微服务的情况…

day42_jsp

今日内容 零、 复习昨日 一、JSP 二、EL 三、JSTL 四、MVC 零、 复习昨日 一、JSP 1.0 引言 现有问题 在之前学习Servlet时,服务端通过Servlet响应客户端页面,有什么不足之处? 开发方式麻烦:继承父类、覆盖方法、配置Web.xml或注…

【Proteus仿真】51单片机+步进电机驱动

【Proteus仿真】51单片机步进电机驱动 🔖Proteus仿真基础实验-步进电机驱动🌿Proteus8.12平台 📋步进电机简介 步进电机是一种将电脉冲转换为角位移的开环控制元步进电机。一般地,当步进驱动器接收到脉冲信号时,它将根…

【工作流】Activiti工作流简介以及Spring Boot 集成 Activiti7

文章目录 前言一、activiti介绍二、工作流引擎三、BPMN四、数据库五、Spring Boot 集成 Activiti7安装插件引入依赖配置文件 总结 前言 什么是工作流? 工作流指通过计算机对业务流程进行自动化管理,实现多个参与者按照预定义的流程去自动执行业务流程。 …

Linux :: vim 编辑器:详解:文本复制/粘贴/剪切/删除 与 撤销普通操作及撤销撤销操作

前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C 入门到入土!!!学习合集Linux 从命令到网络再到内核!学习合集 前文&#x…

【哈希】位图/布隆过滤器

位图 前言 在实现位图结构之前我们先看一个问题: 给出40亿个不重复的无符号整型,并且是无序的。然后给一个无符号整数,怎样快速判断这个数是否在40亿个数之中。 方法一:对40亿个数据进行遍历。我们会发现,时间复杂度…

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

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

C++const函数的运用:深度解析const函数的魅力

C 深度解析const函数的魅力 1. C const函数的基本概念(Basic Concepts of const Functions in C)1.1 const函数的定义与特性(Definition and Characteristics of const Functions)1.2 const函数的使用场景(Usage Scena…