运输层依赖于网络层的主机到主机的通信服务,提供各种形式的进程到进程的通信,与运输层和应用层不同的是,在网络中的每一台主机和路由器中都有一个网络层部分
网络层的作用从表面上看极为简单,即 将分组从一台发送主机移动到一台接收主机,为此,需要两种重要的网络层功能:
每台路由器有一张转发表,路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在转发表中索引查询
路由选择算法决定了插入路由器的转发表中的值。考虑这样一种情况,所有的转发表由人类网络操作员直接配置而在路由器中物理地存在,这种情况下就不需要任何的路由选择协议,但人类操作员之间需要彼此交互,确保该转发表配置得能使分组到达它们想要到达的目的地,且人工配置容易出错,对于网络拓扑的变化,响应起来比路由选择协议慢。因此,网络需要转发跟路由选择这两种功能
与传输层类似,网络层也能在两台主机之间提供无连接服务或者连接服务,但两者存在以下差异:
因特网是一个数据报网络,许多其它网络体系结构却是虚电路网络。虚电路网络在网络层的连接被称为虚电路,下面考虑虚电路服务是如何实现的
一个虚电路的组成如下:
属于虚电路的分组将在它的首部携带一个 VC 号,因为一条虚电路在整个路径的每一条链路上可能具有不同的 VC 号,所以每台中间路由器必须用一个新的 VC 号替代每一个传输分组的 VC 号,该 VC 号从转发表中获得
为何一个分组沿着其路由在每条链路上不简单地保持相同的 VC 号?
虚电路中存在 3 个阶段:
虚电路建立。在建立阶段,发送方运输层与网络层联系,指定接收方地址,等待网络建立虚电路
网络层决定发送方与接收方之间的路径,即该虚电路的所有分组要通过的一系列链路与路由器,也为每段链路决定一个 VC 号;最后,在沿着的路径的每台路由器的转发表中增加一个表项
数据传送。创建了虚电路后分组就可以开始沿着虚电路流动了
虚电路拆除。当发送方或接收方通知网络层它希望终止该虚电路时就启动这个阶段,然后网络层通常将通知网络另一端的端系统结束呼叫,并更新路径上的每台路由器中的转发表以表明该虚电路已经不存在
端系统向网络发送只是虚电路启动与终止的报文以及路由器之间传递的用于建立虚电路 (即修改路由器表中的连接状态) 的报文,称为 信令报文,用来交换这些报文的协议常称为 信令协议
在数据报网络中,每当一个端系统要发送分组,它就位该分组加上目的端系统的地址,然后就将分组推进网络中。无需建立任何虚电路,路由器也不维护任何虚电路的状态信息。网络中的路由器将有一个将目的地址映射到链路接口的转发表,当分组到达路由器时,路由器使用该分组的目的地址在转发表中查找适当的输出链路接口,然后将分组向该输出链路接口转发
假定所有的目的地地址均为 32 比特,那么将会有超过 40 亿个可能的地址,所以不可能采用在转发表中设置所有目的地址的对应表项的方式来实现转发表。有一种风格是,转发表中用分组的目的地址的前缀来与输出接口进行匹配;当有多个匹配时,使用 最长前缀匹配规则,即选择表中最长的匹配项对应的输出接口作为最终的转发接口
数据报网络中的路由器虽然不维持连接状态信息,但它们维持了转发状态信息。其中的转发表是通过路由选择算法进行修改的,通常 1~5 分钟左右就hi更新一次转发表;而虚电路网络中,无论何时通过路由器建立一条新的连接,或无论何时通过路由器拆除一条现有的连接,路由器中的转发表就被更新
因为在数据报网络中,转发表能够在任何时候被修改,所以从一个端系统到另一个端系统发送一系列分组可能在通过网络时走不同的路径,而且可能无序到达
输入端口的 线路端接 功能与 链路层处理 实现了用于各个输入链路的物理层和链路层。在这个地方路由器使用转发表来查找输出端口,使得到达的分组将能经过交换结构转发到其输出端口
转发表是由路由选择处理器计算和更新的,但转发表的一份影子副本通常会被存放在每个输入端口,其从路由选择处理器经过独立总线复制到线路卡,借助影子副本,转发决策能在每个输入端口本地做出,无须调用中央路由处理器,避免了集中式处理的瓶颈
对于转发表的查找动作,从概念上讲是很简单的,但这个动作却要求在纳秒级执行完成。在硬件层面上,三态内容可寻址存储器 (TCAM) 也经常被用于查找,TCAM 可以在基本常数时间内返回对一个 32 比特 IP 地址的转发表项的内容
尽管查找在输入端口处理中可以说是最为重要的动作,但必须采取许多其他动作:必须出现物理层和链路层处理;必须检查分组的版本号,检验和以及寿命字段,并且重写后两个字段;必须更新用于网络管理的计数器
交换结构位于一台路由器的核心部位,其将分组实际地从一个输入端口交换到一个输出端口。交换可以由以下几种方式完成:
经内存交换:在输入端口与输出端口之间的交换是在 CPU (即路由选择处理器) 的直接控制下完成的。
一个分组到达一个输入端口时,该端口会先通过中断方式向路由选择处理器发出信号,于是该分组从输入端口处被复制到处理器内存中;
路由选择处理器则从其首部中提取目的地址,在转发表中找出适当的输出端口,并将该分组复制到输出端口的缓存中
许多现代路由器通过内存进行交换,不过与早期路由器的一个主要差别是,目的地址的查找和将分组存储到释放的内存存储位置是由输入线路卡处理的
经总线交换:输入端口经一根共享总线将分组直接传送到输出端口,不需要路由选择处理器的干预。
让输入端口为分组预先计划一个交换机内部标签 (首部),指示本地输出端口,使分组在总线上传送和传输到输出端口;
该分组能被所有输出端口收到,但只有与该标签匹配的端口才能保存该分组,然后标签在输出端口被去除,因为其仅用于交换机内部来跨越总线
如果多个分组同时到达路由器,每个位于不同的输出端口,除了一个分组外所有其他分组必须等待,因为一次只有一个分组能够跨越总线。因为每个分组必须跨过单一总线,故路由器的交换带宽受总线速率的限制
经互联网络交换:克服单一,共享式总线带宽限制的一种方法,是使用一个更复杂的互联网络。
纵横式交换机就是一种由 2N 条总线组成的互联网络,它连接 N 个输入端口与 N 个输出端口
每条垂直的总线在交叉点与每条水平的总线交叉,交叉点通过交换结构控制器能够在任何时候开启和闭合
纵横式网络能够并行转发多个分组,只要这些分组使用不同的输入和输出总线;如果来自两个不同输入端口的两个分组其目的地为相同的输出端口,则一个分组必须在输入端等待,因为在某个时刻经给定总线仅有一个分组能够发送
输出端口处理取出存放在输出端口内存中的分组并将其发送到输出链路上,其中包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能