1、从两级IP地址到三级IP地址
现在随着因特网的普及和技术的发展,早期ARPANET的设计之缺陷显露无疑:
(1)IP地址空间的利用率有时会很低:一个A类IP地址网络可连接超过1000万台主机,而每个B类IP地址网络可连接超过6万台。可是有些网络对连接在网络上的主机数有限制,甚至远小于这样的数量。
(2)给每个物理网络分配一个网络号会使路由表变得庞大臃肿,降低网络性能。
(3)两级IP地址不够灵活:只能在申请完IP地址后才能进行下一步工作,而无法按自己的需求变更。
为了解决这个问题,从1985年起,在IP地址中又增加了一个“子网号字段”,使两级IP地址变为三级IP地址。这种做法叫作划分子网,或子网寻址或子网路由选择~
划分子网的基本思路如下:
(1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网(subnet)。划分子网只是单位内部的事情,本单位以为无法得知这个网络具体的子网数及组成,这个单位对外仍然只表现为一个网络。
(2)划分子网的方法是从网络的主机号借用若干位作为子网号subnet-id,与此同时主机号也减少相应位数(总位数32位不变)。由此两级IP地址可变为三级IP地址: IP地址 ::= {<网络号>,<子网号>,<主机号>}
(3)从外部网络发送给本单位某主机的IP数据报仍根据目的网络号找到连接在本单位网络上的路由器。但随后在本网络内部,路由器根据目的网络号和子网号找到目的子网,将IP数据报交付目的主机。
注意:划分子网只是把IP地址的主机号这部分进行再划分,并不改变IP地址原来的网络号~
2、子网掩码
子网掩码是干什么的呢?我们知道,从IP数据报的首部无法看出源主机和目的主机所连接的网络是否进行了子网划分,所以机智的人们想到了子网掩码(subnet mask)的方法~
做法:将三级IP地址的子网掩码(根据子网划分而变)和收到的数据报的目的IP地址逐位“与”(AND),就可得出所要找的子网的网络地址~即主机号对应的位置为0,其他位均为1~
子网掩码是一个网络或一个子网的重要属性,路由器的路由表中除了有目的网络地址,还有该网络的子网掩码,这是现在因特网的标准规定~
A类地址的默认子网掩码是255.0.0.0;
B类地址的默认子网掩码是255.255.0.0;
C类地址的默认子网掩码是255.255.255.0。
使用子网时分组的转发
使用子网划分后,路由表必须包含以下三项内容:目的网络地址、子网掩码和下一跳地址。
在划分子网的情况下,路由转发分组的算法如下:
(1)从收到的数据报的首部提取目的IP地址D。
(2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”(AND操作),看结果是否和相应的网络地址匹配。若匹配,则把分组进行直接交付(还需把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束。否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4)对路由表中的每一行(目的网络地址、子网掩码、下一跳地址),用其中的子网掩码和D逐位相“与”(AND),其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5)。
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6)报告转发分组出错。
Ps:可以和没划分子网的情况比较下,发现大体的流程是不变的:提取IP地址、判断是否在同一网络、判断是否有特定路由、判断间接交付、判断是否有默认路由。
只是没有和子网掩码的“与”操作而已~