计算机系统(八):网络层(上篇)

目录

引言

8.1 转发和路由选择

8.1.1 连接建立

8.1.2 网络服务模型

8.2 虚电路和数据报网络

8.2.1 虚电路网络

8.2.2 数据报网络

8.3 路由器工作原理

8.3.1 输入端口

8.3.2 交换结构

8.3.3 输出端口

8.3.4 路由选择控制平面

8.3.5 多协议标签交换系统

8.3.6 Quality of Service

8.4 网际协议:因特网中的转发和编址

8.4.1 数据报格式

8.4.1.1 IP数据报分片

8.4.1.2 分片和IP Headers

8.4.2 IPv4编址

8.4.2.1 IPv4地址的稀缺性

8.4.2.2 网络地址转换(NAT)

8.4.3 IPv6


引言

在接下来的网络层的相关博客里,我们将学习网络层实际是怎样实现主机到主机的通信服务的。我们将看到,与运输层和应用层不同的是,在网络中的每一台主机和路由器中都有一个网络层部分。正因如此,网络层协议是协议栈中最具挑战性的部分和最复杂的层次之一。

  • 作用:从源头一路获取数据到目的地,可能不在一个单跳(点对点链接)。   
  • 流量必须被有效地路由,这是由称为路由器的网络设备完成的    
  • 节点必须被赋予名称(地址)。

8.1 转发和路由选择

网络层的作用:将分组从一台发送主机移动到一台接收主机。

为此,需要两种重要的网络层功能:

转发。当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路。例如,来自主机H1到路由器R1的一个分组,必须向在H2路径上的下一台路由器转发。

路由选择。当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径。计算这些路径的算法被称为路由选择算法(routing algorithm)。例如,一个路由选择算法将决定分组从H1到H2流动所遵循的路径。

强调一下:转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作。路由选择是指网络范围的过程,以决定分组从源到目的地所采取的端到端路径。


转发表(forwarding table)

每台路由器具有一张转发表。

路由器通过检查到达分组首部字段的值来转发分组。

然后使用该值在该路由器的转发表中索引查询。

存储在转发表项中的该首部的值指出了该分组将被转发的路由器的输出链路接口。

分组首部中的该值可能是该分组的目的地址或该分组所属连接的指示,这取决于网络层协议。

上图的例子中,一个首部字段值为0111的分组到达路由器。路由器在它的转发表中索引,决
定该分组的输出链路接口是接口2。然后路由器在内部将该分组转发到接口2。

路由器中的转发表是如何配置的?

路由选择算法决定了插入路由器的转发表中的值。路由选择算法可能是集中式的(例如,算法在某个中心场点执行,并向每台路由器下载路由选择信息),或是分布式的(即,使用运行在每台路由器上的分布式路由选择算法的一部分)。但是在任何一种情况下,都是路由器接收路由选择协议报文,该信息被用于配置其转发表。

分组交换机

  • 术语分组交换机是指一台通用分组交换设备,它根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组。
  • 某些分组交换机称为链路层交换机(link-layer switches)。
  • 其他分组交换机称为路由器(router),基于网络层字段中的值做转发决定。

8.1.1 连接建立

上面说网络层有两个重要的功能,转发和路由选择。但实际上有第三种重要的网络功能,即连接建立(connection setup)。

类似于TCP连接的三次握手,某些网络层体系结构如ATM、帧中继、MPLS,要求从源到目的地沿着所选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态。在网络层,该过程被称为连接建立。

8.1.2 网络服务模型

运输层能够指望网络层将该分组交付给目的地吗?

当发送多个分组时,它们会按发送顺序按序交付给接收主机的运输层吗?

发送两个连续分组的时间间隔与接收到这两个分组的时间间隔相同吗?

网络层会提供关于网络中拥塞的反馈信息吗?

在发送主机与接收主机中连接运输层的通道的抽象视图(特性)是什么?

网络服务模型(network service model)

定义了分组在发送与接收端系统之间的端到端运输特性。


在发送主机中,当运输层向网络层传递一个分组时,能由网络层提供的特定服务包括:

  • 确保交付。该服务确保分组将最终到达其目的地。
  • 具有时延上界的确保交付。该服务不仅确保分组的交付,而且在特定的主机到主机时延上界内(例如在100ms内)交付。

此外,能够为给定的源和目的地之间的分组流提供下列服务:

  • 有序分组交付。该服务确保分组以它们发送的顺序到达目的地。
  • 确保最小带宽。这种网络层服务模仿在发送和接收主机之间的一条特定比特率(例如1Mbps)的传输链路的行为。只要发送主机以低于特定比特率的速率传输比特(作为分组的组成部分),则分组不会丢失,且每个分组会在预定的主机到主机时延内到达(例如在40ms内)。
  • 确保最大时延抖动。该服务确保位于发送方的两个相继分组之间的时间量等于在目的地接收到它们之间的时间量(或这种间隔的变化不超过某些特定的值)。
  • 安全性服务。使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机中的网络层能够加密向目的主机发送的所有数据报负载。在目的主机中的网络层则能够负责解密该负载。使用这种服务,能够向源和目的主机之间的所有运输层报文段(TCP和UDP)提供机密性。除了机密性以外,网络层能够提供数据完整性和源鉴别服务。

以上只是网络层能够提供的部分服务的列表,有无数种可能的服务变种。

因特网的网络层提供了单一的服务,称为尽力而为服务(best-effort service)。使用尽力而为服务,分组间的定时是不能确保被保证的,分组接收的顺序也不能保证与发送的顺序一致,传送的分组也不能保证最终交付。给出这样的定义,一个没有向目的地交付分组的网络也符合尽力而为交付服务的定义。然而,这样一种极为简化的网络层服务模型,是有其正当的存在理由的。

8.2 虚电路和数据报网络

运输层能够为应用程序提供无连接服务(UDP)或面向连接服务(TCP)。网络层也能够在两台主机之间提供无连接服务或连接服务。网络层的连接和无连接服务在许多方面与运输层的面向连接和无连接服务类似。例如,网络层连接服务以源和目的主机间的握手开始;网络层无连接服务则没有任何握手预备步骤。

尽管网络层连接和无连接服务与运输层面向连接和无连接服务有类似之处,但也存在重大差异:

  • 在网络层中,这些服务是由网络层向运输层提供的主机到主机的服务。在运输层中,这些服务则是运输层向应用层提供的进程到进程的服务。
  • 网络层或者提供了主机到主机的无连接服务,或者提供了主机到主机的连接服务,而不同时提供这两种服务。
  • 虚电路网络(Virtual-Circuit,VC)

    仅在网络层提供连接服务的计算机网络称为虚电路网络。

  • 数据报网络(datagram network)

    仅在网络层提供无连接服务的计算机网络称为数据报网络。

运输层面向连接服务是在位于网络边缘的端系统中实现的;网络层连接服务除了在端系统中,也在位于网络核心的路由器中实现。

8.2.1 虚电路网络

虽然因特网是一个数据报网络,但许多其他网络体系结构(包括ATM、帧中继的体系结构)却是虚电路网络,因此在网络层使用连接。这些网络层连接被称为虚电路。

一条虚电路的组成如下:

  • 源和目的主机之间的路径(即一系列链路和路由器)。
  • VC号,沿着该路径的每段链路的一个号码。
  • 沿着该路径的每台路由器中的转发表表项。

属于一条虚电路的分组将在它的首部携带一个VC号。因为一条虚电路在每条链路上可能具有不同的VC号,每台中间路由器必须用一个新的VC号替代每个传输分组的VC号。该新的VC号从转发表获得。

为了举例说明这个概念,考虑在图中的网络:

在图中靠近R1链路的号码是该链路接口的编号。现在假定主机A请求该网络在它自己与主机B之间创建一条虚电路。同时假定该网络为该虚电路选择路径 A-R1-R2-B 并为这条路径上的这3条链路分配VC号12、22和32在这种情况下,当在这条虚电路中的分组离开主机A时,在该分组首部中的VC字段的值是12;当它离开R1时,该值是22,而当它离开R2时,该值是32。


对于通过某路由器的分组,该路由器怎样决定更换其VC号呢?

对于虚电路网络,每台路由器的转发表包括了VC号的转换;例如,在R1中的转发表可能像下表:

无论何时跨越一台路由器创建一条新的虚电路,转发表就增加了一个新表项。类似地,无论何时终止一条虚电路,沿着该路径每个表中的相应项将被删除。

一个分组沿着其路由在每条链路上不简单地保持相同的VC号的原因:

  • 逐链路代替该号码减少了在分组首部中VC字段的长度。
  • 通过允许沿着该虚电路路径每条链路有一个不同的VC号,大大简化了虚电路的建立。特别是,在具有多个VC号的路径,其上的每条链路能够独立于沿着该路径的其他链路所选的号码选择一个VC号。

相反,如果沿着某路径的所有链路要求一个共同的VC号的话,路由器将不得不交换并处理相当大量的报文,以约定一个共同的VC号(例如,一个并未由这些路由器的任何其他现有虚电路使用的号码)用于一次连接。


在虚电路网络中,该网络的路由器必须为进行中的连接维持连接状态信息(connec-tionstate information)。特别是:

  • 每当跨越一台路由器创建一个新连接,必须在该路由器的转发表中增加一个新的连接项;
  • 每当释放一个连接,必须从该表中删除该项。

注意:即使没有VC号转换,仍有必要维持连接状态信息,该信息将VC号与输出接口号联系起来。


在虚电路中有3个明显不同的阶段:

  • 虚电路建立。在建立阶段,发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路。网络层决定发送方与接收方之间的路径,即该虚电路的所有分组要通过的一系列链路与路由器。网络层也为沿着该路径的每条链路决定一个VC号。最后,网络层在沿着路径的每台路由器的转发表中增加一个表项。在虚电路建立期间,网络层还可以预留该虚电路路径上的资源(如带宽)。
  • 数据传送。如下图所示,一旦创建了虚电路,分组就可以开始沿该虚电路流动了。

  • 虚电路拆除。当发送方(或接收方)通知网络层它希望终止该虚电路时,就启动这个阶段。然后网络层通常将通知网络另一侧的端系统结束呼叫,并更新路径上每台分组路由器中的转发表以表明该虚电路已不存在了。

在网络层的虚电路建立与运输层的连接建立之间有一个细微但很重要的区别:

运输层的连接建立仅涉及两个端系统。在运输层的连接建立期间,两个端系统独自决定运输层连接的参数(如初始序号与流量控制窗口长度)。虽然这两个端系统已经知道该运输层连接,但网络中的路由器则对这些完全不知情。在另一方面,对于一个虚电路网络层,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路。

端系统向网络发送指示虚电路启动与终止的报文,以及路由器之间传递的用于建立虚电路(即修改路由器表中的连接状态)的报文,它们被称为信令报文(signaling message),用来交换这些报文的协议常称为信令协议(signaling protocol)。 

8.2.2 数据报网络

在数据报网络中,每当一个端系统要发送分组,它就为该分组加上目的端系统的地址,然后将分组推进网络中。如下图所示:

无需建立任何虚电路,路由器不维护任何虚电路的状态信息(因为没有虚电路!)。 

当分组从源到目的地传输,它通过一系列路由器传递。这些路由器中的每台都使用分组的目的地址来转发该分组。特别是,每台路由器有一个将目的地址映射到链路接口的转发表;当分组到达路由器时,路由器使用该分组的目的地址在转发表中查找适当的输出链路接口。然后路由器有意将分组向该输出链路接口转发。

为了进一步深入理解查找操作,我们看一个特定的例子。假定所有的目的地地址均是32比特(这恰好就是在IP数据报中目的地址的长度)。转发表的蛮力实现将对每个可能的目的地址有一个表项。因为有超过40亿个可能的地址,这种选择完全是不可能的。

现在我们进一步假设路由器有4条链路,编号0~3,分组以如下方式转发到链路接口:

显然,对于这个例子,在路由器的转发表中就没有必要有40亿表项。例如,我们能够有仅包括4个表项的下列转发表:

使用这种风格的转发表,路由器用分组的目的地址的前缀(prefix)与该表中的表项进行匹配;如果存在一个匹配项,则路由器向与该匹配项相联系的链路转发分组。

分组的目的地址是11001000 00010111 00010110 10100001;因为该地址的21比特前缀匹配该表的第一项, 所以路由器向链路接口0转发该分组。

如果一个前缀不匹配前3项中的任何一项,则路由器向链路接口3转发该分组。

一个目的地址可能与不止一个表项相匹配。例如,地址11001000 00010111 00010000 10101010 的前24比特与表中的第二项匹配,而该地址的前21比特与表中的第三项匹配。当有多个匹配时,该路由器使用最长前缀匹配规则(longest prefix matching rule);即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。


  • 数据报网络中的路由器不维持连接状态信息,但必需在转发表中维持了转发状态信息。
  • 然而,转发状态信息表变化的时间尺度相对要慢

对比:

数据报网络中的转发表是通过路由选择算法进行修改的,这通常每1~5分钟左右更新一次转发表。

在虚电路网络中,无论何时通过路由器建立一条新的连接,或无论何时通过路由器拆除一条现有的连接,路由器中的转发表就被更新。对一台第一层主干路由器而言,这很容易以微秒的时间尺度进行更新。

因为在数据报网络中的转发表能够在任何时刻修改,从一个端系统到另一个端系统发送一系列分组可能在通过网络时走不同的路径,并可能无序到达。

8.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值