一、网络层服务概述
在传输层每个应用可以被提供使用两个服务:无连接的 UDP 和有连接的 TCP,在网络层也能为主机之间提供无连接和有连接的服务。
在计算机网络领域,网络层在向运输层提供服务的时候到底是使用“面向连接”,还是使用“无连接”的服务,曾引起了长期的争论。原因就是:在计算机通信中,可靠交付应该由谁来负责?是网络核心还是网络边缘的端系统?
针对上面的问题,有两种重要的服务实现,分别是“无连接”的数据报网络和“面向连接”的虚电路网络。
二、虚电路网络
当两台计算机进行通信时,应当先建立连接(即:在分组交换中建立一条虚电路(Virtual Circuit)),然后双方就沿着建立的虚电路发送分组。这样以来,分组的首部不需要填充完整的目的主机地址,而是只需要填写这条虚电路对应的编号即可,因此减少了分组的开销。
通过虚电路服务如果再使用可靠传输的网络协议,所发送的分组就可以无差错的按序到达终点,不存在丢失与重复的情况。就像上图,两台主机之间进行分组的交换都必须在事先建立好的虚电路上。
采用虚电路网络会使网络核心部分变得复杂,需要所有经过这条电路的节点共同维护,如果虚拟电路断开,那么数据将会丢失,只能重新建立虚电路。互联网的先驱者们认为计算机有很强的差错处理能力,因此提出了一种无连接的思路:数据报网络。
三、数据报网络
网路在发送分组之前不需要先建立连接。每一个分组(IP 数据报)独立发送,与其前后的分组无关(无编号)。网络层不提供服务质量的保。也就是说,所传送的分组可能出错、丢失、重复和失序(不按顺序到达终点),也不保障分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器比较简单,从而使减轻网络核心的负担,并且价格也比较低。
如果主机中进程间的通信需要可靠的数据交付,那么就由网络的主机中的运输层负责(差错检测、流量控制等)。采取这种设计有很多好处:网络造价相对较低,运行方式灵活,可以适用多种应用。
目前的互联网能够发展到今天的规模,正是因为采用了这种设计思路。OSI 体系的支持者曾极力主张适用可靠传输的虚电路网络,但是这早已经成为历史了。
TCP/IP 体系的网络架构提供的就是数据报网络服务。
四、虚电路网络与数据报网络的区别
| 对比 | 虚电路网络 | 数据报网络 |
|---|---|---|
| 思路 | 可靠通信由网络来保障 | 可靠通信由网络主机保障 |
| 连接的建立 | 需要建立连接 | 不需要建立连接 |
| 终点地址 | 仅在连接建立时使用,每个分组使用虚拟电路号 | 每个分组都有完整的终点地址 |
| 分组转发 | 沿着虚拟电路进行转发 | 每个分组独立选择路由进行转发 |
| 节点故障时 | 所有通过故障节点的分组均不能到达 | 当一个节点出故障时,不影响其他的节点 |
| 分组的顺序 | 按发送顺序到达终点 | 不一定按发送顺序到达终点 |
| 差错处理与流量控制 | 可以由网络负责,终点也可以由主机负责 | 由主机负责 |
五、other
网络真是一个有趣的东西,神秘而又复杂。陆陆续续参考资料、书籍总结了几篇关于网络知识方面的博文,是因为觉得只有更了解计算机才能学好计算机。这可能是一个枯燥的过程,但是哪有什么事都那么容易呢?坚持便是最好的学习方式。
参考书籍:
《计算机网络》 谢希仁 著