网络入门之IPv4地址基础知识(二)
当网络层收到组播数据报文时,根据组播目的地址查找组播转发表,对报文进行转发。
在私网中,组播是不需要在工作站上配置的,只需要在网络中的路由器或者支持组播协议的三层交换机上进行配置。
私网工作站中被分配的组播地址都是224.0.0.1,就像环路地址127.0.0.1一样,无须另外配置。只要在路由器中启用了组播协议后就可以对应加入到组播组中。公网中,工作站组播地址选择224.0.1.0~238.255.255.255范围中的一个即可。
另外,要注意的是,在进行组播通信时,在数据链路层目的MAC地址字段封装的也是组播MAC地址。
IANA把01:00:5E开头的以太网MAC块作为组播地址对应的二层组播MAC地址。组播MAC地址的范围是01:00:5E:00:00:00~01:00:5E:7F:FF:FF(前24位为MAC头,固定不变,第25位为0),并要求将IPv4组播地址的后28位(因为最高的4位是固定不变的)映射到48位的MAC地址空间中。
图8-8 多播IP地址到MAC地址的映射
具体的映射方法是将组播IPv4地址中的低23位放入MAC地址的低23位,如图8-8所示。
至于为什么要映射后面的23位,原因就在于根据IANA给出组播MAC地址段是前3字节(也就是24位)来标识单位或者厂商,只有后面24位来和IP地址映射;而给定的地址空间后3字节的最高位相同,都为0,那么给定的MAC地址段内只有23位了,所以最终只能丢弃28位IPv4地址中的前5位,剩下的23位和MAC的23位相映射。
注意,这个映射无须手动进行,在路由器启动组播协议,站点加入到组播组后就会自动生成。
由于IPv4多播地址的后28位中只有23位被映射到MAC地址,这样会有32个(2^5,IPv4多播地址中有5位可变)IP多播地址映射到同一MAC地址上。
4.5、E类IPv4地址
图8-9 E类IPv4地址结构
E类IPv4属于IANA保留地址,不分配给用户使用,地址段范围为240.0.0.0~247.255.255.255,其特征是最高5位分别是1、1、1、1、0,如图8-9所示,也就是有27位是可变的。
5、有类/无类IPv4网络
通过前面的介绍我们知道,尽管已针对整个IPv4地址空间进行分类,但每类网络的数量对于全球用户数量来说仍非常之少,特别是A类网络才区区的126个。
之所以会出现这种现象,原因就在于每类网络的网络ID部分(也就是子网掩码部分)的位数是固定不变的,而且是字节的整数倍,如A类网络中的网络ID部分占1字节(8位),B类网络中的网络ID部分占2字节(16位)、C类网络中的网络ID部分占3字节(24位)。
为了解决这种可用网络数太少的问题,同时提高IP地址有有效利用率,于是出现了一种称为VLSM(Variable Length Subnet Masking,可变长子网掩码)的技术。
VLSM可以使网络中IPv4地址的子网掩码所占位数不是固定的,如子网掩码位数可以不是以字节为单位的整数,如12、13、14、25、26、28、等均可。
因为子网掩码位数不固定了,也就不能再依据子网掩码来进行分类了,所以采用VLSM后形成的网络称为无类网络,而以前传统的A、B、C类网络则相对应地被称为有类网络或标准网络。
而我们把在有类网络中通过VLSM技术改变子网掩码长度而划分的小网络称为子网。有关子网的划分将在后面具体介绍,在此仅介绍无类网络的一些基础知识。
那么VLSM能给我们带来什么好处?
简单地说体现在三个方面:①用户可以根据网络规模大小选择拥有适当可用IPv4地址的IPv4地址段,这样可以减少IPV4地址的闲置和浪费,降低广播风暴产生的可能;②可以提高路由效率;③提高广域网中的网络安全。
举例来说,先说在局域网中。
假设你公司的局域网节点数为1000个左右(也就需要1000个左右的IPv4地址),这时如果想把所有设备都放在一个网段中,这样各设备可以直接进行二层通信,无需三层网络设备。
如果不采用VLSM,根据表8-1介绍的三类网络类型所对应拥有的IPv4地址数可以知道,你最佳的选择就是用一个B类地址网络,但它每个网络可以使用的IPv4地址总数达到了65534个,相对你只有1000个节点的网络来说,显然是大材小用了,必将造成有绝大分地址在你的网络中根本用不上,白白空置了。
这时假设你的公司又有新的局域网要组建,节点数在300个左右,根据表8-1可知,你同样得选一个B类地址段来进行IP地址分配,但这时用不上的地址数就更多了。
另外,网络越大,也就是广播域越大,自然在网络中的广播流量也可能越大,而划分子网后,网络更小了,广播域也更小了,产生广播风暴的可能性也就更小了。
或许你会说,这没什么问题啊,反正局域网IP地址不同公司是可以重复使用的,现有的网络地址数量一个公司无论如何也用不完,而且又不用付费。
这的确是这样的,但是这里还是有一个方面你没有考虑到,那就是路由效率的问题。你为每个局域网都选择一个标准的网络,那么每个局域网的网络路由条目中根据不同网络进行路由汇总,随着网络的增大,路由条目必须随之逐步增多,路由效率自然下降了。
而采用VLSM进行子网划分后路由是可以汇总的,把由同一标准网络划分的多个子网路由条目汇总成一条标准网络的路由,可以使路由表条目大大减少,提高路由效率。
以上是针对局域网专用IPv4地址来说的,对于公网IP地址来说,采用VLSM所带来的好处就更明显了。
试想一下,如果仅采用标准网络的分类,则每个ISP所能分配给企业用户的网络数就非常有限了,即使是最多的C类网络,全球可用的也只有2 097 152个(其中还有65 536个是局域网地址),这显然是不够的。
这时你可能会说,这是C类网络总数,但是每个C类网络中还有254个地址啊,两者相乘就更多了。
在此且先不说一个个来分配是否够用,事实上许多企业不可能只需要一个公网IPv4地址,而是有多个连续的IPv4地址,为多个互联网服务器进行分配。
我们知道,公网IP地址是在互联网中全球用户可以直接访问的(当然这要求用户已在公网中使用这个地址),除非做了特别的限制。
而在标准网络中,每个网络的路由是相同的,如229.168.129.0/24这个网段的路由条目中就是包括这个网络地址,凡是在这个网络中的地址均可通过这条路由到达。
现假设A公司购买了一个227.126.128.10~227.126.128.20的C类公网地址段,而B公司购买了一个227.126.128.30~227.126.128.50的C类公网地址段,它们所购买的这些公网地址均用于一个为互联网用户提供服务的小服务器网络中。
如果没有VLSM,A公司和B公司的局域网均只能通过配置227.126.128.0/24这条路由来实现内部局域网与服务器网络的互通。但这样一来,如果没有其他限制措施,则两家公司的这条路由都可能到达对方的服务器,这显然不行,很不安全,也不便于ISP对用户IPv4地址和域名服务的管理。
但如果为每个用户分配整个网络的地址段,一方面用户不需要,也不可能花那么大资金来购买用不完的公网IPv4地址,另一方面ISP也不可能这样来分配,因为事实上IPv4地址资源非常有限,到了有钱也买不到的地步。
如果采用VSLM,则可以很好地根据用户实际需要为每个用户设置一个单独的子网,这样就可以杜绝不同公司中公网地址网络的不安全性。
对于地址数是否够用的问题,相信不用过多解释,全球有那么多企业或者个人用户都在申请购买公网IP地址,据悉目前IPv4可用的公网IP地址已全部分配完,没有余量了。
对于公网IPv4地址说,采用VSLM同样可以像局域网中那样提高路由效率,特别是在那些大型的ISP广域中。
6、IPv4网络地址、主机地址和广播地址
网络地址是用来标识一个有类或无类网络的地址,是对应网络或子网的第一个IPv4地址,即主机ID部分全为0的IPv4地址。
广播地址则是一个有类或无类网络中的最后一个IPv4地址,即主机ID部分全为1的IPv4地址,可通过这个地址向对应网络或子网以广播方式发送数据包(也就是广播通信),让本地网络或子网的所有节点都可收到同一数据包。
在一个对应网络或子网中,除了网络地址和广播地址这两个一头、一尾的地址外,中间其他的所有地址都是主机地址,它是可直接分配给主机使用的IPv4地址。
如在192.168.1.0/24网络中(有关地址前缀表示形式将在后面介绍),网络地址为192.168.1.0/24,广播地址为192.168.1.255/24,其他254个IPv4地址都是主机地址。
如192.168.1.0/26这样一个子网中,它的网络地址为192.168.1.0/26,而广播地址为192.168.1.63,而中间其他的62个IPv4地址都是主机地址。有关子网划分的方法将在本章后面介绍。
我们也经常听到单播、组播、广播这三个术语。
这是IPv4协议根据所使用的IPv4地址通信用途来划分的三种方式:单播(unicast)是指一台源IP主机仅与一台目的IP主机进行通信的方式。
单播通信中所使用的IPv4地址就是单播地址,在A、B、C三类地址中(仅指IPv4)除了前面说到的广播地址,以及其他不能分配给主机使用或者保留使用的地址外,其他的全是单播地址,包括前面说的公网IP地址和私网IP地址。
组播(Multicast)是指一台源IP主机同时与网络中多台IP主机进行通信的方式,又称多播。组播通信所用的IPv4地址就是组播地址,D类IPv4地址就是组播地址。通过这类IPv4地址可以把一个数据包发送到多个指定的节点上。
广播(broadcast)是指一台源IP主机同时与本地网络或子网中所有其他节点进行通信的方式。广播播通信所用的IPv4地址就是广播地址。
理解网络地址和广播地址要注意以下两个方面:
1)某个或某几个8位组值为0或者255的IPv4地址不一定就是网络地址或广播地址。
不要一看到某个或者某几个8位组值全为0就认为是网络地址,也不要一看到某个或某几个8位组值全为1就认为是广播地址,具体还是要看主机ID部分是否全为0,或1。
如1.1.0.0/8这个地址就不是网络地址,因为它是一个标准的A类网络。主机ID部分应该是后面的全部3字节(24位),现在只有最后2字节的值全为0,而第二个字节的值为1。
1.1.0.0/8的网络地址是1.0.0.0/8。同样,1.1.1.255/8、1.1.255.255/8也不是广播地址,原因同上,只是这里的主机ID部分(也就是最后3字节,共24位)应该全为1(每个字节转换成十进制为255),但这里只有最后2字节的值全为1。
对于无类网络来说更是这样,因为在一个无类网络中多个C类或B类有类网络都可以聚合成一个更大的网络,其中就可能包括许多某些8位组全为0或255的IPv4地址。
2)网络地址和广播地址中不一定是整个8位组的值为0或255。
也不是所有网络地址的主机ID都是整个字节的十进制值为0,所有网络地址的主机ID都是整个字节的十进制值为255。
这仅适用于标准的有类网络,因为有类网络中,都是用整个字节来划分网络ID和主机ID的,但在无类网络中,并不是这样的。
在无类网络中,子网掩码长度是可变的,不是固定的多少个字节长度。
这里涉及两个概念:子网划分和子网聚合。
子网划分是在标准的有类网络基础上,通过向主机ID部分借位变成网络ID来实现的,相反子网聚合是通过向网络ID借位变成主机ID来实现的。具体的子网划分和子网聚合方法将在后面介绍。
如要把192.168.1.0/24网络划分成四个子网,它就是通过向“主机ID”借2位来实现的,这4个子网分别是:192.168.1.0~192.168.1.63(192.168.1.0/26)、192.168.1.64~192.168.1.127(192.168.1.64/26)、192.168.1.128~192.168.1.191(192.168.1.128/26)、192.168.1.192~192.168.1.255(192.168.1.192/26)。
它们都有自己对应的如下“网络地址”和“广播地址”:
192.168.1.0/26子网的网络地址是192.168.1.0/26、广播地址是192.168.1.63/26;
192.168.1.64/26子网的网络地址是192.168.1.64/26,广播地址是192.168.1.127/26;
192.168.1.128/26子网的网络地址是192.168.1.128/26,广播地址为192.168.1.191/26;
192.168.1.192/26子网的网络地址是192.168.1.192/26,广播地址是192.168.1.255/26。
由此可见,各子网的网络地址或广播地址并不是整个字节长度均为0或1,转换成十进制后也就是不一定是0或者255了。
7、IPv4广播地址类型
本来广播地址只有一种,就是每个标准有类网络中所说的最后那个IPv4地址,它可以在整个标准网络中进行广播(注意,路由器是不会转发广播包的)。但自从有了无类网络后,根据其广播范围的大小,IPv4广播地址就分出了以下几种:
(1)网络广播地址
网络广播地址是传统意义上的广播地址,也就是标准的有类网络中的广播地址。网络广播地址可以将数据包广播发送到本地有类网络内部所有节点上。
IPv4路由器不转发目的IP地址为网络广播地址的广播数据包,也就是网络广播包只能在一个本地网络内部广播,不能被路由到其他网络中。
网络广播地址是通过将有类IPv4地址(A、B、C三类)中的所有主机ID部分全部设置为1而得到的,也就是每个主机ID的8位组均为255。
例如,151.110.0.0是一个有类别地址的B类地址,则其网络广播地址为151.110.255.255。
(2)子网广播地址
子网广播地址是针对具体子网的广播地址。它仅可以将数据包发送到相应无类别子网内部的所有节点上。
IPv4路由器也不转发目的IP地址为子网广播地址的广播数据包,也就是子网广播包只能在一个子网内部广播,而不能被路由到其他子网中。
子网广播地址是通过将无类别地址的主机ID部分全部设置为1而得到的,因为在包含主机ID的8位组中还包括网络ID(严格地讲是子网ID),所以这时的广播地址中主机ID所对应的8位组值就不一定是255了。例如,192.168.1.0/26这个子网的广播地址是192.168.1.63,而不是192.168.1.255。
(3)全子网定向广播
全子网定向广播地址是针对一个标准有类网络划分的子网而言的,等于这个标准网络的广播地址。它可以将数据包以广播方式发送到由该标准网络划分的所有子网节点上。
如前面所说的192.168.1.0/24标准有类网络通过向主机ID借两位的方法划分成192.168.1.0/26、192.168.1.64/26、192.168.1.128/26、192.168.1.192/26这四个子网,原来192.168.1.0/24标准有类网络的广播地址192.168.1.255就是这四个子网的全定向广播地址。
这类广播包可以在以它划分的所有子网上广播,也就是IPv4路由器可以转发这类广播包。
(4)有限广播
有限广播地址是通过将IPv4地址的32个位全部设置为1(255.255.255.255)而形成的。在本地网络ID未知的情况下(如采用DHCP服务自动分配IP地址的客户端),可以使用有限广播地址来进行本地网络或子网内部所有节点传送。
IPv4节点通常仅在自动化配置过程(例如启动协议(BOOTP)或DHCP)中使用有限广播地址,如DHCP服务,DHCP客户端发出的请求报文和DHCP服务器返回的应答报文都是以255.255.255.255作为目的地址的,因为那时DHCP客户端还没有分配到具体的IP地址。
8、IPv4地址前缀表示形式
通过前面的内容我们已经知道,仅给出一个IPv4地址,我们仍然无法知道它所在的网络,也就无法仅通过这个IP地址来进行寻址和路由了。
传统的IPv4地址表示方法是在给出具体的IPV4地址的同时给出它所对应的子网掩码,如192.168.1.10、255.255.255.0等。
这也是我们在为节点配置IP地址的同时要配置子网掩码的原因。但在日常书写时,这样显然比较麻烦,因为IPv4地址和子网掩码都有32位,转换成十进制后仍然各有四段,比较长。
为了能更加简便地书写,采取了一种比较简单的地址前缀表示形式,就是在一个IPv4地址(可以是网络地址,也可以是主机地址)后面先加上一个斜杠(/),然后在这个斜杠后面直接写出该地址所在网络的网络ID,或者子网掩码长度,因为网络ID长度决定了具体IPv4地址所属的网络。
如192.168.1.10/24代表的是一个标准的C类网络IPv4地址,而10.1.0.10/8则代表了一个标准的A类网络IPv4地址。
当然,这种表示方式主要还不是为了标识标准的有类网络,因为标准的有类网络中,各类网络的网络ID长度和地址范围都是固定的,一看具体的IPv4地址中第一个8位组所属的取值段范围就知道属于哪类网络,及所对应的网络ID长度了,根本不用标识。
如A类IPv4地址第一个8位组取值的地址范围为1~126,网络ID长度固定为8位;B类IPv4地址第一个8位组取值的地址范围为128~191,网络ID长度固定为16位;C类IPv4地址第一个8位组取值的地址范围为192~223,网络ID长度固定为24位。
其实无论是网络ID,还子网掩码长度,最大的意义还是针对无类网络而言,因为这时它们是可变的,也没有A、B、C这样的分类了,无论第一个8位组属于哪个取值范围,都可以有各种网络ID、子网掩码长度。如有1.1.10.20/26这样的地址,也可以有192.168.1.10/8这样的地址,前者通过子网划分得到,而后者可以通过子网聚合得到。
与采用子网掩码表示形式一样,从一个IPv4地址表示形式中的地址前缀值可以看出这个IPv4地址所在的网络或子网,以及这个网络和子网的地址范围。
如从131.107.0.0/18这个地址中可知它所对应的网络中有18位属于网络ID部分,有14位属于主机ID部分,可分配给主机的IPv4地址数就是2^14-2=16382。
9、几种特殊的IPv4地址
在我们平时进行IPv4地址配置和管理时,经常遇到这么几种特殊的IPv4地址,其中一种最重要的IPv4地址就是私网IP地址,也就是通常所说的局域网IP地址或者专用网络IP地址。还有像以0、127、169开头的IPv4地址。本节将做一个集中介绍。
9.1、私网IP地址
为了提高IPv4地址的重复利用率,在设计IPv4地址时就专门在前面介绍的A、B、C这类IPv4地址中各自划分了一段专用于各组织局域网内部的地址段,这就是我们前面所说的私网IP地址(又称局域网专用IP地址或者专用网络地址)。
私网IPv4地址在不同公司内部的局域网中是可以重复使用的,且无须向IP地址管理机构申请、注册和购买的。在A、B、C类地址中各自划分的局域网专用地址段如下。
(1)10.0.0.0/8(10.0.0.0,255.0.0.0)
在A类地址中,局域网内部节点可以使用10.0.0.1~10.255.255.254范围内有效单播IPv4地址。如果用地址前缀表示方式,则为10.0.0.0/8。
在这样一个地址空间中有24个主机ID位,相当于最多可以有224(16 777 216)个IP地址(包括了网络地址和广播地址),满足了几乎所有大型规模局域网对IP地址的需求。
(2)172.16.0.0/12(172.16.0.0,255.240.0.0)
在B类地址中,局域网内部节点可以使用172.16.0.1~172.31.255.254范围内的有效IPv4单播地址。如果用地址前缀表示方式,则为172.16.0.0/12。
针对具体的网络,仍是B类网络中所限制的16位主机ID个数,相当于最多可有216(65 536)个IP地址(包括了网络地址和广播地址),满足了几乎所有中等规模局域网对IP地址的需求。
(3)192.168.0.0/16(192.168.0.0,255.255.0.0)
对于数量最多的小型局域网,其内部节点可以使用C类地址中的192.168.0.1~192.168.255.254范围内的有效IPv4单播地址。如果用地址前缀表示,则为192.168.0.0/16。
针对具体的网络,仍是C类网络中所限制的8位主机ID个数,相当于最多可有28(256)个IP地址(包括网络地址和广播地址),满足了大多数小型规模局域网对IP地址的需求。
因为ICANN永远不会把专用地址空间内的IPv4地址分配给一个连接到互联网的组织,所以互联网路由器中也永远不会包含指向专用地址的路由。您也无法通过互联网连接到一个专用地址。
正因为如此,使用私网IPv4地址的主机必须将其互联网通信量请求发送到一个有效公用地址的应用层网关(例如一个代理服务器),或者通过一个网络地址转换(NAT)设备将此专用地址转换成一个有效的公网IPv4地址再与互联网连接。
9.2、169开头的IPv4地址
在运行Windows操作系统中,如果你采用的是自动IP地址分配方式,但本地网络中又没有部署用于自动IP地址分配的DHCP服务器,则这些系统主机就会自动获得一个以169开头的IP地址。这就是所谓的自动专用IP地址,其地址范围包括一个B类地址段——169.254.0.0/16,子网掩码为255.255.0.0。
9.3、127.0.0.1地址
我们在配置网络设备或者进行系统主机测试时,经常用到127.0.0.1这个地址。它不能分配给主机用,但它却可以用来进行各种地址管理操作,如Ping操作。
其实这个地址有个专门的名称,即环回地址(Loopback Address),是主机IP堆栈内部的IPv4地址,主要用于网络软件测试以及本地机进程间通信,在IP网络中用来测试主机TCP/IP协议是否工作正常。
无论什么程序,一旦使用回环地址发送数据,协议软件立即返回,不进行任何网络传输,所以执行Ping操作也只在本机上进行环路测试,用来检测网卡是否工作正常(主要受操作系统中通信协议和驱动程序安装是否正确影响)。
9.4、0.0.0.0地址
严格说来,0.0.0.0不是一个真正意义上的IP地址,因为我们在介绍IPv4地址的分类时就说到,第一个8位组的值不能为0。
但在实际的设备配置和网络中确实又要用到这样一个IPv4地址。其实它不是特指某个IPv4地址,在不同的情形中使用它有不同的含义。
如我们在配置默认路由时就使用了0.0.0.0这个IPv4地址,它是代表所有不清楚路由的目的主机和目的网络。
这里的“不清楚”是指在本机的路由表里没有特定路由表项指明如何到达这些主机或网络。
在网络配置中,0.0.0.0又代表整个网络,即网络中的所有主机。
发表评论