DHCP原理和实验

news2024/12/31 4:31:26

目录

DHCP基本认识和原理

场景一、同网段DHCP

场景二、不同段DHCP(中继DHCP)


DHCP基本认识和原理

DHCP(Dynamic Host Configuration Protocol动态主机协议)。

作用:为局域网络中主机动态分发地址,以及集中管理局域网中主机。

端口号:UDP68\67
客户端DHCP请求服务器时使用的端口为UDP68,服务器响应客户端DHCP请求使用的端口为UDP67

工作原理:

1、发现阶段
客户端广播向所有服务器发送DHCP discover报文。(此时客户端DHCP请求使用的端口为UDP 68)

2、提供阶段
DHCP服务器使用DHCP offer回应DHCP客户端。(服务器回应客户端时使用的端口为UDP 67,客户端选择最先回复DHCP offer报文作为客户端请求的服务器)

3、选择阶段
DHCP客户端广播发送DHCP request选择报文。

4、确认阶段
服务器回应DHCP ack确认报文。

DHCP四个阶段的工作内容:

一、发现阶段的客户端是不知道服务器的IP地址的所以会广播发送DHCP discover报文寻找DHCP服务器,目标地址为255.255.255.255,只要在这个网络中的IP地址的服务器都可以接收到DHCP客户端的IP地址请求。

二、提供阶段:DHCP服务器收到DHCP客户端发送的DHCP discover报文后回应DHCP offer报文,DHCPoffer报文中包含了分配给客户端指定mac地址的IP地址,dns,租期,网关等参数。网络内的所有客户端根据封装在DHCP offer报文中的mac地址选择是否接收此报文。

如果DHCP客户端发送的请求中带有期望的租期,那么DHCP服务器会根据自身设置的租期进行比较,给出客户端时间较短的租期。

DHCP服务器会把已经分配给客户端的地址组成一个正在使用的IP地址表,未分配的IP地址组成一个可分配的IP地址表,IP地址冲突的分成一个IP地址冲突表,不能分配的IP地址分到不能分配的表中。

DHCP服务器给DHCP客户端选择IP地址有五个优先顺序

1:DHCP服务器给指定的mac地址静态绑定分配IP地址
2:DHCP客户端在DHCP discover报文中的option50请求指定的IP地址
3:DHCP服务器曾经分配给客户端的IP地址
4:DHCP服务器随即分配IP地址

5:没有可分配地址的情况下DHCP服务器会找超过租期的IP地址和冲突的IP地址进行分配,有可用则分配,没有可用回复DHCP nak拒绝报文,来通知客户端没有可分配的IP地址,客户端会重新发送DHCPdiscover报文请求IP地址。

DHCP服务器为了避免分配的IP地址会冲突所以会在DHCPoffer报文中添加源地址来icmp echo request来检测是否用客户端使用该地址,如果有应答则分配另一个id地址,并划分到冲突地址表中, 没有则继续分配。

提供阶段不是最终的提供IP地址阶段,该阶段还需要等客户端16s回复,如果没有等到客户端回复则此IP地址为继续分配给下一个客户端。

三、选择阶段

DHCP客户端以广播方式发送DHCP discover报文,在同一个网段内有多个服务器回应DHCP offer报文则客户端会选择第一个回应DHCP offer的服务器来进行IP地址选择并广播发送DHCP request报文。

以广播方式发送DHCP REQUEST报文,是为了通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。

四、确认阶段

DHCP服务器收到DHCP客户端发送的DHCP request报文之后会回复DHCP ACK来确认分配IP地址。

DHCP客户端受到服务器发送过来的DHCP ACK之后会免费发送广播arp报文来探测在这个网段中是否有使用该IP地址的客户端,如果没有则使用该IP地址,如果有客户端会向服务器发送DECLINE报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。

如果因为DHCP客户端和DHCP服务器协商和DHCP服务器受到DHCP request报文过慢导致此IP地址已经分配给其他客户端,DHCP服务器会回复DHCP NAK报文给客户端,客户端受到DHCP NAk报文之后会重新发送DHCP discover报文寻找IP地址

DHCP发现和释放报文流程

场景一、同网段DHCP

拓扑:

思路:先配汇聚SW,再配置接入,最后PC

配置如下:

汇聚交换机

# 创建vlan

vlan batch 10 20

# 创建三层vlan,dhcp的网关

interface Vlanif10
 ip address 192.168.10.254 255.255.255.0
 dhcp select global
#
interface Vlanif20
 ip address 192.168.20.254 255.255.255.0
 dhcp select global

# 接口划分vlan

interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 10 20

# 使能dhcp

dhcp enable

# 配置dhcp
ip pool hcie
 gateway-list 192.168.10.254
 network 192.168.10.0 mask 255.255.255.0
 dns-list 8.8.8.8 114.114.114.114
#
ip pool hcie1
 gateway-list 192.168.20.254
 network 192.168.20.0 mask 255.255.255.0
 dns-list 8.8.8.8

 接入交换机1、2

vlan batch 10 20

#
interface Ethernet0/0/2
 port link-type access
 port default vlan 10
#
interface Ethernet0/0/3
 port link-type access
 port default vlan 20

pc配置为DHCP获取地址,使用命令ipconfig查看是否获取到地址,和ping测试。

 学习到的新知识点:

接口下dhcp select 的global和interface的区别(全局地址池和接口地址池)

1、全局地址池可以供其它任何的接口地址dhcp调用.
2、接口地址池就是指定了特定的接口才能分配到这部分的IP地址.

场景二、不同段DHCP(中继DHCP)

拓扑

 思路:

1.先把底层网络打通,由于有一个汇聚sw,所以汇聚使用vlanif100配置在g0/0/3,R2使用子接口在g0/0/1.1配置ip才能打通

2.配置ospf,由于dhcp-server发送dhcp报文没有路由,所以需要在汇聚上的ospf把该dhcp网段宣告进去

3.配置的是vlan,多dhcp的场景,所以汇聚使用vlanif来做网关

配置如下:

dhcp-server
#
interface GigabitEthernet0/0/0
 ip address 10.0.1.1 255.255.255.0

 dhcp select global 
#
ospf 100 
 area 0.0.0.0 
  network 10.0.1.1 0.0.0.0 

R2
#
interface GigabitEthernet0/0/0
 ip address 10.0.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1.1
 dot1q termination vid 100
 ip address 10.0.2.1 255.255.255.0 
 arp broadcast enable
#
ospf 100 
 area 0.0.0.0 
  network 10.0.1.2 0.0.0.0 
  network 10.0.2.1 0.0.0.0 
#
ip pool hcie1
 gateway-list 192.168.1.254 
 network 192.168.1.0 mask 255.255.255.0 
 dns-list 8.8.8.8 
#
ip pool hcie2
 gateway-list 192.168.2.254 
 network 192.168.2.0 mask 255.255.255.0 
 dns-list 8.8.8.8 
#
ip pool hcie3
 gateway-list 192.168.3.254 
 network 192.168.3.0 mask 255.255.255.0 
 dns-list 114.114.114.114 

HJ-1
#
vlan batch 10 20 30 100
#
interface Vlanif100
 ip address 10.0.2.2 255.255.255.0
#
interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 100
#
ospf 100
 area 0.0.0.0
  network 10.0.2.2 0.0.0.0
  network 192.168.1.254 0.0.0.0
  network 192.168.2.254 0.0.0.0
  network 192.168.3.254 0.0.0.0
#
interface Vlanif10
 ip address 192.168.1.254 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 10.0.1.1
#
interface Vlanif20
 ip address 192.168.2.254 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 10.0.1.1
#
interface Vlanif30
 ip address 192.168.3.254 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 10.0.1.1
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 10 20 30

JR-1
vlan batch 10 20 30
#
interface Ethernet0/0/1
 port link-type access
 port default vlan 10
#
interface Ethernet0/0/2
 port link-type access
 port default vlan 10
#
interface Ethernet0/0/3
 port link-type access
 port default vlan 20
#
interface Ethernet0/0/4
 port link-type access
 port default vlan 20
#
interface Ethernet0/0/5
 port link-type access
 port default vlan 30
#
interface Ethernet0/0/6
 port link-type access
 port default vlan 30

实际效果:

 学习到新的知识点:dhcp-server回包需要路由,所以需要静态或者ospf等方式让它有路由回去。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#里使用ExcelDataReader读取EXCEL文件的简单方法

C#里使用ExcelDataReader读取EXCEL文件的简单方法 读取EXCEL文件是比较常见的需求,所以在C#里也会经常遇到。 比如客户需要保存的条码数据,他们可以使用EXCEL来扫码进去,并且进行修改和核验, 然后软件就需要读取这些EXCEL文件,并且从这里得到所需要的条码。 要从EXCEL里…

Android 查看隐私权限方法调用者集合

背景 辛辛苦苦迭代完当前版本,准备推送 App 到应用市场上架,却收到拒审通知:App隐私合规上架护航版检测报告, 报告内容: 场景2:APP以隐私政策弹窗的形式向用户明示收集使用规则,未经用户同意,…

页面崩溃了!记录一次测试中出现的前端内存溢出现象

前情回顾 前几天在一次web应用测试过程中,前端发起了向后端接口的查询请求,由于后端响应较慢,前端一直处于等待响应返回状态。在几分钟后,突然页面出现让人惊悚的“噢噢,页面崩溃了”几个大字。 看到这几个字的一瞬间…

基于GitLab构建企业级CICD-Gitlab-Runner

背景 在过往企业开发中,大部分企业从开发到测试,到部署目前还是手工进行在一些某些中大型企业中,目前构建及部署还是直接使用二进制包部署,或直接单机运行在某些场合下,仓库中代码的编译需要硬件支持,致使…

SSM框架学习记录-Maven_day01

1.分模块开发 将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享:比如有订单和商品两个模块,它们都需要使用到商品的模型类,如果在这两个模块中都写模型类,就会出现重复代码&#xff0c…

Doris部分列更新在广告行业应用

背景:业务需要在不同的时间点对同一个session_id上的广告行为(展示、点击、转换等)数据的更新。 基于HBase归因 更新原理:以session_id为Key在HBase中写入数据,数据更新是先点查到历史数据,补齐当前数据后…

风已起,待云涌---多维度理解云安全

Fix the Unknown,Before You Know it. 新时代大门开启的时候,蜂拥而上的大都是勇士,风已起,待云涌! 1.云安全: 未来安全的能力将成为计算、存储、网络之外的第四大基础设施,并全部融入到云基础设施中&…

Python爬虫入门 ~ selenium访问元素信息与交互基本使用

访问元素信息 前面我们成功定位到了页面的标签元素,那接下来就该轮到获取元素的信息了,常用的函数有以下几种: get_attributetexttag_name 前置准备 from selenium import webdriver from selenium.webdriver.chrome.service import Service from sel…

【Django项目开发】用户认证功能开发(四)

一、JWT Token配置 1、下载djangorestframework-jwt pip install djangorestframework-jwt2、settings.py指定使用的认证类JSONWebTokenAuthentication REST_FRAMEWORK {# 指定使用的认证类# a、在全局指定默认的认证类(认证方式)DEFAULT_AUTHENTICA…

企业金融App评测系列——微众银行以App构筑企业金融服务新生态,成为企业的随身数字银行

易观分析:近年来,疫情驱动小微企业线上化需求不断提升,经营面临的财力、人力、信息获取的紧迫性进一步提升。为更好发展普惠小微金融的商业银行对公服务,正聚焦更好满足小微企业的数字化需求,加快打造企业手机银行等移…

mybatis xml接收日期格式参数

实现方式一&#xff1a; mapper List<AsLLjgcfVO> selectjgcf(Param("rq")Date rq)mapper.xml <select id"selectjgcf" parameterType"string" resultType"com.bysen.mes.domain.VO.AsLLjgcfVO"> where ${rq} between …

使用openEuler系统 搭建Nginx服务器

文章目录1 Nginx服务器1.1 概述1.2 安装1.3 管理nginx1.3.1 概述1.3.2 前提条件1.3.3 启动服务1.3.4 停止服务1.3.5 重启服务1.3.6 验证服务状态1.4 配置文件说明1.5 管理模块1.5.1 概述1.5.2 加载模块1.6 验证web服务是否搭建成功1 Nginx服务器 1.1 概述 Nginx 是一款轻量级…

【Vue】course_3

13.vue3过渡效果 学习&#xff1a;Vue3过渡效果开发&#xff08;内置组件 、内置组件 &#xff09; Vue 提供了两个内置组件&#xff0c;可以帮助你制作基于状态变化的过渡和动画&#xff1a; <Transition> 会在一个元素或组件进入和离开 DOM 时应用动画。本章节会介绍…

算法设计与分析

目录 7-1 汉诺塔问题 7-2 逆序对 7-3 前t个组合结果 7-4 跳马问题 7-5 加油站之最小加油次数 7-6 删数问题 7-1 因子分解 7-2 英雄出场王 7-3 最佳组队问题 7-4 回文串的切割 7-5 和谐宿舍 7-6 h0221.激光炸弹 7-1 小H分糖果 7-2 子集和问题 7-3 数列游戏 7-4 叠…

CentOS8 Kibana8.x 安装遇到的问题解决

起因 在安装完相同版本的Elasticsearch和Kibana后&#xff0c;Elaticsearch运行成功并可以正常使用&#xff0c;Kibana也正常启动&#xff0c;但是在访问时会出现以下错误及提示&#xff1a; 浏览器访问提示&#xff1a;Kibana server is not ready yet.&#xff08;服务器尚…

Allegro如何设置自动捕捉圆和Via中心操作指导

Allegro如何设置自动捕捉圆和Via中心操作指导 在做PCB设计的时候,时常需要抓取圆或者Via的中心,Allegro支持自动捕捉圆或者via的中心,如下图,需要移动器件自动捕捉到圆或者via的中心 具体操作如下 选择Edit-moveOptions中的Point选择Sym Origin

Python小技巧练习【悄悄学Python惊艳所有人】

文章目录一、反转数字二、类的说明文档三、设置 Python 文件的编码四、旋转字符串五、实现控制台滚动条print 函数直接写入文件合并 2 个列表一、反转数字 问题场景: 把数字 789 转换为 987。 典型的数字翻转问题。 解决思路: 将数字的百位十位个位拆解出来&#xff0c;就解…

VUE3-路由《七》

路由就是点击链接或者按钮&#xff0c;进行跳转另一个界面中。在vue中一般使用vue-router来完成路由的操作。 下面我们进行路由的跳转和嵌套路由的实例操作。 1.首先建立一个正常的运行程序 2. 安装vue-router 使用下面的命令&#xff0c;安装路由 npm install vue-router4…

【技巧】vs2019调试

文章目录一.计算机Bug的由来二.调试1.调试的定义2.调试的基本步骤2.release和debug的区别3.调试的快捷键4.其他功能的快捷键1、窗口快捷键2、项目功能快捷键**3、查找相关快捷键4、代码快捷键5、编辑快捷键5.经典例题6.写代码的好习惯举例&#xff1a;模拟实现strcpy7.const的作…

安装Ubuntu Linux,配套安装宝塔,安装禅道OK!

安装Deepin完成后 进行root、SSH允许远程登陆配置&#xff0c; 登录root账号&#xff0c;初次登录可按照以下步骤&#xff1a; sudo passwd root //修改root密码 输入密码后。 sudo su 输入密码登录root权限。 登录后进行ssh安装与配置。 sudo apt-get update//这一句是…