书读得越多而不假思索,你就会觉得你知道的很多;而当你读书而思考的越多的时候,你就会越清楚的看到,你知道的还很少——伏尔泰
文章目录
- 概述
- 转发、路由选择
- 网络服务模型
- 虚电路和数据报网络
- 虚电路网络
- 数据报网络
- 路由器工作原理
概述
网络层存在于网络边缘和网络核心,实现了实际的主机到主机的通信服务。在发送方主机中,运输层报文段被封装成数据报发送出去,在接收方中,运输层报文段被提取出来并交付给运输层。网络核心不运行运输层及以上的协议。
转发、路由选择
转发和路由选择是网络层协议的两种重要功能。
- 转发:一个分组到达某一路由器的输入链路时,路由器能够将这个分组移动到合适输出链路,该功能称为转发。
- 路由选择:在分组被发送方开始发送时,网络层协议能够决定这个分组经过的所有路径,该功能称为路由选择。
注意他们之间的区别,转发是针对一个路由器的功能,而路由选择针对分组从发送方到接收方的整个过程。
每个路由器维护一张转发表,当分组到达时,路由器根据转发表对分组进行转发。路由选择协议以报文的形式告知路由器转发表的修改信息。
在上面的说明中,提到了路由器的概念。路由器是一种分组交换机。分组交换机分为两类,基于链路层首部中的值做转发决定的称为链路层交换机和基于网络层首部中的值做转发决定的路由器。
某些网络层体系结构在发送数据前,要求从源到目的地沿着选择的路径彼此握手,这个过程被称为连接建立,这是第三种重要的网络功能。
网络服务模型
网络服务模型定义了分组在发送和接收端系统之间的端到端特性。该模型可能提供的服务包括:
- 确保交付:确保分组最终到达目的地。
- 具有时延上界的确保交付:限定时延的确保交付。
- 有序分组交付:分组按照发送顺序到达接收方。
- 确保最小带宽:指定一个带宽,如果发送主机以小于该带宽的速率发送数据,那么可以保证提供“具有时延上界的确保交付”服务。
- 确保最大时延抖动:确保发送方发送两个相继分组的时间间隔与接收方接收这两个分组的时间间隔相同。
- 安全性服务:用仅有发送方和接收方之间知道的秘钥对数据报进行加密。
尽管网络层可以提供多种服务,但是IP协议只能提供尽力而为服务(其实也就是根本没有额外服务)。也有一些其他的服务模型实现了一些额外服务,如ATM的CBR和ABR:
- 恒定比特率(CBR):看起来,它创建了一条发送主机和接收主机之间的专用通道,依靠这条通道,它能保证几乎所有额外服务。
- 可用比特率(ABR):它创建的初衷就是要刻画比尽力而为服务稍好一点的服务。如图,它保证最小速率和有序接收。另外,它会给发送方发送拥塞反馈。
虚电路和数据报网络
类似于运输层中有无连接的TCP和UDP两种协议,计算机网络依据是否在网络层上提供连接,也分为虚电路网络和数据报网络。但在细节上,网络层的连接服务与运输层截然不同:
- 网络层向运输层提供主机到主机连接,运输层向应用层提供进程到进程连接。
- 在一个计算机网络中不会同时出现使用不使用连接服务和使用连接服务的两种网络层协议,但可以同时出现TCP和UDP两种协议。
- TCP仅在网络边缘实现连接,网络层协议的连接同时在网络边缘和网络核心实现。
虚电路网络
虚电路网络在网络层上为每条路径建立连接(虚电路)。一条虚电路在决定路径后,为路径上的每条链路配置一个VC号(注意,在不同路径上同一条链路可能具有不同的VC号)。从发送方出发时,发送方为分组加上一个VC号,是这个分组所经过的第一条链路的VC号;分组每进入一个路由器时,路由器通过分组的入接口和它带的VC号来确定它的出接口和出VC号(这四个信息在转发表中维护),将分组转发到出接口并将这个分组的VC号改为它的出VC号,也就是分组会经过的下一条链路的VC号。
这是一个转发表的例子,其中入VC号就是分组自带的VC号。
同条路径上各条链路不保持相同VC号的原因有两个,包括逐链路代替号码减少分组首部VC字段的长度,以及如果要确定相同VC号,路由器之间往往要发送大量报文,会造成额外开销。
利用一条虚电路传递数据的过程有三个阶段:
- 虚电路建立:在建立阶段,网络层决定发送路径,为路径上的每条链路决定一个VC号,新增路由器的转发表,并可能为这条路径预留链路资源。
- 数据传送
- 虚电路拆除:发送方希望终止该虚电路时,启动这个阶段,网络层通知另一侧的接收方停止呼叫,并修改路径上路由器的转发表。
由于一条虚电路需要路径上所有路由器运行其网络层协议,因此不仅端系统,所有路由器都完全知道这条虚电路。
建立虚电路时端系统,路由器之间发送的所有报文称为信令报文,交换这些报文的协议称为信令协议。
数据报网络
数据报网络中就直接给分组加上目的地址,然后在每个路由器依据转发表进行比对。举个例子,假设所有地址都是32比特,在某一个路由器中转发方式如下:
我们可以看到,在转发表中,一个地址区间对应着一个出口,而不是直觉中的给每一个地址新增一个表项,这大大减少了转发表的规模。
实际上,转发表还可以更简化,我们可以只用前缀来表示某个区间,因为同一个区间的地址总有前几位相同。因此实际上转发表是这样的:
当然,我们可以发现,上表中第二项代表的区间包含在第三项中,在这种情况下,会出现一个地址既符合第二项也符合第三项,这时我们采用最长前缀匹配原则,找到能和该地址匹配的最长前缀并转发到其映射的输出接口。
由于维护的是区间,所以数据报网络的转发表无需实时修改,一般1-5分钟左右修改一次。
路由器工作原理
通用路由器体系结构包括以下几个部分
- 输入端口:输入端口有几个关键功能:将输入的物理链路与路由器连接,显示于最左边的方框中;在链路层与入链路远端交互,表示在中间方框中;查询转发表,决定分组要转发的输出链路并控制某些分组(如携带路由选择协议信息的分组)从输入端口转发到路由选择处理器,显示在右侧方框中。注意这里的端口是指物理端口而非软件端口。
- 交换结构:将路由器的输入端口与输出端口连接的网络结构。这是一个存在于路由器中的网络。
- 输出端口:由于网络层是双向的,所以输出端口和输入端口结构完全相同。
- 路由选择处理器:执行路由选择协议,维护路由选择表,维护链路状态信息,计算转发表,执行网络管理功能。
路由器的输入端口、输出端口和交换结构共同实现了转发功能,称为路由器转发平面。由于转发功能需要极快的处理速度,因此需要硬件来实现;路由选择处理器构成了路由器控制平面,由于上文讲到,这些功能往往需要毫秒或秒尺度来执行,因此用软件实现即可。
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!