网络协议: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

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java 中实现异步的多种方式

《Java中实现异步的多种方式》文章介绍了Java中实现异步处理的几种常见方式,每种方式都有其特点和适用场景,通过选择合适的异步处理方式,可以提高程序的性能和可维护性,感兴趣的朋友一起看看吧... 目录1. 线程池(ExecutorService)2. CompletableFuture3. ForkJoi