哈工大计算机网络课程网络层协议详解之:CIDR与路由聚集

news2024/9/25 7:19:49

哈工大计算机网络课程网络层协议详解之:CIDR与路由聚集

文章目录

  • 哈工大计算机网络课程网络层协议详解之:CIDR与路由聚集
    • CIDR与路由聚集
      • CIDR
      • 路由聚集

CIDR与路由聚集

CIDR

CIDR:无类域间路由(CIDR:Classless InterDomain Routing)

特点:

  • 消除传统的A类、B类、C类地址界限。
    • NetID+SubID—>统称为Network Prefix(可以是任意长度)
  • 融合了子网地址与子网掩码,方便子网划分。
    • 无类地址格式:a.b.c.d/x,其中x表示上面的网络前缀的长度

例如下图的IP地址

在这里插入图片描述

图中,红色部分就是网络前缀,蓝色部分就是主机号。上述IP地址,写成点分十进制表示的IP地址格式为:200.23.16.0/23。其中23表示的就是网络前缀的bit位数。

有了这种CIDR的表示形式后,子网和子网掩码的表示也更加方便了,比如下述子网与子网掩码:

子网:201.2.3.64

子网掩码:255.255.255.192

用CIDR来表示就是:201.2.3.64/26,26表示IP地址的前26位bit表示子网(网络前缀)。

无类域间路由(CIDR)的优点:

  • 提高IPv4地址空间分配效率。

    • 因为在传统的有类IP地址划分中,每个有类IP地址的网络号都是固定的,一个比较大的网络可能就分配一个A类地址,一个比较小的网络可能就分配一个C类地址,但是这两个网络可能都无法将主机号分配完,造成IP资源的浪费。
    • 有了CIDR之后,就可以跳脱固定有类IP地址的网络号范围,将任意bit位作为网络号,划分成任意大小的子网。这样就可以根据具体的子网规模来划分网络大小,提高IP资源的利用率。
  • 提高路由效率

    • CIDR可以将多个子网聚合为一个较大的子网。此时,路由器的转发表里就可以面向更大的子网来记录转发信息,而不是对于每一个小的子网。这样就减轻了路由表的存储、检索性能,提高路由效率。

    • CIDR的这种方式也叫做路由聚集
      在这里插入图片描述

路由聚集

下图给出一个路由聚集的示意图:

在这里插入图片描述

如图所示,右侧的网络包含了3个小的子网,这三个小的子网再通过左侧的路由器与Internet相连。此时,针对这三个小的子网,按照原先存储子网和子网掩码的方式,路由器的转发表里存储这这样的信息:

在这里插入图片描述

但是现在有了路由聚集和,我们可以将这个三个小的子网聚集成一个更大的子网来存储。由于这三个子网中最大的子网范围为223.1.0.0/23,因此用一个更大的子网来表示就是:223.1.0.0/22。这三个小的子网就相当于子网内部的继续划分,此时对内部的3个小的子网的路由,由内部的路由器再进行进一步区分。

有机构做过统计,在互联网的主干链路上,使用CIDR技术对路由表进行充分的路由聚合之后,可以减少路由器40%~70%的存储, 对路由检索效率的提升是非常有效的。

层级编址使得路由信息通告更高效,下图是一个路由通告的示意图:

在这里插入图片描述

图中的ISP(网络服务提供商),可能与多个子网/组织相连,为它们提供网络服务。当ISP向互联网上的更高层的路由器发布路由信息的时候,并不需要将每个子网一个一个发布,而是同样可以利用路由聚合,聚合成一个更大的子网, 比如图中的:200.23.16.0/20,来进行发布。

作为更高层的互联网中的路由器,只需要去判断如果一个IP数据报所要到达的地址满足200.23.16.0/20,就可以向这个子网中进行发送了。其他的一些ISP也可以同样进行路由聚合后,再进行发布。

需要注意的是,上述ISP能够进行路由聚合的前提是,这些子网/组织的IP地址是连续的,不然如果中间的某一些IP被划分到了另一个ISP的子网中,就可能出现传输错误了。比如下面这种情况:

在这里插入图片描述

其中200.23.18.0/23属于另一个ISP下的组织,如果按之前的路由聚合方式的话,就会出现IP地址发送错误的情况,也就出现了路由中通常所说的黑洞现象。

路由黑洞一般是在网络边界做汇总回程路由的时候产生的一种不太愿意出现的现象,就是汇总的时候有时会有一些网段并不在内网中存在,但是又包含在汇总后的网段中,如果在这个汇总的边界设备上同时还配置了缺省路由,就可能出现一些问题。这时,如果有数据包发向那些不在内网出现的网段(但是又包含在汇总网段)所在的路由器,根据最长匹配原则,并没有找到对应的路由,只能根据默认路由又回到原来的路由器,这就形成了环路,直到TTL值超时,丢弃。

为了避免黑洞现象的出现,又希望利用路由聚合所带来的优点,就需要在路由发布时,加上单独的特定子网IP信息,比如上图中的,除了发布199.32.0.0/16这个路由聚合后的子网IP,还要单独额外发布200.23.18.0/23来告知上层路由器,满足这个条件的目的IP,也需要发给我。

相当于对于这种子网不连续IP地址的情况,在路由聚合后,那些缺失的IP地址要单独告知上层路由器,单独存储,保证转发的正确性。

这种路由选择的方式,实际上,也就是路由器在检索时遵循的最长前缀匹配优先。 因为这些单独的IP地址,相较于路由聚合后的IP地址,匹配的位数更多,所以路由器会选择该目的IP的输出链路进行跳转。

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

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

相关文章

2.4C++派生类的函数

C 派生类的构造函数 在C中派生类的构造函数,必须调用基类的构造函数,来初始化从基类继承的数据成员。 具体有两种形式: 1、默认构造函数 2、带参数的构造函数 上面的我写的代码中,DerivedClass 构造函数的初始化列表中调用了 …

前缀和以及map混用,打开思路

补一个坑 目录 以力扣560为例: 力扣1248,优美子数组 力扣974 和可被 K 整除的子数组 力扣523.连续的子数组和 浅谈一下前缀和: 我们通过前缀和数组保存前 n 位的和,presum[1]保存的就是 nums 数组中前 1 位的和,也…

王道考研数据结构--3.双链表

目录 1.前言 2.代码难点 2.1双链表的插入和删除 3.代码函数 3.1双链表结构体定义 3.2双链表初始化函数 3.3双链表插入 3.4双链表节点删除 3.5双链表的遍历 4.全部代码 1.前言 日期:2023.6.21 书籍:2024年数据结构考研复习指导(王道…

【计算机视觉】CVPR 23 | 视觉 Transformer 全新学习范式!用长尾数据提升ViT性能

文章目录 一、导读二、介绍三、方法四、总结 一、导读 论文地址: https://arxiv.org/abs/2212.02015代码链接: https://github.com/XuZhengzhuo/LiVT二、介绍 在机器学习领域中,学习不平衡的标注数据一直是一个常见而具有挑战性的任务。近…

JDK自带的构建线程池的方式之newScheduleThreadPool

顾名思义newScheduleThreadPool是一个定时任务的线程池,这个线程池可以定时一定周期去执行任务,也可以实现延迟多久去执行任务一次。 newScheduleThreadPool方法实现展示 基于查看这个方法不难发现,该方法是基于ScheduledThreadPoolExecutor…

基于 Flink CDC 构建 MySQL 到 Databend 的 实时数据同步

这篇教程将展示如何基于 Flink CDC 快速构建 MySQL 到 Databend 的实时数据同步。本教程的演示都将在 Flink SQL CLI 中进行,只涉及 SQL,无需一行 Java/Scala 代码,也无需安装 IDE。 假设我们有电子商务业务,商品的数据存储在 My…

【深度学习】5-5 与学习相关的技巧 - 超参数的验证

超参数指的是,比如各层的神经元数量、batch大小、参数更新时的学习率或权值衰减等。如果这些超参数没有设置合适的值,模型的性能就会很差。 那么如何能够高效地寻找超参数的值的方法 验证数据 之前我们使用的数据集分成了训练数据和测试数据&#xff0c…

WorkPlus AI助理正式上线!为企业打造定制化的AI私有助理

毋庸置疑,ChatGPT的应用充满无限的想象空间。但对于企业来说,使用时面临的最核心的问题就是“存在回答准确性不足”的弊端。那企业都想要通过GPT构建内容生态,在数字化时代保持行业领先地位。 企业都想要结合行业属性、业务需求等自身特点打…

【Flutter】Flutter 数据存储 Hive 的简要使用说明

文章目录 一、前言二、Hive 包的版本号三、Hive 简介1. Hive 是什么?2. Hive 的特点 四、Hive 的基本使用1. Hive 的安装2. Hive 的初始化3. 创建和打开 Hive 数据库4. 数据的存储和读取5. 数据的删除 五、总结 一、前言 🎉想要精通 Flutter&#xff0c…

是时候扔掉cmder, 换上Windows Terminal

作为一个Windows的长期用户,一直没有给款好用的终端,知道遇到了 cmder,它拯救一个习惯用Windows敲shell命令的人。 不用跟我安利macOS真香!公司上班一直用macOS,一方面确实更加习惯windows下面学习, 另一方面是上课需要…

Phantomjs实现后端将URL转换为图片

PhantomJS简介 PhantomJS is a command-line tool. – 其实就是一个命令行工具 PhantomJS的下载地址: Windows:phantomjs-2.1.1-windows.zip Linux:phantomjs-2.1.1-linux-x86_64.tar.bz2;phantomjs-2.1.1-linux-i686.tar.bz2 MacOS:phantomjs-2.1.1-macosx.zip…

西门子Mendix 入门 2

今天还是一直下载失败,就算成功了,速度也只有几K,于是使用翻墙软件,最终下载成功 下载成功后重新点击edit in studio pro 出现如下页面 首先先关闭安全性 进行添加任务和管理任务 点击上方绿色箭头后点击View App 出现如下页面…

ESP32-WROOM-32 UDP单播透传AT指令例程

ESP32-WROOM-32 AT指令配置TCP通讯 ESP32-WROOM-32前言固件烧录测试AT指令UDP单播通讯\透传ESP32配置SoftAPESP32与手机间的UDP通讯与透传普通传输模式演示UDP透传演示 ESP32-WROOM-32 前言 上次演示了ESP32与手机的三种TCP连接与数据传输方法,现在接着上一篇“ESP…

第二章 数据结构(一)——链表,栈和队列与kmp

文章目录 链表栈和队列表达式运算 单调栈单调队列kmp链表练习题826. 单链表827. 双链表 栈和队列练习题828. 模拟栈3302. 表达式求值829. 模拟队列830. 单调栈154. 滑动窗口 kmp练习题831. KMP字符串 kmp虐我一下午 链表 若用链式结构实现链表,效率低,因…

软件开发流程

目录 软件软件开发流程的演变 瀑布模型敏捷模型 XPSCRUMDevOps 1.软件 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。 软件可以分为两种主要类型: 独立软件:独立软件是一种完整的应用程序,可以直接在计算机或移动设备上…

Android系统安全 — 6.2 Ethernet安卓架构

1. Android Ethernet架构介绍 整个Ethernet系统架构如下图所示: 以太网服务(EthernetService)的启动与注册流程;应用层调用使能ethernet功能的方法流程来分析,从应用层如何将指令一步一步传到底层kernel;…

SAAS-HRM系统概述与搭建环境

SAAS-HRM系统概述与搭建环境 学习目标: 理解SaaS的基本概念 了解SAAS-HRM的基本需求和开发方式掌握Power Designer的用例图 完成SAAS-HRM父模块及公共模块的环境搭建完成企业微服务中企业CRUD功能 初识SaaS 云服务的三种模式 IaaS(基础设施即服务…

使用Windows To Go工具制作你的U盘系统【含下载Windows10系统镜像】亲测已成功23.06.21

WinToGo是一款辅助工具:专为能够让你将系统装进U盘,移动硬盘里,让你在任意电脑都能运行U盘里装的系统! 一、下载,安装“Windows To Go”工具 1、下载Windows To Go工具 口袋系统WinToGo: 安装Win 10到U盘 2、双击Wi…

从0到1精通自动化测试,pytest自动化测试框架,assert断言(七)

目录 一、前言 二、assert 三、异常信息 四、异常断言 五、常用断言 一、前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符…

三分钟学习一个python小知识2-----------我的对python的类(Class)和对象(Object)的理解

文章目录 一、类(Class)和对象(Object)是什么?二、Python类和对象的实现1.定义类2.创建对象3.调用类的属性和方法 三、利用python实现了一个动物的类(Animal)和其两个子类(Cat和Dog&…