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

【网络协议】IPv4 地址分配 - 第二部分

前言

在第 1 部分中,我们学习了 IPv4 地址的分配方式,了解了各种类型的 IPv4 地址,并进行了基础的子网划分(Subnetting)。在第 2 部分中,我们将继续学习子网划分,并引入一些新的概念。

【网络协议】IPv4 地址分配 - 第一部分

文章目录

    • 前言
    • IPv4 的类别式地址(Classful Addressing)
    • 无类别 IPv4 地址分配(Classless Addressing)
    • CIDR 和 VLSM
    • 子网划分(Subnetting)续篇
    • 子网划分
      • 任务 1:一个子网容纳 125 个主机
      • 任务 2:一个子网容纳 60 个主机
      • 任务 3:一个子网容纳 30 个主机
      • 任务 4:3 个子网,每个子网有 2 个主机 IP 地址
    • 超网 (Supernetting)
      • 超网实验

IPv4 的类别式地址(Classful Addressing)

当 IPv4 地址最初被引入时,其标准基于 RFC 791,采用了按类别划分的方式。根据当时企业的需求,IPv4 地址分为以下三类:

  • A 类:分配给大型组织。
  • B 类:分配给中型企业。
  • C 类:分配给小型组织。

以下是 IPv4 地址各类别的分类表:

在这里插入图片描述

  • A 类地址:以 0 位开头,范围为 0.0.0.0 到 127.255.255.255。其中第一个地址 0.0.0.0 配合子网掩码 0.0.0.0 被保留为默认路由(Default Route)。这一点将在后续章节中讨论。
  • B 类地址:高阶位以 10 开头,其范围如上表所示。
  • C 类地址:高阶位以 110 开头,范围为 192.0.0.0 到 223.255.255.255。
  • 其余的 IPv4 地址范围则保留用于实验用途或组播(Multicast)。

然而,类别式 IPv4 地址分配存在一些问题。例如,某公司只需要 100 个主机,但被分配了一个 B 类地址范围,这会导致大量 IP 地址浪费,从而影响未来的扩展和 IPv4 地址的使用。因此,引入了无类别的 IPv4 地址分配方式。

无类别 IPv4 地址分配(Classless Addressing)

无类别 IPv4 地址分配解决了类别式分配导致的地址浪费问题。无类别域间路由(Classless Inter-Domain Routing,CIDR) 使用子网掩码而非高阶位数量来分配 IP 地址。

CIDR 和 VLSM

通过 CIDR,可以使用可变长度子网掩码(Variable Length Subnet Masks, VLSM),根据组织的需求灵活分配 IP 地址。这种方式允许根据内部需求进一步划分网络。

在本章中,我们将讨论子子网划分(Sub-subnetting)和超网(Supernetting)。

子网划分(Subnetting)续篇

如上一篇文章所述,子网划分可以进一步细化为子子网,以满足组织的具体需求。在这一部分,我们将学习如何对子网进行进一步划分(Sub-subnetting)。

例如,假设我们有一个 IP 地址 192.168.1.0/24,我们可以对子网进行划分,以高效地为主机分配 IP 地址。

在本节中,我们将学习如何对子网进行划分。这是 VLSM 的具体应用场景。

子网划分

已知 IP 网络 192.168.1.0/24,任务是将其划分为满足以下需求的子网:

  • 一个子网需要容纳 125 个主机;
  • 一个子网需要容纳 60 个主机;
  • 一个子网需要容纳 30 个主机;
  • 三个子网需要容纳 2 个主机。

任务 1:一个子网容纳 125 个主机

首先,我们需要计算所需的主机位数,其余位数将分配给网络部分。

2^n=125 – 2

2^7=128

128-2 = 126

结论:
我们需要 7 个主机位,剩余 1 位分配给网络部分。

在这里插入图片描述

当我们向网络部分添加 1 位时,新的子网掩码将是:

在这里插入图片描述
192.168.1.0/25

因此,增量将是 128。在这种情况下,第一个网络将是 192.168.1.0/25。

在这里插入图片描述

第二个网络将是 192.168.1.128/25,如下所示。

在这里插入图片描述

这将为 125 个主机提供足够的主机 IP 地址。

任务 2:一个子网容纳 60 个主机

在任务 1 中,我们已经将网络 192.168.1.0/25 分配给第一个网络,这意味着我们现在可以使用 192.168.1.128/25。这个子网需要进一步划分,以提供 60 个主机的 IP 地址。

因此,我们需要计算能够容纳这些主机所需的主机位数。

2^n-2= 60

2^5- 2=30,这小于 60,因此不足以满足需求。

2^6-2 = 62,因此足够满足 LAN A 的主机需求。

主机位数将是 6,我们需要从主机位中借用 2 位来创建这些新子网。

划分后的 192.168.1.128/25 网络的新子网掩码将是:

在这里插入图片描述
255.255.255.192

注意:在任务 1 中,我们保留了第二个子网,即 192.168.1.128/25,因此新子网必须从该子网中划分。

增量值为 64,因此两个新子网为:

  • 192.168.1.128/26
  • 192.168.1.192/26

第一个子网(192.168.1.128/26)将分配给需要 60 个主机的网络。第二个子网将根据任务 3 进一步划分。

任务 3:一个子网容纳 30 个主机

我们需要 30 个主机 IP 地址,这些地址将来自任务 2 中获得的第三个子网,即 192.168.1.192/26

首先,我们需要确定主机部分所需的主机位数。

2^n-2= 30

2^4-2=14,不足以满足需求。

2^5-2= 30,足够满足需求,并允许扩展。

因此,主机部分将有 5 位,而网络部分需要从第四个八位组中借用 3 位。

划分后的 192.168.1.192/26 网络的新子网掩码如下所示:

在这里插入图片描述

这是 255.255.255.224。

因此,增量将是 32。

第一个网络如下所示:192.168.1.192/27。

在这里插入图片描述
第二个也是最后一个网络将是:192.168.1.224/27。

在这里插入图片描述

任务 4:3 个子网,每个子网有 2 个主机 IP 地址

最后一个任务是将 192.168.1.224/27 子网进一步划分为三个子网,每个子网包含 2 个主机 IP 地址。

首先,我们确定需要多少主机 IP 地址位数。

2^n-2=2

2^2-2=2,足够满足需求。

因此,主机部分将有 2 位,而网络部分需要从第四个八位组中借用 6 位。

划分后的 192.168.1.224/27 网络的新子网掩码将是:

在这里插入图片描述
子网掩码是:255.255.255.252

该网络中的增量将是 4。

我们需要的三个子网为:

192.168.1.224/30
192.168.1.228/30
192.168.1.232/30

这些网络适用于点对点链接,例如两个路由器之间的连接。

超网 (Supernetting)

在上一节中,我们讨论了子网划分,即将一个大网络分割成更小的网络。超网是其相反的过程,它将多个小网络合并为一个大网络。这个概念将在我们讨论路由汇总时详细介绍。

超网实验

在此场景中,我们给出了以下子网:

在这里插入图片描述

我们的任务是将这些 IP 地址进行超网操作,以便获得一个汇总地址。

步骤 1:将 IP 网络写成二进制形式。

在这里插入图片描述

步骤 2:确定每个网络中相似的位数,并画出一条线标记匹配位的结束位置。

在这里插入图片描述
步骤 3:计算匹配位的数量,并将其转换为十进制格式。

在此场景中,匹配的位是前两个八位组以及第三个八位组的前六个位。

它们可以表示为如下所示:

192.168.0.0

步骤 4:我们需要确定这个汇总地址的新子网掩码:

对于匹配的位,填充所有“1”。

这将是:11111111.11111111.11111100.00000000

这是新的子网掩码,对应的十进制格式如下所示:

255.255.252.0

因此,新网络将是:192.168.0.0/22,即网络的超网(Supernet)。

相关文章:

【网络协议】IPv4 地址分配 - 第二部分

前言 在第 1 部分中,我们学习了 IPv4 地址的分配方式,了解了各种类型的 IPv4 地址,并进行了基础的子网划分(Subnetting)。在第 2 部分中,我们将继续学习子网划分,并引入一些新的概念。 【网络…...

攻防世界 bug

发现有Register界面,先去注册 登录以后发现以下界面,点击Manage显示you are not admin,并且在注册界面用admin为注册名时显示用户名已存在。初步推测是设法改变admin的密码取得权限。 在主界面一通操作并没有什么发现,去findpw…...

Flink如何设置合理的并行度

一个Flink程序由多个Operator组成(source、transformation和 sink)。 一个Operator由多个并行的Task(线程)来执行, 一个Operator的并行Task(线程)数目就被称为该Operator(任务)的并行度(Parallel)。即并行度就是相对于Operator来说的。 合理设置并行度可以有效提高Flink作业…...

小兔鲜儿:生鲜区域,最新专题

生鲜区域: 生鲜区域标题部分: 生鲜区域内容部分: 分左右两个部分 右边区域是8个 li 标签区域,li中嵌套 a ,上部分是图片,下部分是内容;与 a 并列的是cover,定位在 li 之外,设置是溢出隐藏&…...

TypeScript语言的网络编程

基于 TypeScript 的网络编程探索 随着互联网技术的发展,网络编程已成为软件开发中不可或缺的一部分。尤其是在构建现代 Web 应用程序时,网络编程的各个方面,包括 HTTP 请求、WebSocket、API 交互等,都扮演着至关重要的角色。Type…...

复合机器人助力手机壳cnc加工向自动化升级

在当今竞争激烈的制造业领域,如何提高生产效率、降低成本、提升产品质量,成为众多企业面临的关键挑战。尤其是在手机壳 CNC 加工这一细分行业,随着市场需求的持续增长,对生产效能的要求愈发严苛。而复合机器人的出现,正…...

在 C# 中显示动画 GIF 并在运行时更改它们

您可以通过将按钮、图片框、标签或其他控件的Image属性设置为 GIF 文件 来显示动画 GIF 。(如果您在窗体的BackgroundImage属性中显示一个,则不会获得动画。) 有几种方法可以在运行时更改 GIF。 首先,您可以将 GIF 添加为资源。…...

个人博客搭建(二)—Typora+PicGo+OSS

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新,因为WordPress自带的文档编辑器不方便,以前用CSDN写作的时候,习惯了Typora。最近对比了…...

Cloudflare IP 优选工具:轻松找到最快的 CDN 节点

Cloudflare IP 优选工具:轻松找到最快的 CDN 节点 在线体验地址:https://cf-ip.cdtools.click 功能介绍 Cloudflare IP 优选工具是一个专门用于测试和筛选 Cloudflare CDN 节点的在线服务。它能够帮助用户找到最适合自己的 Cloudflare IP 地址&#xff…...

HTB:Ransom[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ffuf对靶机80端口进行路径FUZZ 访问/regist…...

Eclipse配置Tomcat服务器(最全图文详解)

前言: 本章使用图文讲解如何在Eclipse开发工具中配置Tomcat服务器、如何创建和启动JavaWeb工程,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目标: 一、配置Tomcat服务器 1. 切换Eclipse视图 2. 打开菜单 3. 找到服务选项 4. 选择…...

STM32烧写失败之Contents mismatch at: 0800005CH (Flash=FFH Required=29H) !

一)问题:用ULINK2给STM32F103C8T6下载程序,下载方式设置如下: 出现下面两个问题: 1)下载问题界面如下: 这个错误的信息大概可以理解为,在0x08000063地址上读取到flash存储为FF&am…...

用户界面的UML建模10

非正常的可视反馈可伴随着同步事件发生,而同步事件可由系统动作产生。但是,可以分别对它们进行建模。 在下节中将对这些特殊的事件依次进行论述。 6.1 异常处理建模 异常,由Meyer 定义[16],其作为运行时事件(run-time events&a…...

电影动画shader解析与实现

着色器代码解析 大家好!我是 [数擎AI],一位热爱探索新技术的前端开发者,在这里分享前端和Web3D、AI技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:…...

蓝桥杯 第十五届 研究生组 B题 召唤数学精灵

问题描述: 数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式 A(n) 和累乘法仪式 B(n)。累加法仪式 A(n) 是将从 1 到 n 的所有数字进行累加求和,即:A(n)12⋯n累乘法仪式 B(n) 则是将从 1 到 n 的所…...

在 Go 应用中 如何像 FastAPI 一样优雅地构建控制器

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...

用户界面的UML建模11

然而,在用户界面方面,重要的是要了解《boundary》类是如何与这个异常分层结构进行关联的。 《exception》类的对象可以作为《control》类的对象。因此,《exception》类能够聚合《boundary》类。 参见图12,《exception》Database…...

历代iPhone运行内存大小和电池容量信息

系列设备名称充电端口标配充电线PD快充无线充电 (W)标配充电器电池容量 (mAh)发布时间RAM运存iPhone 16iPhone 16 Pro MaxUSB Type-CUSB-C to USB-C支持25无47472024/9/108GB LPDDR5XiPhone 16 ProUSB Type-CUSB-C to USB-C支持25无35772024/9/108GB LPDDR5XiPhone 16 PlusUSB …...

计算机网络之---物理层设备

什么是物理层设备 物理层设备是指负责数据在物理媒介上传输的硬件设备,它们主要处理数据的转换、信号的传输与接收,而不涉及数据的内容或意义。常见的物理层设备包括网卡、集线器、光纤收发器、调制解调器等。 物理层设备有哪些 1、网卡(N…...

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景 实现效果 该案例实现了使用Three.js创建一个带有聚光灯和旋转立方体的3D场景。 知识点 WebGLRenderer(WebGL渲染器) THREE.WebGLRenderer 是 Three.js 中用于将场景渲染为 WebGL 内容的核…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...