【计算机网络】划分子网与超网

划分子网

两级IP地址到三级IP地址
IP缺陷

  • IP地址空间的利用率有时很低
  • 给每一个物理网络分配一个网络号使路由表变得太大因而使网络性能变坏
  • 两级IP地址不够灵活

从1985年起在IP地址中又增加了一个“子网号字段”,使两级的IP地址变为三级的IP地址。这种做法叫做划分子网。划分子网已成为因特网的正式标准协议。

划分子网的思路
划分子网纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络。
从主机号借用若干个比特作为子网号subnet-id,而主机号host-id也就相应减少若干个比特。

IP地址 ::={<网络号>,<子网号>,<主机号>};
凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器,但此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,把IP数据报交付目的主机。
然后此路由器在收到IP数据报后,再按目的的网络号net-id和子网号subnet-id找到目的子网,最后把IP数据报直接交付给目的主机。
当没有划分子网时,IP地址是两级结构,地址的网络号字段也就是IP地址的“因特网部分”,而主机号字段是IP地址的“本地部分
划分子网后IP地址就变成三级结构,划分子网是将IP地址的本地部分再划分,而不改变IP地址的因特网部分

子网掩码
从一个IP数据报的首部就无法判断源主机或目的主机所连接的网络是否进行了子网的划分。使用子网掩码可以找出IP地址中的子网部分。
若使用较少位数的子网号,则每一个子网上可连接的主机数就较多,反之,若使用较多位数的子网号,则子网的数目较多但每个子网上可接的主机数就较少,因此我们可根据网络的具体情况来选择合适的子网掩码。

使用子网掩码的分组转发过程
在不划分子网的两级IP地址下,从IP地址得出网络地址是个很简单的事情。
但在划分子网的情况下,从IP地址却不能唯一的得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。

在划分子网的情况下路由器转发分组的算法

  • 1从收到的分组的首部提取目的IP地址D
  • 2先用各网络的子网掩码额D逐比特相“与”看是否和相应的网络地址匹配,若匹配,则将分组直接交付否则就是间接交付,执行3
  • 3若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一条路由器,否则执行4.
  • 4对路由表中的每一条的子网掩码和D逐比特相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一条路由器否则执行5
  • 5若路由表中有一个默认路由,则将分组送给路由表中所指明的默认路由器,否则之心6
  • 6报告转发分组出错。

无分类编址CIDR(构成超网)

划分子网在一定程度上缓解了因特网在发送中遇到了困难,然而在1992年因特网仍然面临几个尽早解决的问题,这就是:
B类地址在1992年已经分配了近一半,因特网主干网的路由表中的项目增长,整个IPv4的地址空间最终将全部消耗。

IP编址问题的演进
1987年,RFC1009就指明了在一个划分子网中的网络中可同时使用几个不同的子网掩码,用变长子网掩码VLSM可进一步提高IP地址资源的利用率。
在VLSM的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择CIDR。

CIDR特点
CIDR消除了传统的A类,B类和C类地址,以及划分子网的概念,因而可以更加有效的分配IPv4的地址空间。
CIDR使用各种长度的“网络前缀”来代替分类地址中的网络号和子网号。IP地址从三级编址(使用子网掩码)又回到了两级编址。

无分类的两级编址
无分类的两级编址的记法是:
IP地址 ::={<网络前缀>,<主机号>}
CIDR还使用“斜线记法”,它又称为CIDR记法,即在IP地址后面加上一个“/”,然后写上网络前缀所占的比特数。(这个数值对应于三级编址中子网掩码中的比特1的个数)
CIDR将网络前缀都相同的连续的IP地址组成“CIDR地址块”。

常用的CIDR地址块
128.14.32.0/20表示的地址块共有212个地址(因为斜线后面的20是网络前缀的比特数,所以主机号的比特数是12)
这个地址块的起始地址是128.14.32.0
在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20地址块”
128.14.32.0/20地址块最小地址128.14.32.0
128.14.32.0/20地址块的最大地址为128.14.32.255
全0和全1的主机号地址一般不使用

路由聚合
一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个原来传统类地址的路由。
路由聚合也称为构成超网。
CIDR虽然不使用子网了,但仍然使用“掩码”(但不叫子网掩码)
对于/20地址块,它的掩码是20个连续的1。斜线记法中的数字就是掩码中1的个数。
用转发器或网桥连接起来的若干个局域网仍是一个网络,因此这些局域网都具有同样的网络号net-id
所有分配到网络号net-id的网络范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。

CIDR记法的其他形式
10.0.0.0/10可简写为10/10,也就是将点分十进制中低位连续的0省略。
10.0.0.0/10隐含的指出IP地址10.0.0.0的掩码是255.192.00,即
11111111 11000000 00000000 00000000
网络前缀的后面加一个星号*的表示方法
如 00001010 00 在星号前面的是网络前缀,而星号表示IP地址中的主机号。
前缀长度不超过23bit的CIDR地址块都包含了多个C类地址。这些C类地址合起来就构成了超网。
CIDR地址块中的地址数一定是2的整数次幂。网络前缀越短,其地址块所包含的地址数就越多,而在三级结构的IP地址中,划分子网是使前缀变长。

前缀最长匹配
使用CIDR时,路由表中的每个项目由“网络前缀”和“下一条地址”组成。在查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配。网络前缀越长,其地址块就越小,因而路由就具体。最长前缀匹配又称为最长匹配。

最长前缀匹配举例
收到的分组的目的地址D=206.0.68.0/22
路由表中的项目:206.0.68.0/22(ISP)
206.0.71.128/25(四系)
查找路由表中的第一个项目
第一个项目206.0.68.0/22的掩码M有22个连续的1.
M=11111111 11111111 11111100 00000000
因此只需要把D的第三个字节转换成二进制。

在这里插入图片描述
D AND(11111111 11111111 11111100 00000000)=206.0.68.0/22(匹配)
D AND(11111111 11111111 11111100 00000000)=206.0.71.128/25(匹配)
两个都匹配选择最长前缀的地址

使用二叉线索查找路由表

当路由表的项目数很大时,怎样设法减少路由表的查找时间就成为一个非常重要的问题。
为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下的按层次进行查找,这里最常用的就是二叉线索。
IP地址中从左到右的比特值决定了从根节点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址
为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

网际控制报文协议ICMP
为了提高IP数据报交付成功的机会,在网际层使用了因特网控制报文协议。
ICMP允许主机或路由器报告差错情况和提高有关异常情况的报告。
ICMP不是高层协议,而是IP层的协议
ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。

ICMP报文
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文
ICMP报文的前4个字节是统一的格式,工有三个字段:即类型,代码和检验和。接着的4个字节的内容与ICMP的类型有关。

ICMP差错报文

  • 终点不可达
  • 源站抑制
  • 时间超过
  • 参数问题
  • 改变路由(重定向)

不应发送ICMP差错报告报文的几种情况
对ICMP差错报告报文不再发送ICMP差错报告报文。
对第一个分片的数据报片的所有后续数据报不发送
对具有多播地址的数据不发
对具有特殊地址(如:127.0.0.0或0.0.0.0)不发

ICMP询问报文

  • 回送请求和回答报文
  • 时间戳请求和回答报文
  • 掩码地址请求和回答报文
  • 路由器询问和通告报文

猜你喜欢

转载自blog.csdn.net/weixin_41892460/article/details/82950499