网络协议:DHCP协议工作原理,DHCP分配方式,DHCP租约,Wireshark抓包分析DHCP报文

本文主要是介绍网络协议:DHCP协议工作原理,DHCP分配方式,DHCP租约,Wireshark抓包分析DHCP报文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「专栏简介」:此文章已录入专栏《计算机网络零基础快速入门》

DHCP协议

  • 一、简介
  • 二、分配方式
    • 1)自动分配
    • 2)手工分配
    • 3)动态分配
  • 三、工作原理
  • 四、抓包分析
  • 五、租约

计算机想要 「通信」必须要有一个IP地址,IP协议只是提供了IP,想要使用IP,你得自己配,而DHCP就是用来分配IP的协议。

一、简介

DHCP(Dynamic Host Configuration Protocol)也叫动态主机配置协议,负责「管理」「分配」IP。

DHCP使用UDP传输数据,客户端发送请求到DHCP服务器的67端口,服务器返回响应给客户端的68端口。

DHCP协议使用C/S架构,分为两个部分:

  • DHCP Server(服务器):安装了DHCP协议的服务器;控制一段IP地址范围,处理客户端的DHCP请求。
  • DHCP Client(客户端):PC等终端设备;使用DHCP服务器分配的IP地址、默认网关、DNS服务器地址等配置信息。
  • DHCP Relay(中继):非必选!跨网段时(路由器默认不转发广播),作为中间人负责转发服务器和客户端间的DHCP报文。

二、分配方式

管理员可以配置DHCP分配IP地址的方式:

1)自动分配

​ DHCP服务器为第一次连接的客户端分配一个「永久」性的IP地址,客户端多次连接时,IP地址不会变化。

2)手工分配

​ 管理员提前在DHCP服务器配置好客户端的IP地址,类似静态配置。

3)动态分配

​ DHCP服务器给客户端分配一个受租约限制的IP,租约到期后可以被其他客户端使用。

三、工作原理

常见的DHCP工作过程分为四步:

  1. DHCP Discover :客户端广播发现报文。
  2. DHCP Offer :服务器返回响应报文,携带IP地址。
  3. DHCP Request :客户端广播请求报文,希望使用这个IP地址。
  4. DHCP ACK :服务端响应确认报文,客户端开始使用IP。

在这里插入图片描述
1)需要IP的客户端,广播一条发现报文( DHCP Discover )。

2)所有DHCP服务器都会收到发现报文,并向客户端发送一个响应报文( DHCP Offer ),响应报文中携带服务器自己的IP和可以分配给客户端的IP;

3)客户端收到第一个响应后,会广播一个请求报文( DHCP Request ),并将响应报文中的服务器IP和可以分配的IP放到报文里。

4)所有DHCP服务器都会收到请求报文,并判断报文里的服务器IP是不是自己:

  • ​ 如果不是自己,就收回刚才分配的IP;
  • ​ 如果是自己,就向客户端发送一个确认响应报文( DHCP ACK ),并在报文里提供IP地址的租期。

5)客户端收到响应报文后,检查分配的IP是否可用:

  • 如果可用,就使用IP;
  • ​如果不可用,比如IP已经被别人使用,就向DHCP服务器发送拒绝报文,通知服务器禁用这个IP,让后重新申请IP(回到第一步)。

6)客户端可以随时发送释放报文( DHCP Release),释放IP地址,服务器收到释放报文后,会回收IP地址并重新分配。

其他涉及的报文类型:

  • DHCP Decline:客户端发现IP地址无法使用时,就发送拒绝报文,通知服务器禁用这个IP。
  • DHCP NAK:服务器对客户端 DHCP Request 响应的拒绝报文,客户端收到后重新 DHCP Discover。
  • DHCP Inform:客户端获取IP地址后,向服务器获取DNS等配置信息。

四、抓包分析

重启网卡,抓取DHCP协议的数据包:

在这里插入图片描述

  1. 第一个包是 DHCP Release,这是关闭网卡时,客户端发送的释放IP的数据包:“这个IP我用完了,你回收吧”
  2. 第二个包是 DHCP Discover ,客户端广播的发现报文:“谁是DHCP服务器,我需要IP地址!”
  3. 第三个包是 DHCP Offer ,DHCP服务器们返回的响应报文:“我有IP地址!”,“我也有IP地址”,“……”
  4. 第四个包是 DHCP Request ,客户端广播的请求报文:“我要使用这个DHCP服务器提供的IP地址。”
  5. 第五个包是 DHCP ACK ,被使用IP的服务器:“好的,你用吧,租期是8个小时。”;没被使用IP的服务器 “不用拉到(小声哔哔)”。

五、租约

DHCP给分配的IP设置一个租期,默认1天;

当租期超过 50% 时,客户端会向服务器发送请求报文( DHCP Request )来续租IP地址:

  • 如果服务端收到,就响应确认报文( DHCP ACK ),同时延长租期;
  • ​ 如果没收到,则什么也不做。

当租期超过 87.5% 时,客户端再次广播请求报文( DHCP Request )来续租IP:

  • 如果服务端收到,就响应确认报文( DHCP ACK ),同时延长租期;
  • ​ 如果没收到,则什么也不做,直到租期结束,客户端向服务端发送释放报文( DHCP Release),然后重新广播发现报文( DHCP Discover ),申请IP地址。

这篇关于网络协议:DHCP协议工作原理,DHCP分配方式,DHCP租约,Wireshark抓包分析DHCP报文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/759369

相关文章

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维