赞
踩
网络层
2021-6-3
大二上课笔记,谢希仁版,图源教材
本章节向大家介绍网络层的内容,先介绍网络层在计算机网络中提供什么服务,然后介绍网络层的核心内容——IP协议,然后介绍服务于IP协议的相关内容。
对于网络层提供的服务,曾有争议,有人认为应该学习电信网成功的经验,让网络提供可靠服务,提供一种面向连接的服务,这会在两台计算机之间搭建一条虚电路,两台主机之间的通信是可靠的,但是这带来的问题是,两台主机之间通信会十分缓慢。
互联网的设计思路则是无连接服务,因为电信网成功的原因是因为,电话机的终端是简单的,并没有差错处理的能力,而互联网的终端则是强大的计算机,因此,设计者采用了面向数据报的无连接服务,是一种不可靠的服务。出现差错则有强大的计算机终端处理。
连接在互联网之中的主机如何通信?下面将介绍网际通信协议——IP协议。
在理解IP协议前,首先要明白它的应用场景——虚拟互联网络。各个计算机,网络之间是通过虚拟的方式互连的。
首先我们要明白,不同的物理网络之间的结构是不一样的,我们想要通信,需要消除这种异构,从逻辑上将其统一。通过IP协议,将其从逻辑上连接成一个统一的网络,忽略各种异构的细节。
我们可以看下图的例子,主机H1发送消息给H2,经过多个路由器的分组转发,最后交付给H2,这些路由器的物理结构都是不同的,但是IP协议将其高度抽象化了。
要理解该协议的功能,肯定要看数据报格式的首部,即其控制字段,看它的字段便能猜测到它的大部分功能了。
IP地址是给互联网上的各个主机之间分配的唯一的标识符,对于IP地址的编制有三个阶段:分类编址,划分子网,构造超网。
对于将IP地址分类的方法,是指将IP地址分为两个字段——网络号和主机号,通过网络号来标识主机所在的网络,然后通过主机号来找到具体的主机。
如下图为两级IP地址的格式。
如下图,有五类IP地址,其中A,B,C类是单播地址(一对一通信)
将IP地址分类的目的是减少IP地址的浪费,因为不同的网络拥有的主机数也不同,倘若都是同一类地址,那主机数较少的网络则会浪费较多的地址。
想要知道IP协议具体有什么功能,可以通过它的数据报首部格式略知一二,如下图是数据报的完整格式。
上图我们看到IP数据报有首部和数据部分,数据部分我们不用花太多信息,理解好首部即理解了IP协议的内容,下面将一个一个展开首部内容的讲解,首先讲固定部分,下一段讲可变部分。
上面我们能看到,横向的是位大小,纵向的是字节大小,一行4字节,32位。
1. 版本:4位,指IP协议的版本,双方使用的版本应该是一致的。IPV4与IPV6是不兼容的
2. 首部长度:4位,IP首部的固定长度为20字节,最大长度为60字节,要注意的是,当长度不为4的倍数的时候,则需要在最后填充。
3. 区分服务:一般不使用
4. 总长度:指整个IP数据报的总长度,包括首部和数据部分。
我们知道在数据链路层有一个最大长度MTU,因此我们IP数据报的最大长度不能超过该值,否则需要分片处理。
分片的时候,该值则标识当前分片的首部和数据部分。
5. 标识:IP服务维持的一个计数器,产生一个数据报则加1。我们要知道,IP服务是无连接服务,不需要按顺序接收,该标识是用于在分片的时候,寻找相同片的数据报的。
6. 标志:3位,目前只有2位有意义。最低位:MF,more fragment,如果该值等于1则标识后面还有分片,反之即该分片为最后一个
中间位:DF,don’t fragment ,当为0时则不能分片。
7. 片偏移:该字段表示当前分片在原数据报的相对位置,以8个字节为偏移单位。下面举个例子
倘若一个数据报总长度3820,数据部分为3800,分片为不超过1420长度的部分,即每部分的数据长度不超过1400,则需要分成三片,1400,1400,1000,上面我们可以看到片偏移的情况。下图可以看到相关数值。
8. 生存时间:表示该数据报在网络中的生存时间,避免无法交付的数据报在互联网中无限兜圈子。
9. 协议:指出数据报使用的数据携带的协议。相关字段如下图
10. 首部检验和:
IP数据报也使用首部检验和来验证数据报,不过只检查数据报的首部,而不检查数据部分。
事实上该部分很少是使用,因为会增加路由器的开销。
首先我们要先弄懂IP地址与物理地址之间的不同处。
从下图可以看到, IP地址是应用网络层和以上的地址,是一种逻辑地址;而物理地址则是数据链路层,物理层使用的地址。
我们还要注意,在物理层,只能看到物理层的地址,在网络层,只能看到抽象后的网络层IP地址和数据报。
具体的IP地址与物理地址的组合应用在互联网中找到目的地址,则可以见下图。
图a中我们看到,一个主机终端只有一个物理地址,但是一个路由器有两个物理地址,因为路由器连接到了两个局域网上,每个局域网中都有一个地址。
在图b我们可以具体地看到,网络层IP地址与物理层MAC地址的应用,下图也归纳了具体情况
在实际应用过程中,我们路由器找到具体网络地址后,如何在下层转换成物理地址来找到具体的主机呢?我们是通过ARP(Address Resolution Protocol)完成的。
(1)工作方式:ARP协议解决该问题的方法是,在主机中设置一个ARP缓存区,专门用来存储IP地址到物理地址的映射表,并且该表会经常动态更新,以适应映射关系的变化。
(2)工作流程:具体的工作流程将从下面一个例子展开。
(1)发送请求
(2)接收请求
(3)响应请求
(4)写入缓存区
首先我们介绍一下路由器如何转发IP地址,下图是路由器的路由表样例。
在路由表中,最重要的是以下的两个信息:
在路由器的路由表中,首先标识目的地址,然后下一跳地址表示分组应该转发到哪里,如果是直接连接则直接交付,否则转发给下一个路由器。
路由器的分组转发都是基于目的主机所在的网络进行转发的,有时候有些路由器会设置成默认路由,所有分组都转发到一个默认网络中,以减少路由表的消耗。
IP协议实际使用肯定也会出现许许多多的问题,这里将介绍如何优化IP协议的使用。
如何优化首先要知道出现了什么问题。
即便对IP地址进行了分类,但是仍会出现IP地址浪费的情况,因为大多数时候人们申请IP地址都会买多不买少,因此会有大量地址浪费。
两级地址的使用,倘若某个单位新增加了一个网络,则需要申请IP地址才能使用,这就需要等待时间,如何能够灵活的新增网络?
划分子网解决了新增网络不灵活的问题,通过增加子网号字段,可以灵活的解决网络新增或删除的问题。
首先一个单位是以一个整体的网络对外表现的,但是这个单位中可以存在多个由物理网络划分的不同子网。
划分的方法则是将IP地址变成三级地址,增加一个子网号
其余的操作并无太大区别,只不过在寻址的时候选择网络号后再选择子网号再选择主机号,应用例子可见下图。
现在还要解决一个问题就是,我们划分了子网后,我们如何将这个IP地址转发到相应的子网中去呢?
解决办法是将主机号分一半作为子网号。
原先网络号为:192.168.0.0,后面十六位则作为主机号
而现在则为:192.168.1.0,前面两位作为子网号。
通过上图的例子我们明白如何通过掩码计算网络主机号,把IP地址减去子网掩码,子网掩码一般为全1。
即便划分子网,但IP地址仍面临不够用的情况,,因此又出现了一种无分类编制的方法(CIDR)。
CIDR方法消除了传统的分类概念,将IP地址分为两部分,网络前缀和主机号。
并采用斜线记法。
即表明前20位为网络前缀,后面的则为主机号。其地址掩码同样的,前面20位全为1。
这样一个CIDR地址块便有许多个地址,在路由表中则通过这种地址聚合来查找目的网络,大大减少了路由表的消耗。这种聚合也叫构成超网。
事实上CIDR的优势在于,它其实是一个灵活分类的地址,可以进行灵活的分类,不再拘束与ABC类,分类更灵活,也更切合需求。
举一个例子说明,倘若一条信息的目的地址是大学A的B系,大学A的地址是:206.0.38.0/22,而B系的地址为:206.0.71.128/25,这时候在路由器中应该发送到哪里去呢?
这时应该选择网络前缀最长的路由,因为前缀越长,则地址块越小,也就越具体。
由于路由选择的方法是最长前缀匹配,那路由表的查询过程将会变得复杂,如何减少查找方法呢?在这里应用了二叉树的方法。
通过网际控制报文协议ICMP来提高IP数据报的交付成功率。
ICMP实际上是IP层的协议,它存放在IP报文的数据部分中。
ICMP有ICMP差错报告报文和ICMP询问报文两种
前面讨论了网络传输协议,下面将讨论,在网络传输中,路由器如何构造路由表?如何选择合适的路线进行传输。
路由算法是指路由器生成路由表,并且如何选择路由表进行分组转发的算法。它应该尽量简单,而且要正确且完整,并具有稳定性等。
实际应用中有静态路由选择策略和动态路由选择策略,静态路由也叫做非自适应性动态路由也叫自适应路由选择,动态路由能较好的适应网络状态的变化。
互联网由于网络复杂,因此实际上使用的是自适应路由选择算法,在实际情况中,由于数据保护等原因,单位或公司等不会与外界共享内部的互联网拓扑结构,因此在互联网中,实际上是有许多个小的自治系统AS组成的,这些自治系统内部使用自己的路由选择策略,为内部网关协议,而自治系统之间的连接则使用外部网关策略,下面都会逐一讲解到。
路由器拥有多个输入输出端口,通过端口输入的信息,查找它的目的网络,通过路由选择协议来选择输出端口,然后进行转发。
路由选择部分称为控制部分,下面的输入端口,输出端口和交换结构部分称为分组转发部分。
RIP算法是较早使用的算法,是一种分布式的基于距离向量的路由选择协议,就是按距离最短来选择路由,它的特点是简单。
RIP算法要求路由器要维护它到目的网络的距离,经过一个路由器则距离+1,上面R1到网1或者网2的距离则为1(直接连接),而到网3则距离为2(经过一个路由器)。
距离也称跳数,说白就是要经过几个路由器,但是这个距离有最大限制,不能超过16,也就意味着,该算法只适用于小型的互联网。
弄清楚路由交换协议要知道:
RIP协议是:
路由表信息则是通过这样的方法不断地更新,从而逐渐获得全部信息。
路由表的信息包括到目的网络的距离,以及经过的下一跳地址,而路由表更新则需要找到每个目的网络的最短距离,这种算法叫做距离向量算法。
对相邻路由器X发来的RIP报文进行以下步骤:
要注意的是,如果3分钟没有收到相邻路由器的更新信息,则将其距离设置为16,意不可达。
下面举个例子
上面我们看到路由器R6原先的路由表,以及R4发来的更新信息
上面我们对发来的路由表进行修改,距离+1,下一跳地址均改为R4
然后对原先路由表进行比较更新。原先没有Net1的信息则加入,原先Net2的下一跳为R4则直接更新,原先Net3的下一跳地址为R5且距离较大,则更新。
从上图我们能看到,RIP在用UDP进行传输的,RIP报文包括首部和路由部分,首部是放一些控制信息,路由部分则放目标地址,下一跳地址,距离等路由表相关信息。
RIP的特点是,好消息传播快,坏消息传播慢
我们设想,倘若一个路由器发现一个更短路径,相邻路由器马上知道,倘若一个路由器故障了,则很难被发现
网1出问题后,R1收到R2的报文,以为可以通过R2到达网1,则更新,R2收到R1的报文,又以为可以通过R1到达网1,更新,直到最后才发现网1不可达。因此我们会发现,RIP协议仅仅适合规模较小的网络,下面的OSPF协议则适合规模较大的网络。
OSPF即指开放最短路径优先,是一种最短路径优先的算法。
OSPF使用的是链路状态协议不同于距离向量算法。见如下:1. 向谁发送信息?2. 发送什么信息? 3. 什么时候发送?
通过上面的方法,所有路由器都能获得一个全网的拓扑结构图,就能构建自己的路由表
为了对OSPF进行优化,还将一个网络自治系统继续划分成更小的区域。
区域划分使用层级结构,有主干区域和边界区域,主干区域中的主干路由器中的边界路由器负责与外界通信。
从上图可以看到,OSPF报文直接通过IP数据报进行传送。包括首部控制信息与分组信息。
上面我们看到OSPF有分组类型,下面介绍一下:
OSPF协议中,每个路由器隔十秒要发送问候分组,确认路由器可达,若超过40秒没收到问候分组则认为该路由器不可达。
首先我们思考,为什么外部网关协议不适用内部网关协议的方法呢?同样都是寻址罢了,我们设立自治系统的目的仅仅是用于保护各单位的数据隐私。
通过上面的描述我们的外部网关的协议找的不是最佳道路,而是较佳的道路。因此使用路径向量路由选择协议
上图能看到BGP是在TCP中传输的,报文也有不同的类型,具体不展示了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。