DHCP协议讲解(含DHCP状态机)

加个目录

一、概述

大家都知道,为了使用TCP/IP协议族,每台主机和路由器需要一定的配置信息。

下面是一个简单的例子:

某学校的教学办公区域将要布置数百台计算机,每台都需要分配IP,如何实现对这些数量巨大的主机进行IP分配?
最简单的方法自然是手动逐一为每台主机分配IP,但这即繁琐,同时也需要时刻注意分配的IP是否冲突。
而DHCP协议,就是用来帮助我们自动为网络中的主机分配IP的。

1、DHCP的概念:

  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机(有时也为路由器)动态的获得IP地址、网关地址和DNS服务器地址等信息,并能够提升地址的使用率
  • 由于DHCP是C/S模式运行的,所以使用DHCP的设备为客户端,而提供DHCP服务的为服务端。DHCP客户端可以让设备自动地从DHCP服务器获得IP地址以及其他配置参数。DHCP服务器端控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。

2、DHCP地址池(为什么分配地址最大不能超过主机?):

  • DCHP服务器分配给DHCP客户端的地址范围。
  • 设置地址池时结束IP不应超过当前网段的最大主机地址,如起始地址为172.16.0.1/16,则最大允许设置分配172.16.0.1172.16.255.255这个范围内的地址,当然也可在这个范围内设置更少的地址,如172.16.0.1172.16.1.1,则是256个地址可用于分配,或172.16.0.10~172.16.0.15,则是6个地址可用于分配。
  • 设置地址池时,地址池中不应当包含DHCP服务器自身的LAN地址,否则可能造成地址冲突。

3、DHCP租期:

  • 当一个IP分配给MAC地址(指客户端网卡,每一个网卡都有对应的MAC地址作为网络中的唯一标识)后,在租期内,默认这个MAC地址的IP为该地址,不再进行分配。 当到期后,该地址被回收,重新分配。
  • 设置地址租期,对于减轻DHCP压力,网络稳定有一定的好处,但是有些时候网络会因此出现诸如IP地址不够等一些问题。

4、DHCP分配地址的方式:

  • 自动分配方式:在这种方式下DHCP服务器会给主机一个永久性的IP地址,只要DHCP的客户端第一次能够成功的从DHCP服务端获得IP地址,那么它就可以永久性的的使用该地址了。
  • 动态分配方式:是指主机会获得一个有时间限制的IP地址,当时间到期或者主机主动放弃该地址的时候,这个地址才能被其它地址使用。
  • 手工分配方式:客户端的IP地址由网络管理员指定,DHCP服务器只是将指定的IP地址告诉给客户端主机。

5、常用端口:

  • DHCP Server端,使用UDP端口:67
  • DHCP Client端,使用UDP端口:68

6、DHCP报文类型:

  • DHCP DISCOVER : 客户端开始 DHCP 过程发送的包,是 DHCP 协议的开始
  • DHCP OFFER : 服务器接收到 DHCP DISCOVER 之后做出的响应,它包括了给予客户端的 IP(yiaddr)、客户端的 MAC 地址、租约过期时间、服务器的识别符以及其他信息:(此时DHCP客户端没有IP地址,所以DHCP服务器同样使用广播进行通讯
  • DHCP REQUEST : 客户端对于服务器发出的 DHCP OFFER 所做出的响应,包含了DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等信息。在续约租期的时候同样会使用
  • DHCP ACK : 服务器在接收到客户端发来的 DHCP REQUEST之后发出的成功确认的报文,包含了租约期限及其他TCP/IP选项信息。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用(ACK包中包含了客户端的MAC地址)。
  • DHCP NAK : DHCP ACK 的相反的报文,表示服务器拒绝了客户端的请求。
  • DHCP RELEASE : 一般出现在客户端关机、下线等状况。这个报文将会使 DHCP 服务器释放发出此报文的客户端的 IP 地址
  • DHCP INFORM : 客户端发出的向服务器请求一些信息的报文
  • DHCP DECLINE : 当客户端发现服务器分配的IP地址无法使用(如 IP 地址冲突时),将发出此报文,通知服务器禁止使用该 IP 地址。

7、openwrt中的dhcp服务是由dnsmasq进程提供的,此进程也可通过配置提供dns服务。

二、DHCP工作过程(附抓包分析)

DHCP的实现分为4步,分别是:

  • 第一步:Client端在局域网内发起一个DHCP Discover包,目的是想发现能够给它提供IP的DHCP Server。

  • 第二步:可用的DHCP Server接收到Discover包之后,通过发送DHCP Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。

  • 第三步:Client端接收到Offer包之后,发送DHCP Request包请求分配IP。

  • 第四步:DHCP Server发送ACK数据包,确认信息。

实例数据包如下:

在这里插入图片描述

  • DHCP Discover:在这里插入图片描述

  • DHCP Offer:在这里插入图片描述

  • DHCP Request:在这里插入图片描述

  • DHCP ACK:在这里插入图片描述

正常来说,一次DHCP过程只需要上面状态机的前四步,后面的续约是在DHCP的租期到达1/2和3/4的时候`进行的。

DHCP REQUEST首次必须是广播——为了告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。之后可单播

三、DHCP状态机(完整状态机可以下去自己抓包分析)

在这里插入图片描述

  • 1.客户机开始处于Init状态:没有信息,并广播DHCP DISCOVER消息

  • 2.选择状态:客户机接收DHCP OFFER消息直到决定使用哪个服务器和地址

  • 3.请求状态:当它做出选择,发出DHCP REQUEST消息来响应时,进入请求状态

  • 4.接收ACK:

    • 可能会收到来自不需要的地址的ACK。如果没有发现它需要的地址,发送一个DHCP DECLING消息,并转化到Init状态
    • 接收到一个自己需要的地址的DHCP ACK消息,接受它,获得超时值T1(T/2)和T2(3T/4),并进入绑定状态,这是就能使用这个地址直至过期
  • 5.IP续期:

    • 客户端从服务器租用IP地址会有一个固定的租约期。除了租约期限外,还有两个时间值T1和T2。其中,T1定义为租约期限的1/2,而T2定义为租约期限的3/4
    • 当到达T1定义的时间期限时,客户端会向提供租约的原始服务器发送DHCP Request包(单播),尝试重新建立租约
      • 如果服务器接受此请求,则回复DHCP ACK消息,包含更新后的租约期限续租后就会立刻更新T1和T2
      • 如果不接受租约更新请求,就会发送DHCP NAK包,此时DHCP客户端立即发起DHCP DISCOVER进程以寻求IP地址;
      • 如果没有从DHCP服务器得到任何回复,则继续使用此IP地址直到到达T2定义的时间限制。
    • 此后(假设此时仍未接收到任何回复),DHCP客户端定时发送DHCP Request包(单播)。如果一直都没有得到确认,则继续使用此IP地址直到T2定义的时间限制。
    • 此时(T2),客户端会发送DHCP Request包(广播),尝试与网络中的其他DHCP服务器重新建立租约
    • 如果租期到达时,仍然未更新租约,则地址自动释放客户端既不能更新自己的租期,也无法从其他的DHCP服务器获得新的租期,客户端必须停止使用这个IP地址,从而停止常规的TCP/IP网络操作
  • T1和T2时刻都是发送DHCP Request包,只不过T1时刻是单播发送,而T2时刻是广播发送

四、DHCP实用场景

  • 1、办公网络:在办公网络中,DHCP可以用来自动分配IP地址、子网掩码、默认网关和DNS服务器的信息,从而简化网络管理,并且可以避免手动配置每台设备的网络信息。
  • 2、学校或大学网络:在学校或大学的校园网络中,DHCP可以帮助大量的设备如学生和教职员工的笔记本电脑、智能手机、平板电脑等设备方便地连接到网络并且获取必要的网络配置信息。
  • 3、企业内部网络:在企业内部网络中,DHCP可以帮助快速增加或减少设备并且简化网络管理,使得员工在任何地点都可以方便地连接到企业网络。
  • 4、公共场所网络:例如酒店、机场、咖啡厅等公共场所的网络,DHCP可以帮助游客和顾客方便地连接到网络,无需手动配置IP地址等网络信息。
  • 5、无线网络:在无线网络中,DHCP可以帮助无线设备快速获取IP地址等连接信息,并方便地切换到不同的无线接入点而无需重新配置网络信息。
  • 6、园区网中不同部门规划了不同网段,每个网段内的主机可以通过DHCP服务器动态获取IP地址等网络参数。如果主机与DHCP服务器不在同一网段,还需要部署DHCP中继。

五、DHCP中继

应用场景:

  • 在大型的网络中,可能会存在多个网段。DHCP客户机通过网络广播消息获得DHCP服务器的响应后得到IP地址。但广播消息是不能跨越网段的。因此,DHCP客户机和服务器在不同的网段内时,客户机向服务器申请IP地址就要用到DHCP中继代理。
  • 简单网络中,一个DHCP服务器可供一个局域网使用(由于广播的缘故)
  • 复杂网络中,可以通过一个或更多DHCP中继代理来中继DHCP流量。

工作原理:

  • DHCP中继代理用于将DHCP操作扩展到跨越多个网段

    • DHCP中继会对DHCP Client发送的报文的源目IP地址进行改动,将本来的广播报文改变成单播报文,以使得DHCP报文可以跨三层路由设备传输。
      在这里插入图片描述
  • 4.使用中继的时机

    • 在一般情况下,中继不会参与客户机和服务器之间的所有DHCP流量交换。
    • 相反,它仅中继那些 广播消息(或IPv6中的组播)。这种消息通常在客户机首次获得自已的地址时交换。
    • 当一台客户机获得一个IP地址,并且服务器的IP地址使用服务器标识选项时,它可与服务器进行单播通信不经过中继
  • 5.中继代理在传统上是第3层设备,并且通常结合了路由功能。

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

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

相关文章

【Java】泛型的简单使用

文章目录 一、包装类1.基本数据类型和对应的包装类2.自动装箱和自动拆箱3.手动装箱和手动拆箱 二、什么是泛型三、泛型的使用四、裸类型(Raw Type)五、泛型是如何编译的六、泛型的上界七、泛型方法总结 一、包装类 在了解泛型之前我们先了解什么是包装类…

IMU传感器用于智能假肢

截肢会给截肢者们带来生活上的不方便和极大痛苦,因此假肢的优化一直被关注着。近期,一项关于新型智能膝关节的研究,让假肢能更好地模拟自然膝关节,给截肢者们带来了希望。 此款假肢内置IMU传感器,减少了截肢者所需的肌…

Golang开发之------ Beego框架

1.安装go(配置环境变量) 2.安装gorm(Goland编辑器举例): go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 3.初始化项目(首先需要在工作目录新建bin文件夹,pkg文件…

分油问题C++求解

原题 3个油桶&#xff0c;容量分别为&#xff08;大桶&#xff09;20&#xff0c;&#xff08;中桶&#xff09;9&#xff0c;&#xff08;小桶&#xff09;7&#xff0c;初始时大桶满油&#xff0c;如何操作可以分出17的油&#xff1f; 代码 #include<iostream> #inc…

【复盘】接口自动化测试框架建设的经验与教训!

为什么选择这个话题&#xff1f; 一是发现很多“点工”在转型迷茫期都会问一些自动化测试相关的问题&#xff0c;可以说自动化测试是“点工”升级的必经之路&#xff1b;二是Google一下接口自动化测试&#xff0c;你会发现很多自动化测试框架相关的文章&#xff0c;但是大部分…

自动化测试框架搭建步骤教程

说起自动化测试&#xff0c;我想大家都会有个疑问&#xff0c;要不要做自动化测试&#xff1f; 自动化测试给我们带来的收益是否会超出在建设时所投入的成本&#xff0c;这个嘛别说是我&#xff0c;即便是高手也很难回答&#xff0c;自动化测试的初衷是美好的&#xff0c;而测试…

golang channel执行原理与代码分析

使用的go版本为 go1.21.2 首先我们写一个简单的chan调度代码 package mainimport "fmt"func main() {ch : make(chan struct{})go func() {ch <- struct{}{}ch <- struct{}{}}()fmt.Println("xiaochuan", <-ch)data, ok : <-chfmt.Println(&…

Xiamen I Fitness Platform

厦门I健身平台程 https://ijs.sports.xm.gov.cn/mgh5/#/ 1&#xff09;公众号 2&#xff09;主页 3&#xff09;【个人中心】【我的保险】就是要买一份保险&#xff0c;10元的那种&#xff0c;不然去场地出意外咋办 4&#xff09;我的保险状态&#xff1a;未购买&#xff0c;…

VR虚拟教育展厅,为教学领域开启创新之路

线上虚拟展厅是一项全新的展示技术&#xff0c;可以为参展者带来不一样的观展体验。传统的实体展览存在着空间限制、时间限制以及高昂的成本&#xff0c;因此对于教育领域来说&#xff0c;线上虚拟教育展厅的出现&#xff0c;可以对传统教育方式带来改革&#xff0c;凭借强大的…

【Qt之QSqlRelationalDelegate】描述及使用

描述 QSqlRelationalDelegate类提供了一个委托&#xff0c;用于显示和编辑来自QSqlRelationalTableModel的数据。 与默认委托不同&#xff0c;QSqlRelationalDelegate为作为其他表的外键的字段提供了一个组合框。 要使用该类&#xff0c;只需在带有QSqlRelationalDelegate实例…

easyrecovery如何恢复手机数据及硬盘数据恢复方法

EasyRecovery16是一款优秀的数据恢复软件&#xff0c;不仅能够兼容windows和mac双重系统&#xff0c;同时还能够识别u盘、存储卡、手机等多种数据储存设备&#xff0c;可恢复的文件类型更是多达百余种。还贴心地准备个人版、专业版和企业版的下载&#xff0c;增加了用户的可选性…

Android-P CameraSerivce

0 前言 本文重点分析Android-P的CameraService实现。 验证:Goldfish模拟器 1 定义 图1.1 CameraService ICameraServiceframeworks/av/camera/aidl/android/hardware/ICameraService.aidlBnCameraServiceout/soong/.intermediates/frameworks/av/camera/libcamera_client/an…

通过分析波形,透彻理解 UART 通信

UART是一种异步全双工串行通信协议&#xff0c;由 Tx 和 Rx 两根数据线组成&#xff0c;因为没有参考时钟信号&#xff0c;所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数&#xff0c;从而按照相同的速率进行通信。 异步通信以一个字符为传输单位…

远程访问:Windows设备管理器远程访问

设备管理器是一个应用程序&#xff0c;它包含与计算机耦合的硬件的完整概述&#xff0c;远程设备管理器允许管理员访问远程计算机的设备管理器&#xff0c;而无需远程访问桌面。 为什么需要远程设备管理器 IT环境充斥着数量众多的电脑和笔记本电脑&#xff0c;对于管理员来说…

Abaqus飞机起落架扭力臂拓扑优化

Abaqus飞机起落架扭力臂拓扑优化 Abaqus除了可以对结构进行强度分析&#xff0c;同样也自带强大的优化功能&#xff0c;下面通过一个简 单的实例演示在Abaqus中进行拓扑优化&#xff0c;另外&#xff0c;如果需要更加强大的拓扑优化仿真&#xff0c;可以 在TOSCA中进行。 定义接…

30岁的测试人?软件测试“内卷“?“我“该如何冲出破圈...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、软件测试的内卷…

怎么样的软件测试工程师才算“大神”?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

数据集笔记 :PEMS-BAY

数据地址&#xff1a;DCRNN - Google 云端硬盘 各station 位置&#xff1a;DCRNN/data/sensor_graph/graph_sensor_locations_bay.csv at master liyaguang/DCRNN (github.com) 1 读取 数据 import h5py fileDownloads/pems-bay.h5fh5py.File(file,r) f.keys()f[speed] #&…

Linux系统iptables

目录 一. 防火墙简介 1. 防火墙定义 2. 防火墙分类 ①. 网络层防火墙 ②. 应用层防火墙 二. iptables 1. iptables定义 2. iptables组成 ①. 规则表 ②. 规则链 3. iptables格式 ①. 管理选项 ②. 匹配条件 ③. 控制类型 四. 案例说明 1. 查看规则表 2. 增加新…

事务基础知识

文章目录 1. 事务的ACID2. 事务隔离级别2.1 数据并发问题2.2 MySQL中的四种隔离级别 1. 事务的ACID 原子性&#xff08;atomicity&#xff09;&#xff1a; 原子性是指事务是一个不可分割的工作单位&#xff0c;要么全部提交&#xff0c;要么全部失败回滚。一致性&#xff08;…