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

news2024/12/26 14:20:27

文章目录

  • 无类别域间路由(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 ↩︎

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

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

相关文章

【AUTOSAR标准规范的下载和阅读方法】

AUTOSAR标准规范的下载和阅读方法 文章目录 AUTOSAR标准规范的下载和阅读方法下载方法 下载方法 我们可以去AUTOSAR的官网进行AUTOSAR标准规范的下载: 官网:https://www.autosar.org/ 步骤如下图: 比如,如果我们想下载Classic P…

【PHP面试题82】system和exec是用来做什么的?有什么区别

文章目录 🚀一、前言,PHP中system和exec命令的作用🚀二、system()函数🚀三、exec()函数🚀四、区别和应用场景🔎4.1 使用system()函数的应用场景🔎4.2 使用exec()函数的应用场景🔎4.3…

视频云存储/安防监控EasyCVR视频汇聚平台分发rtsp流时,出现“用户已过期”提示该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

mysql并行效率提升

下面是一个并行读取mysql数据库表的测试程序,测试结果发现,读取10个表,1个个读取,和并行读取10个,效率一样,甚至并行读取还慢很多,这是为什么? con get_db_conn() results {} poo…

Mybatis 建立依赖失败:报错Dependency ‘mysql:mysql-connector-java:8.0.28‘ not found

Mybatis 建立依赖失败:报错Dependency ‘mysql:mysql-connector-java:8.0.28’ not found 解决办法: 写完依赖代码,直接重构,下载依赖。 图片: ![Alt](https://img-home.csdnimg.cn/images/20220524100510.png Mac 版本注意Ide…

1.Flink源码编译

目录 目录 1.1软件安装 1.1.1 jdk 1.1.2 maven 1.1.3 node js 1.2 下载flink源码 1.3 编译源码 1.4 idea打开flink源码 1.5 运行wordcount 1.1软件安装 软件地址 链接:https://pan.baidu.com/s/1ZxYydR8rBfpLCcIdaOzxVg 提取码:12xq 1.1.1 …

Python——列表(list)推导式

本文基于python3。 目录 1、Python推导式2、列表(list)推导式2.1、定义2.2、实际操作2.2.1、一个表达式,后面为一个 for 子句2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。2.2.3、一个表达式,后面为一个…

华纳云:ubuntu下nginx服务器如何配置

在Ubuntu操作系统上配置Nginx服务器涉及以下步骤。这里我将提供一个基本的配置示例,你可以根据自己的需求进行修改和定制。 安装 Nginx: 打开终端,并输入以下命令来安装 Nginx: sudo apt update sudo apt install nginx 启动 …

【剑指offer】【C语言】调整数组中奇偶数顺序_冒泡法+二分法_调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分

题目: 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例:{4,6,5,7,2,3…

2023.8 - java - Number类和Math类

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。 然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题&a…

时序分解 | MATLAB实现基于SVMD逐次变分模态分解的信号分解分量可视化

时序分解 | MATLAB实现基于SVMD逐次变分模态分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于SVMD逐次变分模态分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SVMD分解算法,分解结果可视化,MATLAB程序&#xff…

【微服务学习笔记】认识微服务

【微服务学习笔记】认识微服务 单体架构 分布式架构 微服务架构 SpringCloud 服务拆分和注意事项 服务拆分的案例demo 各个服务之间的数据库都是相互独立的,你不能直接访问对方的数据库,只能从一个服务像另外一个服务发起远程调用 在订单模块的服务中 …

【面试经典150题】移除元素·JavaScript版

题目来源 大致思路:遍历数组,如果遇到值为val的元素,使用数组最后一个元素替换它。详细过程: /*** param {number[]} nums* param {number} val* return {number}*/ var removeElement function(nums, val) {let i0,nnums.leng…

【数据库】表操作 习题总结

目录 关系建表 数据库sql的执行顺序 内外连接的写法 1.设计一张商品表 2.设计一张老师表 3.设计一张图书表 4.查询练习 5.查询练习 6.设计一个考勤系统 7.设计一个学校宿舍管理系统 8.设计一个车辆违章系统 9.设计一个学校食堂管理系统 10.有一张员工表emp&#xf…

Redis三种持久化方式详解

一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储,如固态磁盘(SSD)。Redis提供了一系列持久性选项。其中包括: RDB(快照):RDB持久性以指定的时间间隔执行数据集的时间点…

wazuh初探系列二 :Wazuh功能初步探知

目录 介绍 主动响应: 监控日志 "bin"目录用途: 告警信息: etc 目录中包含了以下主要的配置文件: ruleset:自带规则库,建议不改 rules目录: 解码器: 登录日志格式&#xff1a…

使用kubeadm方式快速部署一个K8S集群

目录 一、环境准备 二、环境初始化 三、在所有主机上安装相关软件 1、安装docker 2、配置k8s的yum源 3、安装kubelet、kubeadm、kubectl 四、部署Kubernetes Master 五、加入Kubernets Node 六、部署CNI网络插件 七、测试k8s集群 一、环境准备 我的是CentOS7系统&am…

C++Qt堆叠窗体的使用案例

本博文源于笔者最近学习的Qt,内容讲解堆叠窗体QStackedWidget案例,效果是选择左侧列表框中不同的选项时,右侧显示所选的不同的窗体。 案例效果 案例书写过程 控件都是动态创建的,因此.h文件需要创建控件,.cpp书写业务…

Android NDK JNI与Java的相互调用

一、Jni调用Java代码 jni可以调用java中的方法和java中的成员变量,因此JNIEnv定义了一系列的方法来帮助我们调用java的方法和成员变量。 以上就是jni调用java类的大部分方法,如果是静态的成员变量和静态方法,可以使用***GetStaticMethodID、CallStaticObjectMethod等***。就…

[SpringBoot3]Web服务

五、Web服务 基于浏览器的B/S结构应用十分流行。SpringBoot非常适合Web应用开发,可以使用嵌入式Tomcat、Jetty、Undertow或Netty创建一个自包含的HTTP服务器。一个SpringBoot的Web应用能够自己独立运行,不依赖需要安装的Tomcat、Jetty等。SpringBoot可以…