计算机网络的知识忘得差不多了,这里记录下来备忘,首先从网段说起。我们说的网段有两种:一种是指物理上由网络连接设备所相隔的网络,比如由路由设备(路由器,交换机,集线器等)连接的两个局域网,我们可以称之为两个网段;另一种是指从逻辑上根据其IP地址中的网络地址来区分其所属的网段。
1、首先说下IP地址,IP地址是由32位二进制位组成的xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx。如果按每8位为一组,转换成十进制的话,可以写成由三个句点分隔的4位数字的形式,例如192.168.0.1这个地址对应的二进制位是1100000101010000000000000000001。同时IP地址由网络地址和主机地址两部分组成,其编址的方法与街道地址的概念相似,比如XX街YY号,这里的XX街相当于网络地址,YY号相当于主机地址。
2、其次是IP地址分为5类:数量非常有限的,非常大的网络(A类);数量较多规模中等的网络(B类);为数众多的小网络(C类),以及用于组播(D类)和研究和实验之用(E类)。区分的办法就是根据第一个8位组来判断:
(1)对于A类地址,分配IP地址的前8位作为网络地址,其余24位作为主机地址。并且,这前8位二进制位中的第一位必须是“0”。转换成十进制后,其取值的范围应在0--127之间。再加上0和127已经被留做它用,所以A类网只有126个。
(2)对于B类地址,分配IP地址的前16位作为网络地址,其余16位作为主机地址。并且,这前16位二进制位中的前两位必须是“10”。转换成十进制后,其取值的范围应在128--191之间。由于最高两位被限定为“10”,所以,实际上只有其后的14位用来区分网络地址,所以B;类地址有16384个。
(3)对于C类地址,分配IP地址的前24位作为网络地址,其余8位作为主机地址。并且,这前24位二进制位中的前三位必须是“110”。转换成十进制后,其取值的范围应在192--223之间。所以C类地址可以有2^21次方,共2097152个。同时由于只有8位数字用于表示主机机址,所以每个C类网只能有254台主机(主机地址不能全为0或全为1:全0为子网地址,全1为广播地址)。
(4)对于D类地址,其IP地址前8位以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicasting)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。所以D类地址覆盖范围为224.0.0.0-239.255.255.255,但是不标识网络。
(5)对于E类地址,其IP地址前8位以“1111”开始,为将来使用保留,主要用于Internet试验和开发。所以E类地址的覆盖范围为240.0.0.0-255.255.255.255,其中240.0.0.0-255.255.255.254作为保留地址,255.255.255.255作为广播地址。
3、此外还有私有IP地址。私有IP就是在本地局域网上的IP,与之对应的是公有IP(在互联网上的IP)。随着私有IP网络的发展,为节省可分配的注册IP地址,有一组IP地址被拿出来专门用于私有IP网络,称为私有IP地址。私有IP地址的范围如下:
A类:10.0.0.0-10.255.255.255,即:10.0.0.0/8
B类:172.16.0.0-172.31.255.255,即:172.16.0.0/12
C类:192.168.0.0~192.168.255.255,即:192.168.0.0/16
这些地址是不会被Internet分配的,它们在Internet上也不会被路由,虽然它们不能直接和Internet网连接,但通过技术手段仍旧可以和 Internet通讯(NAT技术)。我们可以根据需要来选择适当的地址类,在内部局域网中将这些地址像公用IP地址一样地使用。在Internet上,有些不需要与 Internet通讯的设备,如打印机、可管理集线器等也可以使用这些地址,以节省IP地址资源。
4、最后说说子网掩码。子网掩码也是由32位二进位组成的,它用于表示TCP/IP主机的IP地址中哪些位对应于网络地址,哪些位对应于主机地址。计算方法为:子网掩码中1所对应的部分网络地址,0所对应的部分为主机地址,即将IP地址与子网掩码按位进行逻辑与操作。例如一台主机的IP地址为192.168.0.1(对应的二进制位为110000001010100000000000000000001),子网掩码为255.255.255.0(对应的二进制位为11111111111111111111111100000000),按位与之后得到192.168.0.0。由于子网掩码的前24位为1,表示该IP地址的前24位为网络地址,后8位为主机地址,所以我们表示成192.168.0.0/24,称为192.168.0.1的网络地址(网络ID)。不同的网络地址属于不同的网段(也叫子网)。
所以,比较IP地址是否在同一个网段或者子网时,需要结合子网掩码并分两种情况讨论:
(1)如果子网掩码相同,则直接把IP地址与子网掩码按位“与”操作后看是否相同:相同则是同一个网段,否则不是。举个例子:192.168.0.1和192.168.1.5这两个IP,如果子网掩码是255.255.0.0的话,则属于同一个子网;如果子网掩码是255.255.255.0,则不属于同一个子网。
(2)如果子网掩码不同,严格上说是不能比较的。但如果要比较的话,则需要找一个基准子网来比较,即将“与”操作后的结果与该基准子网比较判断。举个例子:192.168.1.1/30和192.168.1.10/24,虽然“与”操作后的结果都是192.168.1.0,但是子网掩码不同不能简单比较。
这里首先分别与24位掩码做“与”操作:
11000000.10101000.00000001.00000001(192.168.1.1)
11111111.11111111.11111111.00000000(24位掩码)
------------------与------------------------------
11000000.10101000.00000001.00000000(192.168.1.0)
11000000.10101000.00000001.00001010(192.168.1.10)
11111111.11111111.11111111.00000000(24位掩码)
------------------与------------------------------
11000000.10101000.00000001.00000000(192.168.1.0)
结果相同,所以这里可以说他们都在192.168.1.0/24这个子网里面。
然后分别与30位掩码做“与”操作:
11000000.10101000.00000001.00000001(192.168.1.1)
11111111.11111111.11111111.11111100(30位掩码)
------------------与------------------------------
11000000.10101000.00000001.00000000(192.168.1.0)
11000000.10101000.00000001.00001010(192.168.1.10)
11111111.11111111.11111111.11111100(30位掩码)
------------------与------------------------------
11000000.10101000.00000001.00001000(192.168.1.8)
结果不同,所以这里不能说他们都在192.168.1.0/30这个子网里面。
从另一个角度来看,我们把192.168.1.1/30和192.168.1.10/24所包含的IP地址分别列举出来:
192.168.1.1/30所在的子网里面有4个IP:192.168.1.0、192.168.1.1、192.168.1.2、192.168.1.3(全为0和全为1的IP不能用,实际2个);
192.168.1.10/24所在的子网里有256个IP:192.168.1.0、192.168.1.1、192.168.1.2……192.168.1.255(全为0和全为1的IP不能用,实际254个);
这么看来192.168.1.1/30所在的子网只是192.168.1.10/24所在的子网的一部分。因此192.168.1.1/30所在子网里面的IP能够直接PING到192.168.1.10/24所在子网里面的IP,并且直接通信时都不需要用ARP得到对方的MAC地址。
这个帖子里面有相关的讨论:判断两个IP地址是否属于同一个网段? - CCNA学习小组 - 思科网络学习空间