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