个人主页:聆风吟
系列专栏:网络奇遇记、数据结构
少年有梦不应止于心动,更要付诸行动。
网络的核心部分由大量异构型网络和连接这些网络的路由器构成,为其边缘部分提供连通性和数据交换等服务。在核心部分起特殊作用的是路由器,它是一种专用计算机(但不叫主机)。路由器是实现分组交换的关键构建,其任务转发收到的分组,这是网络核心部分最重要的功能。为了弄清楚分组交换,我们首先来介绍一下电路交换。
在早期专为电话通信服务的电信网络中,需要使用很多相互连接起来的电话交换机来完成全网的交换任务。电话交换机接通电话线的方式就是电路交换。从通信资源分配的角度看,交换实际上就是以某种方式动态地分配传输线路的资源。使用电路交换进行通信的三个步骤如下:
如果主叫方在拨号请求建立连接时听到忙音,这可能是被叫方此时正在或电信网的资源已不足以支持这次请求,则主叫方必须挂机等待一段时间后在重新拨号。
如下图所示给出了电路交换的简化示意图。用户线是电话用户专用的,电话交换机之间的中继线是许多用户共享的。电话A与E之间的物理通路共经过了3个电话交换机,而电话B和C是同一个电话交换机覆盖范围内的用户,因此B和C之间建立的连接就不需要再经过其他的电话交换机。在A和E的通话过程中,它们始终占用这条已建立的物理通路,就好像A和E之间直接用一对电话线连接起来一样。A和E的通话结束并挂机后,它们之间的连接就断开了,之前所占用的电话交换机之间的电路又可以由其他用户使用。
学到这里想必大家都有个疑问,计算机之间的数据传送适合采用电路交换吗?显示是不能的,计算机之间的数据传送是突发式的,当使用电路交换来传送计算机数据时,其线路的传输效率一般都会很低,线路上真正用来传送数据的时间往往不到10%甚至1%。例如我们经常使用的QQ、微信,尽管我们并不是一直连续通过该工具发送消息,但为了随时发送和接受消息,我们也一直会让其处于上线状态。对于这种情况,如果采用电路交换方式,则大部分宝贵的通信线路资源并未被利用而是被白白浪费了。
分组交换采用的是存储转发技术。源主机将待发送的整块数据构造成若干个分组并发送出去,分组传送途中的各交换节点(也就是路由器)对分组进行存储转发,目的主机收到这些分组后将它们组合还原成原始数据块。
待发送的整块数据通常被称为报文。较长的报文一般不适宜直接传输。如果报文太长,则对交换节点的缓存容量有很大的需求,在错误处理方面也会比较低效。因此需要将较长的报文划分成若干个较小的等长数据段,在每个数据段前面添加一些由必要的控制信息(例如源地址和目的地址等)组成的首部,这样就构造出了一个个分组。分组是在分组交换网上传送的数据单元。构造分组的示意图如图下图所示:
源主机将分组发送到分组交领网中,分组交换网中的分用交换机收到一个分组后,先将其缓存下来,然后从其首都中提取出目的地址,按照目的地址查找自己的转发表,找到相应的转发接口后将分组转发出去,把分组交给下一个分组交换机。经过多个分组交换机的存储转发后,分组最终被转发到目的主机。
如下图所示为简化的分组交换网,为了方便起见,图中并没有画出互联网中通过路由器互连的各个物理网络,而是把它们分别等效为路由器之间的一段链路,整个互联网可以看作一个分组交换网,而路由器R1 ~ R5就是分组交换网中的交换节点,主机H1 ~ H5通过分组交换网进行通信。
现在假设主机H1给主机H3发送数据。H1将分组逐个发送给与其直接相连的路由器R1。此时H1到R1的链路被占用,而分组交换网中的其他链路并未被当前通信的双方占用,如下图所示:
路由器R1对收到的分组进行存储转发。假设R1根据分组首部的目的地址查找自己的转发表,查找结果是R2,则R1转发分组给R2。当分组正在R1与R2之间的链路上传送时,仅占用R1与R2这段链路,而不会占用分组交换网中的其他资源,如下图所示:
假设路由器R2收到分组后按上述方式将分组转发给路由器R3,R3收到分组后将分组转发给主机H3,如下图所示:
假设在主机H1给H3连续发送多个分组的过程中,路由器R1与R2之间的通信太大,那么R1可以把分组沿另一条路径转发给路由器R5,R5转发分组给R4,R4转发分组给R3,R3转发分组给主机H3。如下图所示:
从上述例子可以看出,分组交换与电路交换有着很大的不同。分组交换没有建立连接和释放连接带来的开销,分组在哪段链路上传送才占用这段链路的通信资源,因而数据的传输效率更高,这对于突发式的计算机数据的传送是非常适宜的。相比于采用电路交换传送突发式的计算机数据,分组交换的通信线路利用率大大提高。
分组交换的优点:
分组交换的缺点:
报文交换是分组交换的前身。在报文交换中,报文被整个地发送,而不是拆分成若干个分组进行发送。交换节点将报文整体接收完成后才能查找转发表,将整个报文转发到下一个节点。因此,报文交换比分组交换带来的转发时延要长很多,需要交换节点具有的缓存空间也要大很多。
在使用电路交换时,必须首先建立连接,也就是从主叫方到被叫方建立一条专用的物理通路。然后主叫方和被叫方就可以基于已建立的连接进行数据传送了。在整个计算数据传送期间,通信双方始终占用着连接,通信资源不会被其他用户占用。数据传送结束后还需要释放连接,双方挂机后,从主叫方到被叫方的这条专用的物理通路被交换机释放,将双方所占用的通信资源归还给电信网。
在使用报文交换时,无须首先建立连接,通信结束后也无须释放连接。数据传送单元为整个报文,传送路径中的交换节点只有在完整接收整个报文后,才能对其进行查表转发,将整个报文发送到下一个节点。
在使用分组交换时,也无须建立连接和释放连接。数据传送单元是由整个报文划分并构造出的若干个分组,传送路径中的交换节点每完整接收一个分组后,就对其查表转发,将其发送到下一个节点。
综上所述:
归纳:
本文主要详细介绍了电路交换、分组交换以及电路交换的优缺点、电路交换,并对三种交换进行了比较。
今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!