zoukankan      html  css  js  c++  java
  • CIDR地址分类

    CIDR(Classless Inter Domain Routing)改进了传统的IPv4地址分类。传统的IP分类将IP地址直接对应为默认的分类,从而将Internet分割为网络。CIDR在路由表中增加了子网掩码(subnet masking),从而可以更细分网络。利用CIDR,我们可以灵活的将某个范围的IP地址分配给某个网络。
     
    1) IP地址分类
     
    在IP接力赛中,我提到,IP地址可以分为如下几类:
     
    IP class    From          To                 Subnet Mask
     
    A           1.0.0.0       126.255.255.255    255.0.0.0
     
    B           128.0.0.0     191.255.255.255    255.255.0.0
     
    C           192.0.0.0     223.255.255.255    255.255.255.0
     
    这是最初的IPv4地址分类设计。一个IPv4地址总共有32位,可以分为网络(network)和主机(host)两部分。子网掩码(subnet mask)是用于表示哪些位代表了网络部分。比如如下subnet mask 255.0.0.0的二进制表示为:
     
    11111111 00000000 00000000 00000000
     
    它的前八位为1,所以表示IP地址的前八位为网络部分。而后面的24位代指该网络的各个主机。一个A类网络可以有224台主机,也就是16777216。由于IPv4地址已经分好了类,所以当我们拿到一个IP地址,我们就可以通过上面查到它的子网掩码。(B类,216; C类,28)
     
    2) 传统路由表
     
    IP分类的方便了IP包的接力。IP包到达某个路由器后,会根据该路由器的路由表(routing table),来决定接力的下一站。一个传统的路由表看起来是这样的:
     
    Destination        Gateway             Iface
     
    199.165.145.0      0.0.0.0             eth0
     
    199.165.146.0      0.0.0.0             eth1
     
    0.0.0.0            199.165.146.8       eth1
     
    该路由表代表的网络拓扑如下:
     
     
    由于IP分类,我们不需要记录subnet mask。当我们要前往199.165.146.17时,我们已经知道这台主机位于一个C类地址,所以它的子网掩码是255.255.255.0,也就是说199.165.146代表了网络,17代表了主机。
     
    3) CIDR路由表
     
    然而,由于默认分类,造成了网络只能按照A、B、C的方式存在。假设一个网络(比如MIT的网络)分配了一个A类地址,那么该网络将容许16777216个主机。如果该网络无法用完这些IP地址,这些IP地址将无法被其他网络使用。再比如上面的网络,199.165.145必须作为一个整个的网络存在。如果我们只有10台主机,那么将会有200多个IP地址被浪费。CIDR的本质是在路由表中加入子网掩码,并根据该列信息对网络进行分割,而不是根据默认的A,B,C进行分割。比如:
     
    Destination        Gateway             Genmask             Iface
     
    199.165.145.254    0.0.0.0             255.255.255.254     eth2
     
    199.165.145.0      0.0.0.0             255.255.255.0       eth0
     
    199.165.146.0      0.0.0.0             255.255.255.0       eth1
     
    0.0.0.0            199.165.146.8       0.0.0.0             eth1
     
    根据路由表的第一条记录,
     
    199.165.145.254 (IP address) : 11000111 10100101 10010001 11111110
     
    255.255.255.254 (subnet mask): 11111111 11111111 11111111 11111110 (31个1,1个0)
     
    通过子网掩码可以知道,前31位表示网络,最后一位表示主机。子网掩码总是有连续多个1组成,比如上面的31个1。所以也可记为199.165.145.254/31,来同时表示IP地址和子网掩码。
     
    路由器将原来的199.165.145网络中的一部分分割出来。这一网络可以容纳两台电脑,也就是199.165.145.254和199.165.145.255。这个网络对应网卡是eth2。当有IP包通向这两个IP地址时,会前往eth2,而不是eth0。
     
    网络拓扑如下:
     
     
    利用CIDR,我们可以将IP地址根据需要进行分割,从而不浪费IP地址。
     
  • 相关阅读:
    最全面的Java面试大纲及答案解析(建议收藏)
    开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~
    肝一波 ~ 手写一个简易版的Mybatis,带你深入领略它的魅力!
    2020年6月最新程序员工资统计,似乎又跌了,扎心!
    Redis企业级数据备份与恢复方案
    如何短时间内快速通过Java面试
    看完这篇还不懂Redis的RDB持久化,你们来打我!
    什么,容器太多操作不过来?我选择Docker Compose梭哈
    面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
    30分钟快速上手Docker,看这篇就对了!
  • 原文地址:https://www.cnblogs.com/duanxz/p/5149229.html
Copyright © 2011-2022 走看看