目录
2. VLSM (变长子网掩码) 和CIDR (无类别域间路由)
网络层协议
上一篇文章主要讲了因特网中传输层的两个主要的协议:TCP和UDP,想要了解的朋友可以到这里查看。经过传输层的封装后,所得的TCP报文段或是UDP数据报会被传递给网络层。而此时不管是TCP报文段还是UDP数据报都没有附带任何导航标识,因此仅仅只靠已有的信息并不能够定位其来源和目的地。只有在遵循IP并添加上相应的首部封装成IP数据报后,才可以通过IP地址被准确地送达目标主机。IP地址可以被认为是主机在网络中的逻辑地址,是一个可以由网络管理员(动态分配时为DHCP服务器)静态或动态分配的地址,而不代表主机的唯一地址,主要适用于网络层及以上层中。主机的物理地址,通常也被称之为MAC地址,也就是该主机网卡所分配的唯一的物理地址,才是真实能够定位主机的唯一地址。ARP是将IP地址和MAC地址进行映射的协议,但其具体工作的层次在不同模型中有不同的分析。对于TCP/IP模型来说,所有属于TCP/IP协议簇中的协议只存在于网络层及以上层中。而从ARP的功能分析,它所处的层次不应该高于IP,因此同样属于网络层协议。而对于另外两种模型而言,ARP的结果主要用于添加帧头,而数据帧是数据链路层的协议数据单元,因此ARP应属于数据链路层。
IP
IP有不同的版本,而其对应的首部也略有不同,感兴趣的朋友可以点击这篇文章详细了解一下,在这里就不多做赘述了,以下部分主要来讲解一下IPv4下的IP地址。
一、IP地址的分类
图1. IP地址的分类
IP地址由32位二进制数组成,通常被分为四个8位二进制数,用点分十进制来表示,数字范围从0.0.0.0到255.255.255.255。根据前4位二进制数的不同将IP地址分为一下五类(如图1):
1. A类地址
第一位必须为0,因此地址的范围是从0.0.0.0到127.255.255.255。由于只有第一个8位二进制数用于表示网络ID,并且其中的0段和127段留作特殊用途,因此只能有126个网络。每个网络中将主机ID为全0和全1的地址保留作为网络ID和广播地址,所以每个网络可以有台主机。由于A类网络较少,但每个网络的主机数量较多,因此主要被用于大型网络,如政府机构。
2. B类地址
前两位必须为10,因此地址的范围是从128.0.0.0到191.255.255.255。由于前两个8位二进制数用于表示网络ID,因此有16384个网络。每个网络中将主机ID为全0和全1的地址保留作为网络ID和广播地址,所以每个网络可以有台主机。B类网络的网络数量和主机数量都居中,因此主要被用于中型网络,如具有一定规模的公司。
3. C类地址
前三位必须为110,因此地址的范围是从192.0.0.0到223.255.255.255。由于前三个8位二进制数用于表示网络ID,因此有209万多个网络。每个网络中将主机ID为全0和全1的地址保留作为网络ID和广播地址,所以每个网络只有254台主机。C类网络由于网络数量最多而主机数较少,因此主要被用于小型网络,如家庭网络。
4. D类地址
前四位必须为1110,因此地址的范围是从224.0.0.0到239.255.255.255,主要被用于多播(多点广播)。
5. E类地址
前四位必须为1111,地址的范围是从240.0.0.0 - 255.255.255.255,为将来保留。
二、子网掩码
顾名思义,子网掩码的作用就是用来划分子网。并且通过子网掩码,我们也能轻松得知主机在子网中的具体地址。分配子网的用途之一是方便进行管理,子网内的主机可以由子网进行管理,而上层的网络只需要管理子网就可以了,可以对不同子网内的主机进行隔离。另一方面,由于IPv4中IP地址只有个,虽然看起来很多,但是从世界上的主机数量来看就比较紧张了。因此,通过划分子网后在子网内再进行地址的分配,就可以使同一个子网内的主机共用一个IP地址,从而解决了IP地址资源紧张的问题。
1. 子网掩码计算
在一个用二进制表示的子网掩码中,其网络ID部分全为1,主机ID部分全为0。一般的子网掩码与上文描述的IP地址的分类息息相关,比如对于一个C类地址而言,他的前三个8位二进制数表示网络ID,因此它的子网掩码就是255.255.255.0。在使用子网掩码计算网络ID时,只需要将IP地址与子网掩码都转换成二进制后做与运算,即当两数同一位上的数都为1时,运算结果中该位的值才为1,否则为0;而在获取主机ID时,只需要将IP地址与网络ID进行异或运算,即当两数同一位上的数不相等时,运算结果中该位的值才为1,否则为0。同样用一个C类地址来举例,此时我有一个IP地址192.168.0.1,它的子网掩码是255.255.255.0,具体的表示形式和运算结果如下:
IP地址点分十进制:192.168.0.1
子网掩码点分十进制:255.255.255.0
IP地址二进制:11000000 10101000 00000000 00000001
子网掩码二进制:11111111 11111111 11111111 00000000
IP地址与子网掩码的与运算结果(网络ID):1100000010101000 00000000 00000000
异或运算结果(主机ID):00000000 00000000 00000000 00000001
网络ID点分十进制:192.168.0.0
主机ID点分十进制:0.0.0.1
2. VLSM (变长子网掩码) 和CIDR (无类别域间路由)
VLSM是为了能够更高效更节约地利用IP地址资源而设计的,它通过指定前缀的个数,即IP地址中网络ID的位数,来划分子网,因此其表示形式也有所不同。如对于上文中所使用的IP地址,用VLSM来表示则是192.168.0.1/24,其中的24表示该地址中前24位是其网络ID。而与地址分类的规则相同,在使用该方法划分的子网中,同样是将主机ID为全0和全1的地址保留,分别作为网络标识和广播地址来使用,其余的皆可作为主机的标识。如需要将上述子网再细分成两个子网时,可以将其前25位作为网络号,即平均分成第25位为0和1的两个子网,表示形式如下:
原IP地址点分十进制(VLSM):192.168.0.1/24
原网络ID点分十进制:192.168.0.0/24
原IP地址二进制:11000000 10101000 00000000 00000001
原网络ID二进制:11000000 10101000 00000000 00000000
新网络ID二进制:11000000 10101000 00000000 00000000
11000000 10101000 00000000 10000000
新广播地址二进制:11000000 10101000 00000000 01111111
11000000 10101000 00000000 11111111
新网络ID点分十进制:192.168.0.0/25
192.168.0.128/25
新广播地址点分十进制:192.168.0.127/25
192.168.0.255/25
新主机IP地址可用范围:192.168.0.1/25 ~ 192.168.0.126/25
192.168.0.129/25 ~ 192.168.0.254/25
CIDR也是基于VLSM来进行分配网络ID的,其本质是将几个相邻的子网合并成一个较大的网络,从而加快查询路由表的速度。如在子网10.24.0.0、10.24.1.0、10.24.2.0和10.24.3.0的二进制中,前22位都相同,因此可以将它们的路由合并至网络ID为10.24.0.0而子网掩码为255.255.252.0的网络中,而这条汇总路由则被表示为10.24.0.0/22。