1.从两级IP地址到三级IP地址:
**两级IP地址设计的不合理之处:
①IP地址空间的利用率有时很低;
②给每一个物理网络分配一个网络号,会使路由表变得太大因而使得网络性能变坏;
③两级IP地址不够灵活;
2.划分子网:1985年起在IP地址中又增加一个“子网号字段”使得两级IP地址变为三级IP地址;
(1)一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网;划分子网纯属一个单位内部的事物,本单位以外的网络看不见这个网络是有多少个子网组成,因为这个单位对外仍然表现为一个网络;
(2)划分子网的方法是从网络的主机号借用若干位作为子网号subnet-id,当然主机号就相应的减少了同样的位数;
(3)IP地址={<网络号>,<子网号>,<主机号>}
(4)凡是从其他网络发送给本网络某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器;但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付给目的主机;
(5)总之,划分子网后IP地址就变成了三级结构,划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号;
3.子网掩码:
(1)由于IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行了子网的划分,IP数据包的首部没有包含任何关于子网划分的信息;使用子网掩码,路由器可以转发IP数据报到相应的子网中去;
(2)子网掩码是路由器用来查找目的主机所在的子网的IP地址的;
(3)路由器把三级IP地址的子网掩码和收到的数据报的目的IP地址逐位相“与”(AND),得出所要求的子网的网络地址;
(4)不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位的“与”运算,就立即得到网络地址来;
(5)因特网的标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏;如果一个网络不划分子网,那么该网络的子网掩码就使用默认子网掩码;
(6)默认子网掩码:
A类地址的默认子网掩码:255.0.0.0
B类地址的默认子网掩码:255.255.0.0
C类地址的默认子网掩码:255.255.255.0
(7)子网掩码是一个网络或一个子网的重要属性:路由器和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器;
(8)采用固定长度子网时,所划分的所有子网的子网掩码都是相同的;
(9)子网数是根据子网号subnet-id计算出来的,若subnet-id有N位,则共有2的N次方种可能的排序;除去全0和全1这两种情况,就得出表中的子网数;
(10)若使用较少位数的子网号,则每一个子网上可连接的主机数就较多;若使用较多位数的子网号,则子网的数目较多但每个子网上可连接的主机数就较少;
(11)划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数;
(12)同样的IP地址和不同的子网掩码可以得出相同的网络地址,但是,不同的掩码的效果是不同的;子网号和主机号不同的划分方法,可划分的子网数和每一个子网中的最大主机数都是不同的;
4.使用子网时分组的转发:
**由表必须包含以下三项内容:目的网络地址,子网掩码和下一跳地址;
**划分子网后,分组转发的算法:
(1)从收到的数据报的首部提取目的IP地址D;
(2)先判断是否为直接交付,对路由器直接连接的网络逐个进行检查:用各网段的子网掩码和D逐位相“与”(AND)操作,看结果是否和相应的网络地址匹配;若匹配,则把分组进行直接交付(当然还需要把D转换为物理地址,把数据报封装在MAC帧中发送出去),转发任务结束;否则就是间接交付,执行(3);
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由器中所指明的下一跳路由器;否则,执行(4);
(4)对路由表中的每一行(目的网络地址,子网掩码,下一跳地址),用其中的子网掩码和D逐位相“与”(AND操作),其结果为N;若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则,执行(5);
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6);
(6)报告转发分组出错;
5.无分类编址CIDR(构成超网):
(1)变长子网掩码VLSM:指明在一个划分子网的网络中可同时使用几个不同的子网掩码;
(2)无分类域间路由CIDR:
**CIDR消除了传统的A类,B类,C类地址以及划分子网的概念,因而可以更加有效的分配IPv4的地址空间;
**CIDR把32位的IP地址划分为两部分,前面的部分是“网络前缀”用来指明网络,后面的部分则用来指明主机;
**IP地址={<网络前缀>,<主机号>}
**CIDR还使用“斜线记法”或称“CIDR记法”,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数;128.14.35.7/24
**CIDR把网络前缀都相同的连续IP地址组成一个“CIDR地址块”,我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数;
(3)CIDR使用32位的地址掩码,地址掩码有一串1和一串0组成,而1的个数就是网络前缀的长度;斜线记法中,斜线后面的数字就是地址掩码中1的个数;
(4)128.14.35.7/20=10000000 00001110 00100011 00000111 //红色表示网络前缀:20位
(5)斜线记法除了可以表示IP地址外,还可以表示这个地址的网络前缀有几位,剩下的就是主机位;通过简单的计算,还可以得出这个地址块中的最下地址和最大地址;
(6)求地址块中最小地址和最大地址:
**找出地址掩码中1和0的交界处发生在地址中的哪一个字节;
**把这一字节的十进制数用二进制表示出来;
** 把主机号数(32-网络前缀号数)的那几位,全部置0就是最小地址,全部置0就是最大地址;
(7)路由聚合:一个CIDR地址块中很多地址,在路由表中利用CIDR地址块来查找目的网络;路由聚合也称为构造超网
(8)CIDR记法有很多种形式:10.0.0.0/10可简写为:10/10;在网络前缀的后面加一个星号*:00001010 00*,*号表示IP地址中的主机号;
(9)构成超网的方法:就是将网络前缀缩短。网络前缀越短,其地址块所包含的地址数就越多;
(10)最长前缀匹配:
**路由表中每个项目由“网络前缀”和“下一跳地址”组成,但是在查找路由表时,可能会得到不止一个匹配结果;
**应当从匹配结果中选择具有最长网络前缀的路由;这叫做最长前缀匹配,这是因为网络前缀越长,其地址块就越小,因而路由就越具体;
(11)使用二叉线索查找路由表:
**为了使路由器更加有效的查找最长网络前缀,通常把无分类编址的路由表存放在一种层次的数据结构中,然后自上而下的按层次进行查找;
**常用二叉线索,这种特殊结构的树,IP地址中从左到右的比特值决定了从根节点逐层向下延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址;
**从二叉线索的根节点自顶向下的深度最多是32层,每一层对应于IP地址中的一位;一个IP地址存入二叉线索的规则很简单:先检测IP地址左边的第一位,如为0,则第一层的结点就在根节点的左下方;如为1,则在右下方,然后再检查地址的第二位,构造第二层的结点;
**二叉线索只是提供了一种可以快速在路由表中找到匹配的叶结点的机制;
来源:https://www.cnblogs.com/hqutcy/p/5652749.html