最近也准备临近考试月了,抽时间精简总结一下《计算机网络》。这是一篇关于计算机网络的第三层,网络层相关的知识。
在计算机网络的分层中,网络层的作用就是将
分组
从源主机沿网络路径发到目的主机上,所以网络层里最核心的功能就是:
分组转发
和
路由选择
。
分组转发和路由选择
既然我们知道了网络层里最核心的两个功能,那我们有必要逐个了解它们分别是干什么的。
-
分组转发 。当一个分组到达路由器输入链路时,需要将该分组转发到相应合适的输出链路上。每一个分组都会带有一个首部,而首部里有转发的标识。路由器根据转发标识,查询路由器内的
转发表
(forwarding table),转发表会为分组指出该通往的输出链路。 -
路由选择 。当分组开始从源主机发往目的主机,网络层必须决定分组该采用的路由或路径。而路由选择,就是用来提供分组转发时所需要的转发表。
网络层提供的两种服务
网络层可以为用户提供两种服务,一个是面向连接的服务,另一种则是无连接的服务。我们在现有的计算机网络体系结构中,网络层只能单独提供其中一个服务的,两种服务同时提供是不存在的。
在网络层提供面向连接的计算机网络被称为
虚电路网络
(virtual-circuit network),而提供无连接的计算机网络则被称为
数据报网络
(datagram network)。我们首先大致了解一下它们的特点:
虚电路网络
虚电路网络是借鉴电信网的成功例子的,让网络来负责可靠交付。虚电路网络要求两个计算机进行通信时,应当先建立连接,也就是虚电路。然后双方就通过该虚电路发送分组。这样分组无需头部节省开销,信号传输也十分可靠。通信结束后,就释放掉虚电路。但无疑,网络的造价相对会更加昂贵。
数据报网络
因特网的先驱者则坚定认为无连接服务是更适合因特网的网络层的。电信网的提供可靠的传输服务,对于电话这种无智能,没有处理差错能力的设备无疑是非常奏效的。但计算机是可以有很强的差错处理能力的。所以因特网设计时就与电信网完全不一样: 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务 。
在数据报网络里,分组发送时并不需要建立连接,每一个分组都是独立发送的,并且
网络层不提供服务质量保证
。所以分组在发送过程中,会出现出错、丢失、重复和失序,还有交付期限。而为了保证通信可靠,这些差错处理则交给网络边缘主机——终端,来进行处理。这样网络核心相比之下就简单许多,网络造价大大降低,并且灵活适应性强。这种设计思想称为
端到端原则
(end-to-end arguments),到现在也验证了这种设计思路是明智的。
总结两者对比
我们最后归纳一下虚电路网络与数据网络的对比。
对比的方面 | 虚电路网络 | 数据报网络 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 建立阶段使用,分组使用虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
节点故障 | 所有通过该节点的虚电路都无法工作 | 会出现丢失分组,路由会相应变化 |
分组顺序 | 顺序到达 | 不一定按照顺序到达 |
服务质量保证 | 通信资源提前分配给虚电路,容易实现 | 很难实现 |