• 计算机网络复习总结之网络层(二)


    IP地址及编码方式


    我们一开始必须要了解清楚,IP地址就是给因特网的每一个主机(或路由器)的每一个接口分配一个在全世界范围内唯一的32位标识符。有了这个唯一的标识符,我们才可能在因特网上进行方便的寻址。我们一般都是将32位的IP地址中的每8位,用等效的十位数进行替换,方便我们阅读。举个例子:

    32位:10000000 00001011 00000011 00011111
    我们一般用点分十进制表示:128.11.3.31
    

    IP地址的编址方式经过了3个阶段:

    1. 分类编址。这是最基本的编址方式。
    2. 划分子网。对分类编址的改进
    3. 无分类编址。这是目前正在使用的编址方式。

    接下来我们一一看看这三种编址方式:

    分类编址

    分类编址的地址,是由两个固定长度的字段组成。一个字段是网络号(net-id),它是标志主机所连网络。另一个字段是主机号(host-id),它标志的是该主机,并且主机号必须在网络号的网络范围内是唯一的。这样子,一个IP地址在整个因特网范围内便是唯一的。

    分类编址:IP地址定义为:{<网络号>, <主机号>}

    这样子的编址方式有以下几种好处:

    • 分配IP地址的机构仅仅需要分配网络号即可,主机号自行分配。
    • 路由器仅仅根据主机的网络号进行分组转发,这样子路由表里的内容会大大减少,提升了路由寻址的效率。

    但是有一个问题就是,32位的IP地址,我们需要多少位的网络号和多少位的主机号呢?分类编址的方案,设计了几种方案,我们看看最常用的三种单播地址。

    • A类地址:网络号占1个字节,且网络号第一位是0,相应主机号占3个字节。
    • B类地址:网络号占2个字节,且网络号前两位是10,相应主机号占2个字节。
    • C类地址:网络号占3个字节,且网络号前三位是110,相应主机号占1个字节。
    • D、E这两种地址咱不讨论

    通过这样分类编址,当我们得到一个IP地址时,我们可以通过前几位就判断地址类别并计算出网络号和主机号。

    划分子网

    分类编址看起来很美好,但是实际上它考虑并不周全。在实际应用中,中小型规模的网络开始爆发,这样导致了一个问题十分明显。1个C类地址空间占一个字节也就是能容纳256个主机,其中还有两个是用于特殊目的。对于一个组织来说,254台主机,真的太不够用了。所以只能申请B类地址,也就是占2个字节,65536台主机。这样的结果导致大量的IP地址被浪费,很快就会面临分配完的危险。

    为了解决这个问题,提出了分类子网的解决方案。也就是说,我们让几个中小规模的组织使用同一个A或B类地址的网络号,然后再通过子网号(subnet-id)来区分是否在同一条链路上。子网号是不定长的,对应的主机号就减少子网号所占的位数。

    划分子网:IP地址定义为:{<网络号>, <子网号>, <主机号>}

    划分子网的编址方式,通过将A、B类地址空间划分给多个组织使用,大大减少了对A、B类地址空间的浪费。

    无分类编址

    划分子网在一度程度上,大大缓解了空间浪费问题。但是C类地址因为空间太小,得不到充分利用,也是非常大的浪费。后来IETF就提出了无分类编址(CIDR)方法来解决IP紧张的问题。

    CIDR消除了传统的A、B、C类地址以及划分子网的概念。IP地址分成两个部分,前部分是不定长的网络前缀(network-prefix),代替分类编址中的“网络号”来指明网络,后面仍旧是主机号,指明主机号。

    无分类编址:IP地址定义为:{<网络前缀>, <主机号>}

    是不是感觉又回到了分类编址的两级结构,不过它们非常重要的区别就是网络前缀是不定长的。这样一个IP地址并不能确定网络前缀和主机,所以需要配合一个32位的地址掩码(address mask)。地址掩码是由一串1和跟着后面的0组成的,而且1的长度就是网络前缀的长度。还可以通过斜线记法(slash notation),来表示网络前缀1的长度,例如/20代表地址掩码有20个1。

    • A类地址的默认地址掩码是255.0.0.0
    • B类地址的默认地址掩码是255.255.0.0
    • C类地址的默认地址掩码是255.255.255.0

    IP地址与地址掩码的计算

    接下来,就是看一下IP地址如何配合地址掩码来实现唯一的标识。只要把地址掩码和IP地址进行逐位的“与”运算,就可以得到它的网络地址(主机号全为0)。我们直接举个例子看看通过IP地址如何得到网络地址的。

    已知:
    	IP地址:141.14.72.24(141.14.01001000.24)
    	地址掩码:255.255.192.0(255.255.11000000.0)
    	或者用斜线记法:141.14.72.24/18
    思路:
    	将IP地址与网络掩码都转化成二进制后进行“与”运算,这里有个技巧就是,全为1和全为0都是不需要转化运算的。所以在这个题目里,我们仅仅需要将第三个字节进行转化后运算,得到主机号为0的网络号。
    计算得:
    	网络地址:141.14.64.0(141.14.01000000.0)
    

    技巧提示在例子中也讲了,但这里要强调一点就是,同一个IP地址与不同的地址掩码是可以得到相同的网络号的。虽然网络号一样,但是不同的地址掩码所代表的主机空间也是不一样的。所以主机在进行网络配置的时候,不仅需要配置主机的IP地址,还需要配置所在网络的地址掩码

    CIDR地址块

    网络前缀不仅仅只是用来表示某个网络的网络地址,它还可以表示连续的IP地址块,所以它不再沿用“网络号”这个说法。CIDR把网络前缀都相同的连续IP地址组成“CIDR地址块”。我们只要知道了CIDR地址块的任意一个地址,就可以知道地址块的最小和最大地址,以及地址数。举个例子:

    已知:
    	IP地址:128.14.35.7/20
    思路:
    	我们从这里可以得到前20位是网络前缀,所以后12位便是主机号。所以我们让主机号都为0,则是最小地址。主机号都为1,就是最大地址。而地址数就是2的12次方。
    计算:
    	最小地址:128.13.32.0
    	最大地址:128.13.47.255
    	地址数:4096个
    

    我们使用CIDR可以更有效的分配IPv4的地址空间,可以根据需求分配适当大小的CIDR地址块,拥有之前几种方法所不具备的灵活性。

  • 相关阅读:
    Extjs4.x Ext.tree.Panel基本树控件的使用案例、源码
    Extjs4 autoload和iframe的取舍
    Extjs4 文件目录结构
    IIS7.5 配置MVC3.0 伪静态,不能访问html伪静态页面
    DB2存储过程模版
    C#后台调用跨域MVC服务,带Cookie验证
    基于SenchaTouch项目案例
    EF Code First DataAnnotations
    找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)”。
    Babylon 3D engine (Silverlight)
  • 原文地址:https://www.cnblogs.com/YikaJ/p/4547118.html
Copyright © 2020-2023  润新知