当前位置: 首页 > news >正文

DHCP原理简析及交互实践

环境:
os:centos7
dnsmasq:version 2.76

一. dhcp工作原理

首先补充几个dhcp相关的基本概念:
1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。
2、DHCP协议采用UDP作为传输协议,DHCP客户端发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给DHCP客户端的68号端口

3、在没有部署DHCP中继的场景下,首次接入网络的DHCP客户端与DHCP服务器的报文交互称为DHCP报文四步交互,如下图:
在这里插入图片描述
4、当DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址
在这里插入图片描述

二. 实践

2.1 准备

参考文章《【云计算 | Openstack】KVM虚机通过dhcp自动获取地址》,使用dnsmasq作为dhcp服务端,使用virsh虚机作为dhcp客户端。

在这里插入图片描述

网络架构如下图所示,dnsmasq监听网桥br0的67号端口

在这里插入图片描述

2.2 开始dhcp并抓包

当客户端开始dhcp时,对虚机口进行抓包结果如下:
在这里插入图片描述

2.3 报文分析

上文提到dhcp的4步交互前提是:dhcp客户端首次接入网络。本次实践dhcp客户端非首次接入,同时修改了dhcp地址池的cidr信息。因此整个dhcp流程大致为:
客户端发送dhcp request——无响应——客户端重新发送dhcp discover——服务端响应dhcp offer——客户端发送dhcp request——服务端响应dhcp ack

1、先看下报文1-2DHCP Request

客户端发送两次dhcp request报文想继续使用之前申请的地址

在这里插入图片描述

2、报文3DHCP Discover,该步是发现阶段

客户端发送的dhcp request收不到响应,因此DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255)给同一网段内的所有设备(包括DHCP服务器或中继)。DHCP DISCOVER报文中携带了客户端的MAC地址、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。

在这里插入图片描述
(Option 55 包含的内容)

在这里插入图片描述

3、报文4-7

dhcp服务端收到了discover报文后,连续发送3个arp和一个icmp报文,用来判断地址11.11.1.70是否被其他客户端占用

在这里插入图片描述

4、报文8DHCP Offer,该步是提供阶段

服务端选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端,Option 1包含了该ip地址的掩码位

在这里插入图片描述
5、报文9DHCP Request,该步是选择阶段

如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符(即Option54)和客户端IP地址(即Option50)。
DHCP客户端广播发送DHCP REQUEST报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。

在这里插入图片描述
6、报文10DHCP ACK,该步是确认阶段

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址(Option50填充的)分配给客户端使用。

在这里插入图片描述
7、报文11-12

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址

在这里插入图片描述

8、报文13-14

DHCP客户端收到DHCP ACK报文,会广播发送ARP报文,获取网关的MAC信息(网关的ip地址在dhcp offer 和dhcp ack报文的Option 3 中均有体现)

在这里插入图片描述

http://www.lryc.cn/news/39755.html

相关文章:

  • 用二极管、三极管和MOS管搭建逻辑门电路
  • SpringBoot:手写一个 SpringBoot Starter
  • 【23】Verilog进阶 - 数位转换【实时处理 + 标志信号】
  • 常见的HTTP状态码
  • D. Peculiar Movie Preferences(思维 + 一个坑)
  • 真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩
  • 蓝桥刷题总结1
  • 淘宝商品详情数据接口 关键字搜索接口 请求代码分享
  • 【数据结构】链表OJ(二)
  • Linux系统搭建FTP服务器
  • MySQL数据同步到 Redis 缓存的几种方法
  • 2023年网络安全比赛--CMS网站渗透中职组(超详细)
  • 【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
  • FPGA实现CSI-2 解码MIPI视频 2line 720P分辨率 OV5647采集 提供工程源码和技术支持
  • JS面试题收集(持续更新好中...)
  • 2023携程面试题
  • CANoe中使用CAPL函数接口调用Vflash文件
  • 三天吃透计算机网络面试八股文
  • shp数据添加wkt字段并导出成csv,leaflet绘制使用
  • Java——二叉树的最近公共祖先及二叉搜索树介绍
  • Stable Diffusion加chilloutmixni真人图片生成模型,AI绘图杀疯了
  • Matplotlib 绘图实用大全
  • MyBatis源码用了哪些设计模式?
  • 【16.整数转罗马数字】
  • 前端小技巧
  • Servlet2.0
  • 【c++】继承
  • minio安装配置和使用(二)客户端安装
  • 【如何使用Arduino设置GRBL和控制CNC机床】
  • 项目测试——博客系统