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

什么是CIDR技术? 它是如何解决路由缩放问题的

什么是CIDR技术? 它是如何解决路由缩放问题的

    • 一. 什么是 CIDR?
    • 二. CIDR 是如何工作的?
      • 1. 高效地址分配
      • 2. 路由聚合(Route Aggregation)
      • 3. 精确满足需求
    • 三. CIDR 的计算详解
      • 1. 子网掩码计算
      • 2. 地址范围计算
      • 3. 可用 IP 地址计算
    • 四. CIDR 如何解决路由缩放问题?
    • 五. 总结

前言

点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。

作者:神的孩子都在歌唱

大家好呀,我是 神唱 ,随着互联网规模的快速扩张,路由表的膨胀问题日益严重。想象一下,成千上万条路由记录堆积在路由器中,效率会如何?幸好,无类别域间路由(CIDR,Classless Inter-Domain Routing)技术为我们带来了新的思路。

一. 什么是 CIDR?

CIDR 是一种灵活的 IP 地址分配技术,用于给用户分配 IP地址 以及在 互联网 上有效地 路由IP数据包 的对IP地址进行归类的方法。

CIDR 地址的格式是这样的:

192.168.1.0/24
  • 192.168.1.0 是网络地址。
  • /24 表示网络前缀长度,也就是前 24 位用来标识网络,剩余的位数标识主机。

为什么需要 CIDR?

  1. 解决地址浪费:传统的分类方式不够灵活,容易导致地址块分配不匹配实际需求。
  2. 简化路由表:通过路由聚合,CIDR 将多个地址块整合成一个更大的块,减少路由条目。

二. CIDR 是如何工作的?

1. 高效地址分配

CIDR 的灵活性允许根据实际需求分配地址块。例如,一个小型企业只需 32 个 IP 地址(/27),无需浪费更多资源。

举例:一个网络分配192.168.1.0/27,前 27 位用于标识网络,剩下的 5 位标识主机。该地址块包含 32 个 IP 地址(30 个可用 IP,网络地址和广播地址各占 1 个)。

2. 路由聚合(Route Aggregation)

CIDR 的路由聚合功能大幅减少路由表规模。多个小网络可以被合并成一个大块,从而简化记录。

举例:假设 ISP 分配了以下地址块:

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

CIDR 可以将其聚合为:

192.168.0.0/22

这样,路由器只需要记录一条路由,而不是四条。

3. 精确满足需求

CIDR 通过灵活的前缀划分,避免了传统分类方法中地址分配过多或过少的问题。例如,小型公司需要 16 个 IP 地址时,可以直接分配/28,而不需要浪费一个完整的/24地址块。

三. CIDR 的计算详解

1. 子网掩码计算

CIDR 前缀与子网掩码密切相关。

例子

192.168.1.0/24

前缀 /24 对应的子网掩码是:

255.255.255.0

二进制形式为:

11111111.11111111.11111111.00000000

子网掩码中的 1 表示网络部分,0 表示主机部分。

2. 地址范围计算

每个 CIDR 块的网络范围由其前缀长度决定。

例子

192.168.1.0/24
  • 网络部分:前 24 位。
  • 主机部分:后 8 位。

将地址转换为二进制:

192.168.1.0 -> 11000000.10101000.00000001.00000000

前 24 位锁定后,主机部分可以变化的范围是:

00000000 到 11111111

因此,该网络的地址范围是:

192.168.1.0 - 192.168.1.255

维基百科有以下案例

神的孩子都在歌唱

如果我们指定一个CIDR块为10.10.1.32/27,则根据CIDR比特位比较,10.10.1.44是属于该块,但10.10.1.90则不是。

3. 可用 IP 地址计算

CIDR 的前缀长度决定了主机地址部分的位数,从而确定一个地址块中有多少可用 IP。

公式

可用 IP 地址数 = 2^(32 - 前缀长度) - 2

减去的两个地址分别是网络地址和广播地址。

例子

/24 前缀:

可用地址数 = 2^(32 - 24) - 2 = 256 - 2 = 254

/28 前缀:

可用地址数 = 2^(32 - 28) - 2 = 16 - 2 = 14

四. CIDR 如何解决路由缩放问题?

CIDR 的核心价值在于:

  1. 减少路由条目:通过聚合多个小网络,减少路由表记录。
  2. 提高路由效率:条目越少,路由器匹配速度越快。
  3. 灵活地址分配:满足多样化需求,避免地址浪费。

示例场景
一个企业网络需要:

  • 50 个 IP -> 分配 192.168.1.0/26
  • 30 个 IP -> 分配 192.168.1.64/27
  • 14 个 IP -> 分配 192.168.1.96/28

通过 CIDR,192.168.1.0/24 可以满足需求,无需浪费多余地址。

五. 总结

CIDR 技术是互联网路由历史上的一次飞跃。它通过灵活的地址划分和路由聚合,让我们得以构建高效而稳定的网络。无论是简化路由表还是优化地址分配,CIDR 都展现了其强大的能力。

作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客连接

相关文章:

什么是CIDR技术? 它是如何解决路由缩放问题的

什么是CIDR技术? 它是如何解决路由缩放问题的 一. 什么是 CIDR?二. CIDR 是如何工作的?1. 高效地址分配2. 路由聚合(Route Aggregation)3. 精确满足需求 三. CIDR 的计算详解1. 子网掩码计算2. 地址范围计算3. 可用 IP…...

Unity URP 获取/设置 Light-Indirect Multiplier

Unity URP 获取/设置 Light-Indirect Multiplier 他喵的代码的字段名称叫:bounceIntensity ~~~~~~...

用Python和Tkinter标准模块建立密码管理器

用Python和Tkinter标准模块建立密码管理器 创建一个简单的密码管理器应用程序,帮助用户存储和管理他们的密码。使用Python的tkinter模块来创建一个图形用户界面(GUI)。 本程序支持 添加、查看、搜索、复制、修改、删除 功能。 本程序使用 …...

PyQt5菜单加多页签实现

pyqt tabs标签_哔哩哔哩_bilibili 代码实现 # coding:utf-8 import sys from PyQt5.QtCore import Qt from PyQt5 import QtCore,QtWidgets from PyQt5.QtWidgets import QApplication,QWidget from QhTabs01 import Ui_Form from PyQt5.Qt import *class QhLiangHuaGUI(QWidg…...

关注搜索引擎蜘蛛压力

以前在建站的时候,他们说蜘蛛来抓取的频率越多越好,因为蜘蛛来抓取说明了网站更新速度快,受搜索引擎的欢迎,但是在最近的网站统计中,发现很多蜘蛛爬取的频次非常的高,比如有的蜘蛛一天能来网站几万次&#…...

Python3 OS模块中的文件/目录方法说明三

一. 简介 前面文章简单学习了Python3中 OS模块中的文件/目录的部分函数。 本文继续来学习 OS模块中文件、目录的操作方法:os.fdopen()方法、os.fpathconf() 方法、os.fstat() 方法、os.fstatvfs() 方法。 二. Python3 OS模块中的文件/目录方法说明三 1. os.fdop…...

2024年终总结:技术成长与突破之路

文章目录 前言一、技术成长:菜鸟成长之路1. 学习与实践的结合2. 技术分享与社区交流 二、生活与事业的平衡:技术之外的思考1. 时间管理与效率提升2. 技术对生活的积极影响 三、突破与展望:未来之路1. 技术领域的突破2. 未来规划与目标 四、结…...

mysql-06.JDBC

目录 什么是JDBC: 为啥存在JDBC: JDBC工作原理: JDBC的优势: 下载mysql驱动包: 用java程序操作数据库 1.创建dataSource: 2.与服务端建立连接 3.构造sql语句 4.执行sql 5.关闭连接,释放资源 参考代码: 插…...

使用python调用JIRA6 进行OAuth1认证获取AccessToken

Jira配置应用程序链接 1) 创建应用程序链接 登录 JIRA 管理后台。转到 Administration > Applications > Application Links。在输入框中输入外部应用程序的 URL(例如 GitLab 或自定义应用),然后点击 Create new link。 2) 配置 Con…...

HTML5使用favicon.ico图标

目录 1. 使用favicon.ico图标 1. 使用favicon.ico图标 favicon.ico一般用于作为网站标志,它显示在浏览器的地址栏或者标签上 制作favicon图标 选择一个png转ico的在线网站,这里以https://www.bitbug.net/为例。上传图片,目标尺寸选择48x48&a…...

黑龙江锅包肉:酸甜香酥的东北经典

黑龙江锅包肉:酸甜香酥的东北经典 黑龙江锅包肉,作为东北菜的代表之一,尤其在黑龙江省哈尔滨市享有极高的声誉。这道美食不仅承载着丰富的历史文化内涵,更以其鲜明的地域特色,成为了黑龙江省乃至整个东北地区的标志性菜肴。 历史渊源 锅包肉的历史可以追溯到清朝光绪年间,其…...

Unity阿里云OpenAPI 获取 Token的C#【记录】

获取Token using UnityEngine; using System; using System.Text; using System.Linq; using Newtonsoft.Json.Linq; using System.Security.Cryptography; using UnityEngine.Networking; using System.Collections.Generic; using System.Globalization; using Cysharp.Thr…...

winfrom项目,引用EPPlus.dll实现将DataTable 中的数据保存到Excel文件

最近研究不安装office也可以保存Excel文件,在网上查询资料找到这个方法。 第一步:下载EPPlus.dll文件(自行去网上搜索下载) 第二步:引用到需要用的项目中,如图所示: 第三步:写代码…...

【C++基础】多线程并发场景下的同步方法

如果在多线程程序中对全局变量的访问没有进行适当的同步控制(例如使用互斥锁、原子变量等),会导致多个线程同时访问和修改全局变量时发生竞态条件(race condition)。这种竞态条件可能会导致一系列不确定和严重的后果。…...

C语言#define TSLP0 (TSLP_Regdef *)TSENSORO BASE ADDR)的含义?

在C语言中,#define指令用于定义宏。宏是一种预处理器指令,它允许你为代码片段指定一个名称,以便在编译时进行替换。 从你的描述来看,似乎你想定义一个名为 TSLP0 的宏,其值是某个寄存器地址。假设 TSENSORO_BASE_ADDR…...

微信小程序wxs实现UTC转北京时间

微信小程序实现UTC转北京时间 打脸一刻:最近在迭代原生微信小程序,好一段时间没写原生的,有点不习惯; 咦,更新数据咋不生效呢?原来还停留在 this.xxx; 哟,事件又没反应了&#xff1f…...

提示词的艺术 ---- AI Prompt 进阶(提示词框架)

提示词的艺术 ---- AI Prompt 进阶(提示词框架) 写在前面 上周发布了一篇《提示词的艺术----AI Prompt撰写指南》,旨在帮助读者理解提示词的作用,以及简单的提示词撰写指南。本篇作为进阶内容,将给出常用的提示词框架…...

WPF常见面试题解答

以下是WPF(Windows Presentation Foundation)面试中常见的问题及解答,涵盖基础概念、高级功能和实际应用,帮助你更好地准备面试: 基础概念 什么是WPF? WPF是微软开发的用于构建桌面应用程序的UI框架&#x…...

TypeScript 学习

TypeScript 类型 准备本地环境 初始化 TypeScript 项目, 生成 package.json 文件: npm init -y安装 typescript: yarn add typescript -D初始化 TypeScript 配置文件: npx tsc--init输出: Created a new tsconfig.json with:target: es2016module: commonjsstrict: true…...

24_游戏启动逻辑梳理总结

首先这个项目从游戏根入口GameRoot.cs的初始化开始 分为 服务层初始化Svc.cs 与 业务系统层初始化Sys.cs 而服务层 分为 资源加载服务层ResSvc.cs 与 音乐播放服务层AudioSvc.cs 而在 资源加载服务层ResSvc.cs中 初始化了 名字的 配置文件 而音乐播放服务层AudioSvc.cs 暂时没…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节&#xff08;如内存地址值没有用二进制&#xff09; 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么&#xff1a;保存在堆中一块区域&#xff0c;同时在栈中有一块区域保存其在堆中的地址&#xff08;也就是我们通常说的该变量指向谁&…...