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

文章目录

    • 十进制与二进制
    • 网络如何被寻址
    • 地址类型
      • 网络地址
      • 广播地址
      • 主机地址
    • 如何确定网络和主机部分的位数?
      • 网络中的主机数量与前缀号的关系
      • 计算每个前缀的主机数量公式
    • 子网掩码
    • 二进制与操作(Binary ANDing)
      • 与操作(AND Operation)
      • 二进制与操作的结果
    • 关于子网划分
    • 为什么要进行子网划分
    • 总结

十进制与二进制

我们习惯使用十进制。在日常生活中广泛使用的数字系统大多是基于十进制的,其底数为10。

10^0 = 1
10^1 = 10
10^2 = 100

这就是我们在日常活动中使用的数字系统。然而,计算机仅限于使用两个数字:“1”和“0”,它们分别表示“开”和“关”。我们使用的IP地址系统正是基于这个概念的。所有我们使用的IPv4地址,都是计算机所理解的二进制形式的十进制表示。

下表展示了十进制与二进制之间的对应关系。

在这里插入图片描述

网络如何被寻址

相信大多数人都见过IP地址。IP地址方案包含两个部分:

  1. 网络部分 - 位于左侧
  2. 主机部分 - 位于右侧

在IPv4地址中,高位(从左侧开始的位)代表网络地址,低位(右侧的位)代表主机部分。在IPv4寻址中,高位匹配的主机被认为属于同一网络。

网络部分和主机部分的位数分别决定了网络数量和主机数量。

为了理解网络如何工作,我们需要掌握二进制到十进制以及十进制到二进制的转换。

以IP地址 192.168.1.0 为例,我们需要将其转换为二进制。下图展示了转换过程:

在这里插入图片描述

上图是怎么转换的呢?步骤如下:

  1. 将32位分成4个八位字节(octets)。
  2. 将每个八位字节转换为十进制。
  3. 在每个十进制数之间加上“点”(dot)。

在这里插入图片描述

现在我们已经学习了这个概念,下表展示了一种可以轻松将每个数字转换为二进制的方法。

在这里插入图片描述

例如,如果我们想将255转换为二进制,可以按照以下步骤操作:

  1. 取255,与128比较,如果大于128,则减去128,结果为127。
  2. 判断127是否大于64,如果是,则减去64,结果为63。
  3. 判断63是否大于32,如果是,则减去32,结果为31。
  4. 判断31是否大于16,如果是,则减去16,结果为15。
  5. 判断15是否大于8,如果是,则减去8,结果为7。
  6. 判断7是否大于4,如果是,则减去4,结果为3。
  7. 判断3是否大于2,如果是,则减去2,结果为1。
  8. 判断1是否大于或等于1,如果是,则停止。这是最后一步。

这一过程可以用下图中的流程图进行总结说明。

在这里插入图片描述

现在,根据上述例子,如果一个数字大于或等于对应的二进制值,则该二进制位为1;如果小于,则该二进制位为0。

因此,255 的二进制转换结果为:11111111

这些顺序步骤对于理解如何进行子网划分非常重要。

由于我们的地址表示限制为单个八位字节的十进制值(0到255),因此我们仅探讨将8位二进制数转换为十进制值的过程。

地址类型

在任何IPv4网络地址范围内,我们主要有以下三种类型的地址:

  1. 网络地址(Network Address):用于命名网络的地址。

  2. 广播地址(Broadcast Address):一种特殊类型的IPv4地址,用于向特定网络中的所有主机发送数据包。

  3. 主机地址(Host Addresses):可以分配给网络中的主机或设备的地址,例如PC、笔记本电脑、IP电话等。

网络地址

网络地址是我们为网络命名的地址。例如,一个地址范围内的网络可以命名为“10.0.0.0”网络。此网络中的所有主机都属于“10.0.0.0”网络,其主机的网络部分(network portion)都是相同的。

在网络中,第一个IPv4地址通常是网络地址。

在这里插入图片描述

广播地址

在IPv4中,广播地址是一种特殊的地址,用于向网络中的所有主机发送信息。广播地址始终是网络中的最高地址最后一个地址

在以下示例中,广播地址是主机部分(host region)全部为1的地址。

任何网络中的最后一个地址始终是广播地址。

在这里插入图片描述

主机地址

正如之前讨论的那样,网络中的主机需要分配一个IPv4地址。可以分配给这些主机的地址是介于网络IP地址和广播IP地址之间的任何IP地址

注意:网络地址和广播地址不能分配给主机,因为这些地址是保留的。

如何确定网络和主机部分的位数?

为了确定网络部分和主机部分的位数,我们使用前缀长度(prefix length)

  • 通过计算网络部分的位数即可得出前缀长度。
  • 在十进制形式表示地址时,我们用斜杠“/”加上高阶位的数量来表示,如下表所示。

例如网络172.16.1.0有24位高阶位,因此表示为172.16.1.0/24

在这里插入图片描述

网络中的主机数量与前缀号的关系

网络中的主机数量或网络位的数量决定了前缀号的使用。

当高阶位(网络位)的数量增加时,低阶位(主机位)的数量减少,因此可用的主机地址也会减少。

计算每个前缀的主机数量公式

计算主机数量的公式为:
2^n - 2 = 主机地址数量,其中,n为主机位的数量。

例如,对于192.168.3.0/28

  • 网络位(高阶位)数量为28。
  • IPv4地址总共有32位,因此主机位(低阶位)的数量为:32 - 28 = 4

根据公式计算主机数量:2^4 - 2 = 14

因此,该网络中有14个可用的主机IP地址。

子网掩码

正如我们之前所看到的,IPv4地址被划分为网络部分和主机部分。我们还提到,前缀长度是网络部分或高阶位的位数,它告诉我们网络和主机地址的数量。

网络中的路由器和其他设备也需要知道高阶位和低阶位的数量,因此它们使用子网掩码,子网掩码是前缀长度在十进制中的表示。正如之前提到的,前缀长度是从左侧开始的1的数量,它表示网络部分和主机部分。

为了在网络设备中表示前缀长度,使用一种特殊类型的IPv4地址,称为子网掩码。它由32位组成,就像常规IPv4地址一样。子网掩码通过在网络部分放置1,在主机部分放置0来表示。例如,/24前缀表示的子网掩码是255.255.255.0(11111111.11111111.11111111.00000000)。子网掩码的剩余位(低阶位)为零,表示网络中的主机地址。

当我们在网络设备上配置IP地址时,必须配合使用子网掩码。

二进制与操作(Binary ANDing)

问题是,在做转发决策时,路由器如何知道收到的数据包中的IP地址属于哪个网络?

IPv4主机地址与其子网掩码进行逻辑与(AND)运算,以确定主机所属的网络地址。当对地址和子网掩码进行与操作时,结果是网络地址。

与操作(AND Operation)

与(AND)是逻辑运算,在给定子网掩码和IP地址的情况下,使用与运算来计算网络地址。逻辑与操作的结果如下所示,当在IP地址和子网掩码的位上进行比较时:

  • 1 AND 1 = 1
  • 1 AND 0 = 0
  • 0 AND 1 = 0
  • 0 AND 0 = 0

二进制与操作的结果

  • 进行与操作后,同一网络中的网络设备可以决定数据包是否属于本地网络,还是应该转发到远程网络。
  • 路由器根据二进制与操作的结果做出转发决策。

下表展示了对于网络192.168.2.45/24的与操作过程。

在这里插入图片描述

因此,IP地址192.168.2.45/24的网络地址将是192.168.2.0

关于子网划分

现在我们已经理解了如何将IP地址从十进制转换为二进制,是时候学习子网划分了。

子网划分允许我们从一个IP地址块创建更多的网络。这些网络通过路由器互联,因此每个路由器上的接口必须处于不同的网络中。

注意: 通过子网划分创建的网络将被称为子网。因此,当你看到“子网”而不是“网络”时,千万不要混淆。

子网划分是一个简单的过程,我们从主机部分借用位来创建新的网络。以下面的示例为例,地址192.168.1.0/24是主网络,如果我们从主机部分借用2个位,那么新的前缀长度将是26。因此,这2个位将分配给网络部分。

在这里插入图片描述

当我们借用主机位时,新的二进制地址将保持不变,但是,显示网络部分的子网掩码将会不同,如下所示:

在这里插入图片描述

当我们通过借用主机部分的位来扩展子网掩码时,我们实际上是将网络的数量加倍。然而,借用的位越多,每个子网中可用的主机 IP 地址数量就会越少。

计算每次借用主机位时创建的子网数量的公式是:

2^n = 新网络的数量。

要计算每个网络中的主机数量,我们使用公式:

2^n - 2,其中 n = 为主机保留的位数。

以下面的网络 172.16.1.0/24 为例,如果我们想将该网络子网化以创建 2 个子网,我们需要从主机部分借用 1 位并将其添加到网络部分。

在这里插入图片描述

在从第四个八位组借用两个主机位之后,新的网络将如下所示。

在这里插入图片描述

子网掩码将多出一个 1 位。

因此,在借用 1 个主机位后,我们将创建 2 个新网络,但我们会减少每个子网中的主机数量。

现在,新的子网将如下所示:

172.16.1.0/25

在这里插入图片描述

172.16.1.128/25

在这里插入图片描述

子网掩码将是 255.255.255.128

注意:每当我们进行子网划分时,最后一个子网将始终与新子网掩码的最后一个八位字节具有相同的位。


以下是示例:

如果我们将 172.16.1.0/24 子网划分为 8 个新网络。

步骤 1:我们需要从主机部分借用多少位?

2^n = 8

2^3 = 8

因此,我们需要借用 3 个主机位。

在这里插入图片描述

新的子网掩码 – 255.255.255.224

前两个子网和最后一个子网将是:

172.16.1.0/27

在这里插入图片描述

172.16.1.32/27

在这里插入图片描述

172.16.1.224

在这里插入图片描述

增量数通常是最后借用的主机位。在上述场景中,这是 32。

将 172.16.1.0/24 子网划分为 /27 后的子网为:

在这里插入图片描述

为什么要进行子网划分

在我们的网络中,IP 地址的需求可能会有所不同。例如,某些连接(如点对点连接)可能只需要少量的 IP 地址,而某些部门可能有 200 个用户,而另一些部门只有 20 个用户。

子网划分使我们能够将网络划分成多个子网,从而最优地使用 IP 地址。如果我们将 200 个 IP 地址分配给一个只需要 20 个的网络,就会浪费大量地址。

如果用电话服务提供商的类比,未进行子网划分就像是给一个客户分配 100 个电话号码,而他们只需要 1 个。

在进行子网划分时,我们应该仔细考虑扩展计划,因为由于需求,网络可能会增长。

在下面的场景中,我们将根据主机数量进行子网划分。这是理解子网划分的一个关键因素。

场景描述

在以下场景中,我们需要对三个网络地址进行子网划分:

  • 192.168.1.0/24 用于 WAN 连接 LINK A 和 LINK B
  • 172.16.1.0/24 用于 LAN A
  • 172.16.2.0/24 用于 LAN B
  • 192.168.2.0/24 用于 LAN C

在这里插入图片描述

所以我们将从 WAN 链接开始。

1、WAN 链接
对于这样的链接,我们每个链接只需要 2 个 IP 地址,因此,我们需要确定哪个子网掩码可以仅提供 2 个主机地址。

我们需要计算需要多少个右侧位,然后其余的将分配给网络部分。

2^n = 2 - 2

2^2 = 4

4 - 2 = 2

因此,我们只需要 2 个主机位。剩余的 6 个位将用于网络部分。

在这里插入图片描述

在将 6 位添加到网络部分后,新的子网掩码将是:

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

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

在这里插入图片描述

第二个网络将是 192.168.1.4/30,如下所示。

在这里插入图片描述
这些将为 WAN 链接提供足够的主机 IP 地址。

2、LAN A
对于第二部分,我们需要为 LAN A 提供足够的主机 IP 地址。

LAN A 需要 40 个 IP 地址。

因此,我们需要计算需要多少个主机位来容纳这些 IP 地址。

2^n - 2 = 40

2^5 - 2 = 30,这小于 40,因此不够。

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

主机位将是 6,我们将借用 2 个主机位来获得这些新的子网。

在进行子网划分后,172.16.1.0/24 网络的新子网掩码将是:

在这里插入图片描述

255.255.255.192

增量数将是 64,因此四个网络将是:

在这里插入图片描述

3、LAN B
我们需要 65 个主机 IP 地址,给定网络 172.16.2.0/24。

首先,我们需要确定在主机部分需要多少个主机位。

2^n - 2 = 65

2^6 - 2 = 62,这不足够。

2^7 - 2 = 126,这足够并且可以支持扩展。

因此,主机部分将有 7 个位,网络部分将从第四个八位字节借用 1 个位。

172.16.2.0 网络的新子网掩码将如下所示。

在这里插入图片描述

这是 255.255.255.128

因此,增量将是 128。

第一个网络将如下所示:172.16.2.0/25

在这里插入图片描述

第二个也是最后一个网络将是 172.16.2.128/25。

在这里插入图片描述

4、LAN C
在 LAN C 中,我们需要有能够容纳每个子网 12 个主机的子网,使用网络192.168.2.0/24。

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

2^n - 2 = 12

2^4 - 2 = 14,足够了。

因此,主机部分将有 4 个位,而网络部分将借用 4 个位。

192.168.2.0 网络的新子网掩码将是

在这里插入图片描述

子网掩码是:255.255.255.240

该网络的增量将是 16。

第一个和第二个网络将分别是 192.168.2.0/28 和 192.168.2.16/28。

总结

IPv4 地址分配第一部分到此结束。在第二部分,我们将深入探讨子网划分,并且还会探索其他概念,如超网划分。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘——集成学习

数据挖掘——集成学习 集成学习Bagging:有放回采样随机森林 BoostingStacking 集成学习 集成学习(Ensemble learning)方法通过组合多种学习算法来获得比单独使用任何一种算法更好的预测性能。 动机是为了提高但分类器的性能 Bagging&…

ansible-性能优化

一. 简述: 搞过运维自动化工具的人,肯定会发现很多运维伙伴们经常用saltstack和ansible做比较,单从执行效率上来说,ansible确实比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息队列[暂没深入了解]),但其实…

NLP CH10 问答系统复习

1. 专家系统 特点 问题聚焦:限定在特定领域。数据结构化:使用结构化的领域知识。数据库支持:后台有一个数据库,保存系统可提供的各种数据。查询机制:用户提问时,系统将问题转换为 SQL 查询语句&#xff0…

vite6+vue3+ts+prettier+eslint9配置前端项目(后台管理系统、移动端H5项目通用配置)

很多小伙伴苦于无法搭建一个规范的前端项目,导致后续开发不规范,今天给大家带来一个基于Vite6TypeScriptVue3ESlint9Prettier的搭建教程。 目录 一、基础配置1、初始化项目2、代码质量风格的统一2.1、配置prettier2.2、配置eslint2.3、配置typescript 3、…

【2025年最新】OpenWrt 更换国内源的指南(图形界面版)

在上一篇文章中我们讲解了如何使用命令行更换国内源,如果你没有终端工具,或者不喜欢命令行,那么图形界面方式将会是更简单有效的方式。 命令行版本:【2025年最新】OpenWrt 更换国内源的指南(命令行)-CSDN博客 为什么选择通过图形…

uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器

效果 选择前效果 1、时间选择器 2、日期选择器 3、普通选择器 4、多列选择器 选择后效果 代码 <template><!-- 时间选择器 --><view class"line"><view classitem1><view classleft>时间</view><view class"right&quo…

NVIDIA DLI课程《NVIDIA NIM入门》——学习笔记

先看老师给的资料&#xff1a; NVIDIA NIM是 NVIDIA AI Enterprise 的一部分&#xff0c;是一套易于使用的预构建容器工具&#xff0c;目的是帮助企业客户在云、数据中心和工作站上安全、可靠地部署高性能的 AI 模型推理。这些预构建的容器支持从开源社区模型到 NVIDIA AI 基础…

深度学习中的步数指的是什么

Lora微调的截图如下: 在深度学习中,步数(steps) 是指模型参数更新的次数。每次参数更新通常对应一个或多个批次的梯度计算和优化器更新。以下是计算总步数的方法以及步数的具体含义: 1. 步数的计算公式 总步数(Total Optimization Steps)可以通过以下公式计算: [ \te…

【可实战】测试用例组成、用例设计方法、用例编写步骤、测试用例粒度、用例评审(包含常见面试题)

一、测试用例组成 &#xff08;一&#xff09;测试用例的组成 用例编号&#xff0c;模块&#xff0c;测试点&#xff08;测试标题&#xff09;&#xff0c;优先级&#xff0c;前提条件&#xff0c;测试步骤&#xff0c;期望结构&#xff0c;实际结果并不是每一项都必须&#…

Redis两种主要的持久化方式是什么?

Redis支持两种主要的持久化方式&#xff0c;它们分别是RDB&#xff08;Redis Database Snapshotting&#xff09;和AOF&#xff08;Append Only File&#xff09;。以下是这两种持久化方式的详细介绍&#xff1a; 一、RDB&#xff08;Redis Database Snapshotting&#xff09; …

【强化学习】演员评论家Actor-Critic算法(万字长文、附代码)

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

《新概念模拟电路》-电流源电路

电流源电路 本系列文章主要学习《新概念模拟电路》中的知识点。在工作过程中&#xff0c;碰到一些问题&#xff0c;于是又翻阅了模电这本书。我翻阅的是ADI出版的&#xff0c;西安交通大学电工中心杨建国老师编写的模电书。 本文主要是基于前文《新概念模拟电路》-三极管的基础…

Linux下编译安装PETSc

本文记录在Linux下编译安装PETSc的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 1.1 安装oneAPI 参见&#xff1a;Get the Intel oneAPI Base Toolkit , Get the Intel oneAPI HPC Toolkit 1.2 安…

初学vue3心得

这几年经济形势不好,国外对程序员的要求一直都是全栈,国内也慢慢要求通才,作为一名后端算法工程师,最近在学vue3,以下是最近学习的一点心得: 所有的npm install命令前面一定要改成cnpm install,提高速度 在main.js中引入了import "element-plus/dist/index.css";这…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4:MHE表示能力

目录 1 MHE的表示能力2 基于Frobenius-范数的低秩逼近3 基于CE的低秩近似 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者&#xff1a;Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位&#xff1a;山东大学 代码&#xff1a;h…

SRS 服务器入门:实时流媒体传输的理想选择

在当今视频流媒体需求爆炸式增长的时代&#xff0c;如何选择一款高效、稳定且功能强大的流媒体服务器成为了许多开发者和企业关注的焦点。而 SRS&#xff08;Simple Realtime Server&#xff09;作为一款开源的流媒体服务器&#xff0c;以其卓越的性能和灵活的功能&#xff0c;…

IoC设计模式详解:控制反转的核心思想

前言&#xff1a;在软件开发中&#xff0c;设计模式是一种经过验证的、在特定场景下能有效解决问题的解决方案。控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09; 作为一种设计模式&#xff0c;通过让程序的控制流和对象管理反转&#xff0c;从而使得代码…

Swift White Hawkstrider

Swift White Hawkstrider 迅捷白色陆行鸟 Swift White Hawkstrider - Item - 魔兽世界怀旧服TBC数据库_WOW2.43数据库_70级《燃烧的远征》数据库 Kaelthas Sunstrider (1) <Lord of the Blood Elves> 凯尔萨斯逐日者. 掉落 [80圣骑士][Alonsus-加丁][诺森德冒险补给品…

2025 年前端新技术如何塑造未来开发生态?

开发领域&#xff1a;前端开发 | AI 应用 | Web3D | 元宇宙 技术栈&#xff1a;JavaScript、React、ThreeJs、WebGL、Go 经验经验&#xff1a;6 年 前端开发经验&#xff0c;专注于图形渲染和 AI 技术 开源项目&#xff1a;AI智简未来、晓智元宇宙、数字孪生引擎 大家好&#x…

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包&#xff1a;http://www.mysql.com 点击下载&#xff0c;拉到最下面&#xff0c;点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载&#xff0c;网络条件好可以点第一个&#xff0c;怕下着下着断了点第二个离线下载 双击下载好的安装…