网络层提供的两种服务(虚电路和数据报)
计算机网络领域,网络层应该向运输层提供怎样的服务(“无连接”还是“面向连接”)曾引起了长期的争论。争论焦点实质就是:在计算机通信中,可靠交付由网络还是端系统来完成?
有些人认为应当借助于电信网的成功经验,让网络负责可靠交付。他们认为计算机网络应当模仿打电话所使用的面向连接的通信方式。当两台计算机进行通信时,也应当先建立连接(但在分组交换中是建立一条虚电路(VC)),以预留双方通信的一切所需资源。然后双方就沿着已建立的虚电路发送分组。
但是互联网的先驱者提出了一种崭新的网络设计思路。他们认为电信网的可靠传输服务对于电话业务是很合适的,因为电话机没有智能,没有差错处理能力。但是计算机网络的端系统是有智能的计算机,计算机有很强的差错处理能力,与 电话机有本质区别。因此,互联网在设计上就采用了和电信网完全不同的思路。
互联网采用的设计思路是:网络层向上只提供简单灵活的、无连接、尽最大努力交付的数据报(datagram)服务。数据报(或IP数据报)就是常说的“分组(包)”,二者可以混用。
网络在发送分组时不需要先建立连接。每一个分组独立发送,与前后的分组无关(不编号)。网络层不提供服务质量承诺。也就是说,所传送的分组可能出错、丢失、重复、失序,也不保证交付时限。由于传输网络不提供端到端可靠传输服务,这就使网络中的路由器相比电信网的交换机比较简单,且价格低廉。如果主机中的进程之间的通信需要可靠的通信,那么就由网络的主机中的运输层负责(包括差错处理和流量控制等)。这种设计思路好处是造价大大降低、运行方式灵活、能适应多种应用。互联网发展到今日的规模,充分证明了这种设计思路的正确性。
对比方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机保证 |
连接建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有完整终点地址 |
端到端的差错处理 | 可以由网络或者主机负责 | 由用户主机负责 |
分组转发 | 属于同一条虚电路的分组均按同一路由进行转发 | 每个分组独立选择路由进行转发 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点的时间不一定按发送顺序 |
当节点出故障 | 所有通过故障节点的虚电路均不能工作 | 出故障的节点可能会丢失分组,一些路由可能会发生变化 |
(END)