哈工大计算机网络课程网络层协议之:网络层服务概述
文章目录
- 哈工大计算机网络课程网络层协议之:网络层服务概述
- 网络层概述
- 网络层核心功能—转发与路由
- 网络层核心功能—连接建立
- 网络层服务模型
- 虚电路网络与数据报网络
- 虚电路网络
- 虚电路(VC)的具体实现
- VC转发表
- 虚电路信令协议(signaling protocols)
- 数据报网络
- 数据报网络 OR VC网络
网络层概述
网络层提供的主要功能包括:
- 从发送主机向接收主机传送数据段(Segment)
- 发送主机:将数据段封装到数据报(datagram)中
- 接收主机:向传输层交付数据段(Segment)
- 每个主机和路由器都运行网络层协议
- 路由器检验所有穿越它的IP数据报的头部域,决策如何处理IP数据报。
需要注意的是,网络层不再是一个端到端的层次,因此,在每一个主机或是网络层设备上(比如路由器上),都需要运行网络层协议,完成网络层的功能。 实际上,每个路由器都需要对经过该路由器的每一个网络层数据报进行头部域的检验,进而决定如何处理,比如如何转发网络层的数据报。
作为网络层,需要将传输层交付的数据段Segment,封装以后在整个网络中进行传输。在传输过程中,中间的路由器需要把网络层的数据报进行解析,并决定如何转发,最终送到目的主机。 目的主机的网络层再将传输层的段Segment提交给上层传输层进行进一步处理。
网络层核心功能—转发与路由
在网络层中,当某一个路由器收到某一数据段后,需要做的功能之一,就是确定如何将该数据段转发到另一输出端口上,从而能够正确转发到下一跳路由器。
将一个数据报从路由器的输入端口,转发到合适的输出端口,这一过程就是网络层应该完成的核心功能之一:转发。
- 转发(forwarding):将分组从路由器的输入端口转移到合适的输出端口
那么这里存在的一个问题就是,对于路由器来说,如何判断接收到的数据报应该转发到哪一个合适的端口上去?
为了解决这个问题,路由器需要维护一张转发表,结构如下所示:
这个转发表里记录了对于接收的数据报,根据其地址(标识)信息,应该转发的输出端口的映射关系。
那这个转发表是怎么获取的呢?
作为路由器,我们将上述确定接收数据的输出端口的过程称之为路由:
- 路由(routing):确定分组从源到目的经过的路径。
作为网络层的设备,都会运行一些路由算法,确定从源到目的应该走什么样的路径,或是如何进行转发。这些路由算法/协议所确定的路由信息,就记录在转发表中。当路由器收到一个具体的数据报时,就可以根据数据报的地址信息,检索转发表,完成正确的转发。
网络层核心功能—连接建立
不是所有的网络都需要建立连接。
数据分组传输之前两端主机需要首先建立虚拟/逻辑连接。
某些网络的重要功能:
- ATM
- 帧中继
- X.25
数据分组传输之前两端主机需要首先建立虚拟/逻辑连接
- 网络设备(如路由器)参与连接的建立。
网络层连接与传输层连接的对比:
- 网络层连接:两个主机之间(路径上的路由器等网络设备参与其中)
- 传输层连接:两个应用进程之间(对中间网络设备透明)
网络层服务模型
网络层为发送端(主机)到接收端(主机)的数据报传输”通道(channel)“提供什么样的服务模型(Service model)?
作为网络层,使用的技术、方法的不同,为传输层提供的服务是不一样的。换句话说,不同的网络在网络层提供的服务模型是不同的。
比如Internet网络,在网络层提供的模型是best effort service(尽力服务)(传输层的UDP协议也是一个尽力服务)。尽力服务就是尽最大努力交付数据报,因此该网络模型对带宽,丢包,按序,延迟的可靠性保障都无法做到。也没有对网络拥塞控制的反馈功能。
为什么传输层的TCP协议能够保证可靠传输呢?
上一节在传输层中,我们分析过传输层如何实现可靠性传输。由于信道的传输一定是不可靠的,因此,为了实现可靠的目标,传输层实现了自己的可靠性传输算法,比如ACK机制、超时重传等。 从而向上层交付可靠数据,向下层将不可靠信道转变为可靠,以此来实现可靠传输。因此,网络的可靠传输是在传输层实现的。
但是本质上网络中的信道仍然是一个不可靠的传输,因此这里Internet网络的服务模型本质上是个不可靠传输的服务模型,类似于UDP,只尽最大可能交付数据报。
ATM网络,也叫异步传输模式网络,这个网络是在电信网络发展基础上,逐渐发展的综合业务网络。有兴趣的同学可以查阅相关资料,更深入了解下。
网络层服务模型包括以下几类:
- 无连接服务(connection-less service):
- 不事先为系列分组的传输确认传输路径
- 每个分组独立确定传输路径。
- 某个分组的传输路径,是由网络层的路由器根据当前网络中的状态选择不同路径进行传输。因此在无连接网络中,不同分组从同一个源主机到目的主机过程中,所经过的路径可能是完全不同的。
- 由于传输路径不同,因此同一源主机按顺序发送的分组,可能是乱序到达目的主机。
- 无连接网络最具有代表性的网络:数据报网络(datagram network)
- 连接服务(connection service)
- 首先为系列分组的传输确定从源到目的经过的路径(建立连接)
- 然后沿该路径(连接)传输系列分组。(也就是后续从相同源到目的主机的一系列分组都走这条连接)
- 因此这一系列分组传输路径都是相同的。也就能保证分组的传输顺序。
- 传输结束后拆除连接
- 这类网络最具有代表性的网络:虚电路网络
虚电路网络与数据报网络
数据报(datagram)网络与虚电路(virtual-circuit)网络是典型两类分组交换网络。
- 数据报网络提供网络层无连接服务
- 虚电路网络提供网络层连接服务
类似于传输层的无连接服务(UDP)和面向连接的服务(TCP),但是网络层服务:
- 提供主机到主机的连接服务
- 网络层连接服务的最关键是网络核心的实现
虚电路网络
虚电路:一条从源主机到目的主机,类似于电路的路径(逻辑连接),但又不是实际的电路交换,因此叫做虚电路。
虚电路与电路交换的区别:
- 虚电路是分组交换。作为分组交换来说,每个分组在传输过程中,都是利用链路的全部带宽。而电路交换(常用在电话网络)中,在链路上会利用频分多路复用,时分多路复用等技术,同一时刻的数据只占用链路的一部分带宽。
- 因此,在虚电路中每个分组的传输利用链路的全部带宽。
- 源主机到目的主机经过的网络层设备共同完成虚电路功能。
虚电路网络跟电路交换网络,有区别也有相似之处。
虚电路网络通信过程:
- 跟电路交换类似,虚电路在正式的数据通信之前,也需要先建立一个通信链路。(因此,虚电路相当于借助了电路交换的思想,又采用了分组交换的技术)。
- 通信过程:呼叫建立(call setup)—> 数据传输—>拆除呼叫
- 在虚电路建立时,会为这个虚电路分配一个ID:VCID,因此来标识后续分组传输时对应的虚电路路径。
- 在后续传输分组时,每个分组携带虚电路标识(VCID),而不是目的主机地址。携带相同VCID的分组就是沿着相同的虚电路进行传输,实现从源主机到目的主机的通信。
- 虚电路经过的每个网络设备(如路由器),维护每条经过它的虚电路连接状态。
- 优点:链路、网络资源设备(如带宽、缓存等)可以面向VC进行预分配
- 预分配资源 = 可预期服务性能
- 如ATM的电路仿真(CBR)
虚电路(VC)的具体实现
每条虚电路包括:
- 从源主机到目的主机的一条路径。所以虚电路在正式通信前,首先要确定一条路径,这条路径是从源主机到目的主机,并且经过的每个网络设备都需要参与这条路径的建立。
- 虚电路号(VCID),每条虚电路对应一个VCID编号。
- 由于虚电路号VCID的分配跟网络的带宽、资源等有关,带宽越多,能分配的虚电路就越多。因此,对于虚电路来说,当其穿过多个局部网络时,不可能都使用同一个虚电路号VCID。因此对于虚电路号VCID来说,其管理方式采用的是局部管理方式。
- 因此,虚电路上每个网络层设备(如路由器),由于每个局部网络的VCID是不同的,就需要利用转发表记录经过的每条虚电路。
- 在虚电路中,每个传输的分组都需要携带对应虚电路的VCID,而不是目的地址。
- 同一条VC,在每段链路上的VCID通常不同。
- 路由器转发分组时,依据转发表改写/替换虚电路号
VC转发表
如下图所示,左边表示源主机,右边表示目的主机,采用虚电路进行通信。R1路由器的三个端口号,用1、2、3进行标识。红色线用来标识一条虚电路。
从图上可以看出,每一段虚电路上的VCID可能都是不同的。
由于虚电路上的每个路由器都需要参与记录虚电路的连接建立,需要有一个转发表来记录这些信息。
路由器R1的VC转发表如下所示:
- 输入接口:上一段虚电路的数据输入接口。
- 输入VC #:上一段虚电路的虚电路号VCID。
- 输出接口:需要把这条虚电路接续到哪一个输出接口上去。
- 输出VC #:在输出接口上,虚电路号应该替换成什么。
这样就可以实现,即使不同链路上虚电路号不同,也可以实现接续在一起,从而在源主机到目的主机之间,确定了一条虚电路。
总结:虚电路VC路径上每个路由器都需要维护VC连接的状态信息!
虚电路信令协议(signaling protocols)
由于虚电路在正式数据通信前,必须先建立起一条虚电路连接。因此,在虚电路网络里,就需要一条特殊的协议来支持虚电路的建立,维护和拆除。这类协议就叫做信令协议。
数据报网络
数据报网络提供的是无连接服务。Internet网络就是一种数据报网络。
由于是无连接网络,因此为了实现每个分组从源主机到达目的主机,需要在每个分组中携带目的地址。
作为网络层中的设备(如路由器),需要根据分组的目的地址来实现转发功能。
- 基于路由协议/算法构建转发表
- 检索转发表实现转发
- 每个分组独立选路(路由器在转发时,会根据当前网络状态,选择适合的路径进行转发)
在上述示意图可以看到,从源主机发往目的主机的过程中,不同分组经过的路径可能是不同的。原因就是,网络中的路由器在传输这一系列分组时,可能重新更新了转发表,这时候就可能走不同路径。
路由器的转发表示例图如下所示:
从图中可以看出,上述转发表维护了每一个输入地址对应的下一个输出链路,以此来实现转发功能。而这里的地址实际上也就是IP地址,而我们知道IP地址是一个32位的(现在也出来64位的了),那么一个IP地址所占的空间就是4Byte,而网络中的设备是海量的,很容易造成存储、检索性能的瓶颈。
改进的方式就是,改进后在路由器的转发表中,不是采用记录每一个IP地址的方式,而是记录IP地址的范围:
这里的地址范围表示:检索符合某一个地址范围的IP地址,发往对应的输出链路。
更具体的目的地址范围的格式如下所示:
根据上面的转发表,构建网络的连接形式大致如下所示:
上述图例中,路由器转发表的地址划分是在一段连续的IP地址上的,且每个端口对应的地址范围是均等的。
Q:如果地址范围划分的不是这么“完美”会怎么样?
假设现在有另一个转发表如下所示:
上述目的地址的划分是不均衡的,假设现在有两个如下的IP地址:
DA1:11001000 00010111 00010110 10100001
DA2:11001000 00010111 00011000 10101010
根据上述转发表进行对比可以发现,第一个DA1符合的地址范围是第一条,对应的链路接口是0。而对于DA2不仅符合第二条地址范围,也符合第三条地址范围,此时应该选择哪一条链路接口输出?
由于在地址匹配时,匹配到的bit位越多,说明这个目的地址范围越具体,也就是对应的地址范围实际上是越少的(网络也就越小)。比如上图中的第三条,对应的目的地址范围实际上应该是多于第二条的。
因此,为了在传输时,能更精确的匹配目的地址范围,转发到更具体的下一跳网络中,路由器会采用最长前缀匹配优先原则。
最长匹配优先原则:在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口(entry)
数据报网络 OR VC网络
数据报网络比较有代表性的就是Internet网络,VC网络比较有代表性的就是ATM网络。下图展示了两种网络的特点总结:
在本节中,我们主要概况性的介绍了网络层提供的主要服务,与传输层的区别。在网络层中,我们重点需要掌握如何针对一个IP地址进行路由,这也是我们接下来重点介绍的部分。有兴趣的同学可以在大学生MOOC上也跟着哈工大计算机网络课程一起学习,也欢迎与我讨论。