划分子网在一定程度上缓解了因特网在发展中遇 到的困难。然而在 1992 年因特网仍然面临三个必 须尽早解决的问题,这就是: B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕! 因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。 整个 IPv4 的地址空间最终将全部耗尽。

1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。

特点:

CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。

CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。

IP 地址从三级编址(使用子网掩码)又回到了两级编址。

无分类的两级编址的记法是: IP地址 ::= {<网络前缀>, <主机号>}

CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。 CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。

128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。 这个地址块的起始地址是 128.14.32.0。 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。 128.14.32.0/20 地址块的最小地址:128.14.32.0 128.14.32.0/20 地址块的最大地址:128.14.47.255 全 0 和全 1 的主机号地址一般不使用。

路由聚合:

一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。

路由聚合也称为构成超网(supernetting)。

CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。

对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。

10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略。 10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为

构成超网:

前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。 这些 C 类地址合起来就构成了超网。 CIDR 地址块中的地址数一定是 2 的整数次幂。 网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。

最长前缀匹配  

使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。

应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。

网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。

最长前缀匹配又称为最长匹配或最佳匹配。

最长前缀匹配举例:

收到的分组的目的地址 D = 206.0.71.128 路由表中的项目:206.0.68.0/22 (ISP) 206.0.71.128/25 (四系)

查找路由表中的第 1 个项目:

第 1 个项目 206.0.68.0/22 的掩码 M 有 22 个连续的 1。

M = 11111111 11111111 11111100 00000000

因此只需把 D 的第 3 个字节转换成二进制

D AND (11111111 11111111 11111100 00000000) = 206.0.68.0/22 匹配

D AND (11111111 11111111 11111111 10000000) = 206.0.71.128/25 匹配

选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。

使用二叉线索查找路由表

当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。 IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

32 位的 IP 地址 唯一前缀

01000110 00000000 00000000 00000000 0100

01010110 00000000 00000000 00000000 0101

01100001 00000000 00000000 00000000 011

10110000 00000010 00000000 00000000 10110

10111011 00001010 00000000 00000000 10111

无分类编址 CIDR (构成超网)的更多相关文章

  1. 无分类编址(CIDR,Class Inter-Domain-Routing)

    CIDR全称是无分类域间路由选择,英文全称是Classless Inter-Domain Routing,大家多称之为无分类编址 CIDR的特点 (1)CIDR消除了传统的A类.B类和C类地址以及划分 ...

  2. 无分类编址(CIDR)构成超网

    CIDR(无分类域间路由选择) CIDR最主要有两个以下特点: 消除传统的A,B,C地址和划分子网的概念,更有效的分配IPv4的地址空间,CIDR使IP地址又回到无分类的两级编码.记法:IP地址::= ...

  3. 【转】IP协议详解之子网寻址、子网掩码、构造超网

    子网寻址 1. 从两级IP地址到三级IP地址 <1>. IP地址利用率有时很低. <2>. 给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏. <3> ...

  4. (转)IP协议详解之子网寻址、子网掩码、构造超网

    原文网址:http://www.cnblogs.com/way_testlife/archive/2010/10/05/1844399.html 子网寻址 1. 从两级IP地址到三级IP地址 < ...

  5. IP地址分类及CIDR划分方法

    IP地址的分类和表示有三种形式,1.分类的IP地址.2.子网划分.3.无分类编址CIDR 1.分类的IP地址 IP地址:: = {<网络号>,<主机号>} 不同的网络号和主机号 ...

  6. TCP/IP协议原理与应用笔记18:构成子网和超网

    1. 引言: (1)类别IP编址(Classful IP)的缺陷 • 固定的3种IP网络规模      C类地址:少于255台主机的网络      B类地址:介于255~65535台主机的网络     ...

  7. 第5章 IP地址和子网划分(4)_超网合并网段

    7. 超网合并网段 7.1 合并网段 (1)子网划分是将一个网络的主机位当网络位,来划分出多个子网.而多个网段合并成一个大网段,合并后的网段称为超网. (2)需求分析 某企业有一个网段,该网段有200 ...

  8. 初识IP基础分类、CIDR

    IP地址概念 IP(IPv4)地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~2 ...

  9. 有向无环图的应用—AOV网 和 拓扑排序

    有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...

随机推荐

  1. LPC1788的LCD接口驱动真彩屏

    #ifndef __LCD_H_ #define __LCD_H_ #include "common.h" #include "debugserial.h" # ...

  2. ASIHTTPRequest异步请求 分类: ios技术 2015-03-01 09:33 48人阅读 评论(0) 收藏

    我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...

  3. RTMP开发记录 测试服务器搭建篇

    nginx-rtmp-module 安装 最近在做直播功能,为了方便调试,在本地搭建一个rtmp server吧~ 我的配置环境是Ubuntu12.04 64 安装编译环境所需库 sudo apt-g ...

  4. Tessnet2图片识别

    验证码识别据说可以用C#图像识别类库Tessnet2来实现,Tessnet2源于目前Google维护的开源项目Tesseract2.本文将对此传说进行验证,含验证结果与验证方法. 1. 验证结果 —— ...

  5. Java的进制转换操作(十进制、十六进制、二进制)

    2014-05-06 17:34 吴文付 最近由于工作上的需要,遇到进制转换的问题.涉及到的进制主要是 十进制,十六进制,二进制中间的转换. 这里整理一下.具体的计划为:封装一个转换类,一个测试类. ...

  6. Java XML解析器

    使用Apache Xerces解析XML文档 一.技术概述 在用Java解析XML时候,一般都使用现成XML解析器来完成,自己编码解析是一件很棘手的问题,对程序员要求很高,一般也没有专业厂商或者开源组 ...

  7. EF dbcontext上下文的处理

    ,那么我们整个项目里面上下文的实例会有很多个,我们又遇到了多次,当我们在编程的时候遇到多的时候,一般我们就要想想能不能解决多这个问题. (2)这里我要说的是EF上下文怎么管理呢?很简单啦,就是要保证线 ...

  8. 大数据竞赛平台——Kaggle 入门

    Reference: http://blog.csdn.net/witnessai1/article/details/52612012 Kaggle是一个数据分析的竞赛平台,网址:https://ww ...

  9. Cassandra 单机入门例子——有索引

    入门例子: http://wiki.apache.org/cassandra/GettingStarted 添加环境变量并source生效,使得可以在任意位置执行cassandra/bin安装目录下的 ...

  10. php常用图片处理类

    <?php /** * 已知问题:1.在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,但PNG格式的图片无法透明.用imagecreate函数创建 ...