zoukankan      html  css  js  c++  java
  • 子网

    IP地址的划分

    IP地址是一个32位编码的地址表示,格式形如a.b.c.d,其中a,b,c,d为十进制数,范围为0-255,因此IP地址又称为点分十进制表示,每个部分为8位,一共长度为32位。因此,IP地址理论上一共有2^32个IP地址(大约有40亿个),现在这些IP地址已经不够用了,所以在开发IPv6。

    子网

    子网的建设在于便于网络管理,例如一台IP地址为172.16.1.1的路由器连接着3台主机,IP地址分别为172.16.1.2、172.16.1.3、172.16.1.4。是不是想起了校园网的IP地址,那个172.16.1.1就是网关,那三个IP地址就是上网时用的内网IP。同理,172.16.1.1也可以看作某一个子网的内网IP,如此逐渐往上层走,直到公网IP,也就是那40亿个IP之一。而172.16.1.2、172.16.1.3、172.16.1.4,这些不直接相连的内网主机就形成,和路由器的172.16.1.1接口一起形成一个子网

    是不是很熟悉,这就是校园网管理,一个路由器会管理它内网中的所有IP地址。可以看出,内网中的IP地址172.16.1.2、172.16.1.3、172.16.1.4有相同的前缀,即172.16.1.*,也就是32位IP地址中的前24位是相同的,因此,该内网中所有的IP地址表示为172.16.1.0/24。172.16.1.0/24表示了所有172.16.1.*形式的IP地址都在其子网内。

    注:主机和路由器接口相连形成子网,这里的主机可以是另一个路由器的接口,也可以是主机

    子网分配

    有了子网的表示,那么接下来就是子网的分配,路由器接口的IP地址有限,分配的方式也就有限,需要根据子网的需求以及规模合理地分配IP地址。

    网络地址的分配策略称为无类别域间路由选择(CIDR)。也就是前面所说的172.16.1.0/24,一般化表示为a.b.c.d/x,其中IP地址a.b.c.d最高的x位构成网络ID,其余的32-x位构成主机ID。网络ID可以通过IP地址与子网掩码进行与运算获得,因此相同网络ID的网络设备都在一个子网内(和之前一个意思,只是换了网络ID的说法而已)。这种组织方式也称为地址聚合。我们常用的子网掩码与IP地址进行与运算,可以得到子网的网络ID。

    x的不同被分为不同类别的IP地址,x取值为8,16,24分别被称为A,B,C类IP地址。

    子网通信

    具有相同网络ID的计算机可以直接通信,而具有不相同网络ID的计算机需要经过一层或者多层路由,在路由转发的时候,也只关心网络ID,进而大大减少了转发的长度。在通信时,使用地址的最长前缀匹配,即路由器会通知与目的地址拥有最长前缀匹配的IP。

    源主机和目标主机通信时,由于其不知道目标主机的子网掩码,只知道IP地址,因此,源主机会将IP地址与自己的子网掩码进行与运算得到网络ID,进而判断是否在一个网段内,即网络ID是否相同。

    例如,A主机的IP地址为192.168.1.100/24,B主机的IP地址为192.168.2.100/16。A主机的网络ID为192.168.1.0(子网掩码255.255.255.0),B主机的网络ID为192.168.0.0(子网掩码255.255.0.0)。

    A主机将B主机的192.168.2.100与255.255.255.0进行与运算后得到网络ID为192.168.2.0,与A不在同一个网段,因此,主机A认为主机B不可达,将包发给路由器。

    B主机将A主机的192.168.1.100与255.255.0.0进行与运算得到网络ID为192.168.0.0,与B在同一个网段,因此,主机B认为主机A可达。

    因此在内网中,B发出的包A可以收到,A发出的包B收不到。

    子网主机数

    子网设备个数可以通过网络ID进行计算,例如172.16.1.0/24构成的子网,由于前24位构成的网络ID是相同的,也就是子网中所有设备的IP地址前24位相同,因此,只有8位主机ID可以用来分配子网的设备,因此网络中的设备数量为$2^8-2=254$台,这里2预留的有特殊用途的主机IP。因此,需要根据子网的规模以及需求合理地分配IP地址。

    划分子网

    当大的网络a.b.c.d/x,要进行子网划分时,x位网络ID要向32-x位的主机ID借位,即网络ID位变多,主机ID位变少,减少了可用的IP。同理,合并子网时,主机ID向网络ID借位。

    公式总结:

    1. 主机数=2^主机ID位-2
    2. 网络数=2^可变的网络ID位
    3. 网络ID=IP和netmask 相与
    4. 划分子网数=2^网络ID向主机ID借的位数
    5. 划分子网损失IP数=2*(划分子网数-1)(因为每段子网中的第一个IP地址用来表示网络位,而最后一个IP地址都被用来表示本网段中的广播。)

    举个栗子

    (1)172.17.0.100/26

    网络ID的位数为26,主机ID的位数为6

    1. 主机数=2^6-2=62
    2. 子网掩码为26个1,即11111111.11111111.11111111.11000000,转为十进制为255.255.255.192。
    3. 网络ID为172.17.0.01(000000),即172.17.0.64

    (2)110.110.244.100/22

    1. 子网掩码为22个1,11111111.11111111.11111100.00000000,即255.255.252.0
    2. 主机数为:2^(32-22)-2=1022个
    3. 网络ID的值为:110.110.244.0

    (3)10.100.222.100(子网掩码:255.255.248.0)

    1. CIDR表示:10.100.222.100/21
    2. 主机个数为:2^*(32-21)-2=2046个
    3. 网络ID为:10.100.216.0,即10.100.222.100与子网掩码做与运算

    (4)172.200.249.200/22,划分16个子网

    划分16个子网,网络ID要向主机ID借4位(因为2^4=16)

    1. 每个子网的子网掩码为26个1,即11111111.11111111.11111111.11000000,255.255.255.192
    2. 子网的主机数为:2^(32-26)-2=62
    3. 子网最小的网络ID为(即借来的网络ID位置处的子网掩码全为0):11111111.11111111.11111100.00000000,即为172.200.248.0/26
    4. 最大的子网IP范围为,即借来的网络ID位置处的子网掩码全为1,子网掩码为11111111.11111111.11111111.11000000,网络ID为172.200.249.192/26,对应的IP范围为172.200.249.193-172.200.249.254,注意开头的IP地址为193开始,最终到254。

    (5)10.0.0.0/8 划分32子网,对第10个子网划分64个子网

    对10.0.0.0/8划分32个子网,需要8位网络ID借5位,即网络ID为13位。由于第10个子网为10.72.0.0/13。(这里的72,即为借来的5位从00000开始依次加一加10次得到的01001,即IP地址第二段为01001000)。

    因此,该问题等价于对10.72.0.0/13划分64个子网,即13位网络位再向主机位借6位主机位。

    1. 子网掩码为19个1,即11111111.11111111.11100000.00000000,即255.255.224.0
    2. 每个子网的主机数为:2^(32-19)-2=8190
    3. 最小的子网ID为:子网掩码中借来的6位全为0,即11111111.11111000.00000000.00000000,该子网掩码与10.72.0.0做与运算得到最小的网络ID吗,即为10.72.0.0
    4. 最大的IP地址范围为,借来的网络为的子网掩码全为1,即11111111.11111111.11100000.00000000,最后一个子网的网络ID为10.72.224.0/19,因此,IP地址范围为10.72.224.1-10.72.255.254(注意可用IP的范围)。
  • 相关阅读:
    哥也能写KMP了——实现strstr()
    面试归来,感觉无望,下次再战
    Pow(x, n)
    Length of Last Word
    后缀数组应用
    2倍倍增算法构造后缀数组
    跳台阶问题
    求无序数组中第二大的数--快速选择
    单源最短路径问题
    全局下的isFinite
  • 原文地址:https://www.cnblogs.com/wktwj/p/10862618.html
Copyright © 2011-2022 走看看