无类别域间路由(Classless Inter-Domain Routing, CIDR):理解IP网络和子网划分(传统的IP地址类ABCDE:分类网络)

文章目录

  • 无类别域间路由(CIDR):理解IP网络和子网划分
    • 引言
    • 传统的IP地址类
      • 关于“IP地址的浪费”
    • IP地址与CIDR
      • IP地址概述
      • 网络号与主机号
      • CIDR记法(`网络 = 网络地址/子网掩码`)
      • 网络和广播地址
    • CIDR的优势
      • 减少路由表项
      • 缓解IPv4地址耗尽
      • CIDR地址分配示例
    • 结论
    • 参考文献

在这里插入图片描述

1

无类别域间路由(CIDR):理解IP网络和子网划分

引言

无类别域间路由(Classless Inter-Domain Routing, CIDR)是一种用于在互联网上创建独立的IP地址分配策略的方法。这种方法允许更细粒度的IP地址分配,从而提供了比传统的IP地址类A、B、C更高效的使用2

传统的IP地址类

在早期的互联网历史中,IP地址被分为五个类别:A、B、C、D和E。每一种类别都有一个特定的地址范围,并且被设计用于特定大小的网络。这就是所谓的"分类网络"(Classful Network)。

  • 类A(Class A):这个类别的网络可以支持超过1600万个主机(设备)。类A的地址从1.0.0.0到126.0.0.0,其中前8位(即第一个数字)表示网络部分,剩余24位表示主机部分。

  • 类B(Class B):类B网络可以支持最多65534个主机。类B地址从128.0.0.0到191.255.0.0,其中前16位(即前两个数字)表示网络部分,剩余的16位表示主机部分。

  • 类C(Class C):类C网络可以支持最多254个主机。类C地址从192.0.0.0到223.255.255.0,其中前24位(即前三个数字)表示网络部分,剩余的8位表示主机部分。

类D和类E不用于常规的网络操作。类D地址被保留用于多播,而类E地址被保留作为未来使用或实验性质的用途。

然而,这种分类方法很快显得太过死板,无法适应快速增长和变化的互联网需求。比如,如果一家公司需要超过254台但少于65534台的设备,那么他们只能申请一个类B网络,这就浪费了大量的IP地址。这也是后来发展出CIDR的原因,它允许更灵活的IP地址分配。

关于“IP地址的浪费”

IP地址的浪费主要是由于传统的IP地址分配方式引起的。在CIDR(无类别域间路由)出现之前,IP地址是按照固定的类A、B、C来分配的。

  • 类A网络有16,777,214个可用的IP地址
  • 类B网络有65,534个可用的IP地址
  • 类C网络有254个可用的IP地址

如果一家公司需要超过254台但少于65534台的设备,按照传统的分配方式,他们只能申请一个类B网络。即使他们只使用了其中的一部分IP地址,剩余的IP地址也不能被其他人使用,这就导致了大量IP地址的浪费。

而CIDR通过变长子网掩码(VLSM)可以更灵活地分配IP地址,从而减少了IP地址的浪费。例如,对于需要超过254台但少于65534台设备的公司,可以将一个类B网络分成多个小网络,每个小网络的大小刚好满足公司的需求,剩余的IP地址可以分配给其他需要的人,从而实现IP地址的有效利用。

IP地址与CIDR

IP地址概述

互联网协议地址(Internet Protocol address,IP地址)是指分配给每个连接到互联网的设备的数字标签。在最常见的IPv4中,一个IP地址通常表示为四个十进制数,每个数位介于0和255之间,以点(.)分隔,例如192.0.2.0。

网络号与主机号

在这里插入图片描述

3

CIDR记法(网络 = 网络地址/子网掩码

CIDR在表示IP地址和其相关网络时,会采用一个"斜线"记法。例如,192.0.2.0/24就代表了一个包含256个IP地址的网络,其中192.0.2.0是网络的基础地址,24表示子网掩码的位数,即这个网络中有24位是网络前缀,剩下的8位是用于该网络内部的主机。

表示一个网络 192.0.2.0/24
这个网络的网络部分 (192.168.2).x
这个网络的主机部分 192.0.2.(x)

ip_network = '192.0.2.0/24'
base_address = ip_network.split('/')[0]
subnet_mask = int(ip_network.split('/')[1])

网络和广播地址

在一个CIDR块中,有两个地址不能被赋予主机:网络地址和广播地址。网络地址是CIDR块中的第一个地址,广播地址是最后一个。例如,在192.0.2.0/24中,192.0.2.0是网络地址,192.0.2.255是广播地址。

network_address = '192.0.2.0'
broadcast_address = '192.0.2.255'

CIDR的优势

减少路由表项

CIDR的引入极大地减少了路由表项的数量。在CIDR出现之前,每一个IP地址都需要在路由表中单独列出。但是,通过将IP地址组织成CIDR块,可以使用一个表项来表示整个块,从而显著降低了路由表的大小4

缓解IPv4地址耗尽

通过更灵活的分配IP地址,CIDR也有助于缓解IPv4地址空间的耗尽问题。在CIDR出现之前,IP地址只能按照固定大小的块(类A、B或C)进行分配。这种方式在处理小型网络时浪费了大量的地址。然而,CIDR允许任何大小的地址块被分配,从而使得地址空间的使用变得更加高效5

CIDR地址分配示例

例如,如果一个公司需要500个IP地址,按照早期的策略,他们将会被分配一个类B地址,即使他们只使用了其中的一小部分,其余的大约65000个地址将无法被其他组织使用,从而造成浪费。

然而,在CIDR中,地址可以按照任何大小进行划分。对于上述例子,我们可以为这家公司分配一个/23(包含512个地址)的网络,或者两个/24网络(每个包含256个地址)。这种方式下,公司能够得到接近他们所需数量的地址,同时也极大地减少了未使用地址的浪费。

# Example of allocating one /23 networks
network1 = '192.0.2.0/23',地址范围从192.0.2.0 - 192.0.3.255,共512个地址

# Or allocate two /24 network
network1 = '192.0.2.0/24',地址范围从192.0.2.0 - 192.0.2.255,共256个地址
network2 = '192.0.6.0/24',地址范围从192.0.6.0 - 192.0.6.255,共256个地址

这种灵活的地址分配策略使得IPv4地址空间的使用变得更加高效,并且缓解了因为过度分配而导致的IPv4地址耗尽问题。

结论

CIDR是一种强大且灵活的工具,它使得IP地址的分配和管理变得更加简单和高效。无论是在减少路由表的大小,还是在缓解IPv4地址空间的耗尽方面,CIDR都起到了重要的作用。因此,对于任何需要理解或管理IP地址的人来说,理解CIDR都是非常重要的。

参考文献


  1. 参考文章:计算机网络(第四章)二 ↩︎

  2. Wikipedia: Classless Inter-Domain Routing ↩︎

  3. 参考文章:一文完全理解IP ↩︎

  4. How CIDR Works ↩︎

  5. RFC 4632 - Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan ↩︎

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

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

相关文章

Android 面试之Glide做了哪些优化?

前言 Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客。 但是Glide的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点.…

0101读写分离测试-jdbc-shardingsphere-中间件

文章目录 1 前言2、创建SpringBoot程序2.1、创建项目2.2、添加依赖2.3、生成实体类、service与Mapper1.5、配置读写分离 2、测试2.1、读写分离测试2.2、事务测试2.3、负载均衡测试 结语 1 前言 shardingshpere-jdbc定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的…

文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题

四、请用go语言,证明:RANDOMIZED-QUICKSORT 期望运行时间是 Ω(nlgn)。 文心一言: 首先,为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlg n),我们需要证明在最坏的情况下,该算法的运行时间是O(nlg n)。然后&…

elelementui组件

一、按钮 1、按钮样式 使用type、plain、round和circle属性来定义 Button 的样式。 2、主要代码 <el-row><el-button>默认按钮</el-button><el-button type"primary">主要按钮</el-button><el-button type"success">…

antd5源码调试环境启动(MacOS)

将源码下载至本地 这里antd5 版本是5.8.3 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提&#xff1a;安装python3、node版本18.14.0(这是本人当前下载的版本&#xff09; python3安装教程可参考&#xff1a;https://…

06-微信小程序-注册程序-场景值

06-微信小程序-注册程序 文章目录 注册小程序参数 Object object案例代码 场景值场景值作用场景值列表案例代码 注册小程序 每个小程序都需要在 app.js 中调用 App 方法注册小程序实例&#xff0c;绑定生命周期回调函数、错误监听和页面不存在监听函数等。 详细的参数含义和使…

框架分析(2)-React

框架分析&#xff08;2&#xff09;-React 专栏介绍React核心思想关键特性和功能组件化开发单向数据流JSX语法强大的生态系统 优缺点分析优点缺点 专栏介绍 link 主要对目前市面上常见的框架进行分析和总结&#xff0c;希望有兴趣的小伙伴们可以看一下&#xff0c;会持续更新的…

树莓派和windows之间文件传输

方案一&#xff1a;FileZilla 在电脑上下载FileZilla软件并打开&#xff0c;输入配置信息&#xff0c;用户名/密码、树莓派的IP地址,点击“快速连接” 方案二&#xff1a;samba 树莓派安装 samba 软件 sudo apt-get install samba samba-common-bin 修改配置文件 / etc /samba…

Python搭建http文件服务器实现手机电脑文件传输功能

第一种代码的界面如下&#xff1a;&#xff08;有缺点&#xff0c;中文乱码&#xff09; # !/usr/bin/env python3 # -*- coding:utf-8 _*-"""Simple HTTP Server With Upload. python -V3.6 This module builds on http.server by implementing the standard G…

【Python原创设计】基于Python Flask 机器学习的全国+上海气象数据采集预测可视化系统-附下载链接以及详细论文报告,原创项目其他均为抄袭

基于Python Flask 机器学习的全国上海气象数据采集预测可视化系统 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 在信息科技蓬勃发展的当代&#xff0c;我们推出了一款基于Python Flask的全国上海气象数…

[Machine Learning] decision tree 决策树

&#xff08;为了节约时间&#xff0c;后面关于机器学习和有关内容哦就是用中文进行书写了&#xff0c;如果有需要的话&#xff0c;我在目前手头项目交工以后&#xff0c;用英文重写一遍&#xff09; &#xff08;祝&#xff0c;本文同时用于比赛学习笔记和机器学习基础课程&a…

<数据结构与算法>二叉树堆的实现

目录 前言 一、树的概念及结构 1 树的概念 2 树的相关概念 二、二叉树的概念及结构 1.二叉树的概念 2. 特殊的二叉树 3. 二叉树的性质 4.二叉树的存储结构 三、二叉树的顺序结构及实现 1.堆的性质 2.堆的插入 3.堆的实现 堆的结构体 HeapInit 初始化 HeapPush 插入 HeapPop 删…

2023-8-22 模拟栈

题目链接&#xff1a;模拟栈 #include <iostream>using namespace std;const int N 100010;int m; int stk[N], tt;int main() {cin >> m;while(m--){string op;int x;cin >> op;if(op "push") {cin >> x;stk[tt] x;}else if(op "…

ICCV23 | Ada3D:利用动态推理挖掘3D感知任务中数据冗余性

​ 论文地址&#xff1a;https://arxiv.org/abs/2307.08209 项目主页&#xff1a;https://a-suozhang.xyz/ada3d.github.io/ 01. 背景与动因 3D检测(3D Detection)任务是自动驾驶任务中的重要任务。由于自动驾驶任务的安全性至关重要(safety-critic)&#xff0c;对感知算法的延…

量子计算对信息安全的影响:探讨量子计算技术对现有加密方法和信息安全基础设施可能带来的颠覆性影响,以及应对策略

第一章&#xff1a;引言 随着科技的迅猛发展&#xff0c;量子计算作为一项颠覆性的技术正逐渐走入我们的视野。量子计算以其强大的计算能力引发了全球科技界的广泛关注。然而&#xff0c;正如硬币的两面&#xff0c;量子计算技术所带来的不仅仅是计算能力的巨大飞跃&#xff0…

8.深浅拷贝和异常处理

开发中我们经常需要复制一个对象。如果直接用赋值会有下面问题: 8.1 浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝&#xff1a;拷贝的是地址 常见方法: 1.拷贝对象&#xff1a;Object.assgin() / 展开运算符{…obj} 拷贝对象 2.拷贝数组&#xff1a;Array.prototype.con…

添加了.gitignore 文件,git status 的时候还是显示修改文件

1. 用IAR 软件编译STM32 工程&#xff0c;IAR 会生成很多中间文件&#xff0c;这些文件是不需要加入到git 版本管理里面的 2. .gitignore 文件位置需要放对应目录才会起作用&#xff0c;递归起作用的 3. 如果 .gitignore文件中指定的文件或目录仍然显示在git status的输出中&a…

「UG/NX」Block UI 指定点SpecifyPoint

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

Java课题笔记~JSON

3.1 概述 概念&#xff1a;JavaScript Object Notation。JavaScript 对象表示法. 如下是 JavaScript 对象的定义格式&#xff1a; {name:"zhangsan",age:23,city:"北京" } 接下来我们再看看 JSON 的格式&#xff1a; {"name":"zhangsa…

家庭装修设计施工团队进度小程序开发演示

传统装修企业获客难、获客成本高、竞争激烈&#xff0c;我们也是基于整个装修市场整体的需求&#xff0c;从用户角度出发帮助装修设计企业设计制作这款小程序。可以让传统装修企业搭上互联网的快车&#xff0c;形成线上获客裂变&#xff0c;降低获客成本提高客户信任度和签单率…