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

相关文章

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh