网络层(中)

计算机网络-网络层(中)

Created: Oct 30, 2019 10:44 PM
作者: Tian Ling
标签: 网络层
邮箱: 397124194@qq.com

划分子网和构造超网

划分子网

  • 一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网。划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个网络
  • 划分子网的方法是从网络的主机号借用若干位作为子网号,当然主机号也就相应减少了同样的位数。于是两级IP地址在本单元内部就变为了三级IP地址:网络号、子网号、主机号。
  • 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。

子网掩码

问题:为什么要用子网掩码?

解决:没法通过IP地址来获取对应的子网号。

IP地址的各字段和子网掩码

图片说明

问题:如何使用子网掩码?

解决:路由器将自己的子网掩码与获得的IP地址逐位进行 与运算,即可得到网络地址。

:不划分子网时,使用默认子网掩码,连续的1的长度与对应的A、B、C类网络的网络号长度一致。

注:在RFC 950成为互联网的正式标准后,路由器在和相邻路由器交换路由信息时,必须把自己所在网络的子网掩码高速相邻路由器。

使用子网时分组的转发

在划分子网的情况下,分组转发的算法必须做相应的改动。

图片说明

举个栗子吧

图片说明

图片说明

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

问题:在1992年互联网面临着3个必须解决的问题:1、B类地址在1992年已分配了近一半,眼看很快就将全部分配完毕!2、互联网主干网上的路由表中的项目急剧增长。3、整个IPv4的地址空间最终将全部耗尽。

解决:无分类域间路由选择CIDR(Classless Inter-Domain Routing)

CIDR的主要特点

  1. 消除了传统的A类、B类、C类地址以及划分子网的概念,更加有效的分配地址空间。CIDR把32位的IP地址分为前后两个部分:IP地址 ::={<网络前缀>,<主机号>};CIDR还使用“斜线记法”,即在IP地址后面加上斜线“/”,然后写上网络前缀所占位数
  2. CIDR把前缀相同的连续的IP组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址和最大地址,以及地址块中的地址数。

注:斜线记法中,斜线后面的数字就是地址掩码中1的个数。

注:由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合

例题

图片说明

最长前缀匹配

一个IP地址可能会匹配多个网络前缀,应当从结果种选择具有最长网络前缀的路由。

例题

图片说明

使用二叉线索查找路由表

问题:如何减少路由表查找时间?

描述:连接路由器的线路的速率为10Gbit/s,而分组的平均长度为2000bit,那么路由器就应当平均每秒钟能够处理500万个分组。或者说,路由器处理一个分组的平均时间只有200ns。

解决:将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的是二叉线索

举例说明

图片说明

注:需要先找出每个IP地址的唯一前缀

注:为了提高二叉线索的查找速度,广发使用了各种压缩技术。例如,在上图的最后两个地址,其最前面的4位都是1011.因此,只要一个地址的前4位是1011,就可以跳过前面4位而直接从第5位开始比较。

网际控制报文协议ICMP

问题:为什么要使用该协议?

解决:为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocoll)。ICMP允许主机和路由器报告差错情况和提供有关异常情况的报告。

ICMP报文的格式

图片说明

注:ICMP报文装在IP数据报中

ICMP报文的种类

两种:ICMP差错报告报文ICMP询问报文

图片说明

ICMP差错报告报文

  1. 终点不可达: 当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
  2. 时间超过: 当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。 当终点在预先规定的时间内不能收到一个数据报的全部数据报报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
  3. 参数问题: 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  4. 改变路由(重定向)

图片说明

问题:ICMP差错报告报文是如何组装的?

解决:把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。

:提取收到的数据报的数据字段前8个字节是为了得到传输层的端口号。

当然有些情况不应当发送ICMP差错报告报文:

  • 对于ICMP差错报告报文,不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文。
  • 对具有多播地址的数据报,都不发送ICMP差错报告报文。
  • 对具有特殊地址(127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文。

ICMP询问报文

  1. 回送请求和回答: ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
  2. 时间戳请求和回答: ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。

ICMP的应用举例

  • PING: PING使用了ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个栗子。它没有通过传输层的TCP或UDP。
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务