1.1_3_1 电路交换、报文交换、分组交换

各位同学大家好在这个视频中我们要学习电路交换、报文交换和分组交换这三种数据交换的技术,这三种技术分别适用于电话网络、电报网络以及现代的计算机网络。

现代计算机网络诞生于二十世纪六十年代当时美国国防部成立了一个项目叫做阿帕网,阿帕网就是现代计算机网络的前身,当时参与这个项目的科学家们要解决一个问题就是如何把分散在全国各地的计算机,让他们实现互联互通,能够相互通信。

事实上在计算机网络之前,人类历史上就已经出现过其他类型的通信网络了,最早、最原始的可以追溯到公元前五世纪邮政网络,在邮政网络当中可以通过邮递员和信件完成网络中各节点之间的数据交换,而电报网络当中采用了报文交换的技术完成了各个节点之间的数据交换,另外电话网络当中采用了电路交换的技术完成各节点之间的数据交换。在那个年代参与这个项目的科学家们自然而然的会想到我们要搭建的这个计算机网络可不可以抄个作业呢。

显然计算机之间的数据通信不可能用邮政网络那么原始的方法去解决问题,可以抄的作业就只剩下了电话网络和电报网络。首先来看一下能不能抄电话网络这份作业。

当时的电话网络是这样的,在当时分布在全国各地的这些电话想要实现互相通信,需要采用电路交
换的技术,具体来说需要使用电话交换机去实现节点之间的相互通信,一个电话交换机可能会连接很多部电话,也有可能会连接其他的电话交换机。

早期的电话交换机长这个样子可以看到在这个面板上有很多可以插线的地方每一个插线孔的背后可能连接的是一台电话,也有可能会直接连接另一个电话交换机,如果我们希望让两部电话实现通信我们只需要把这两部电话对应的两个孔,用一根线把它们连起来就可以了,当时每一座城市都会有一个它自己的电话交换中心。这些工作人员负责接线工作,我们可以很直观的感受到所谓的电路交换其实就是通过物理线路的连接,去动态的给用户分配传输线路资源,早期的电话交换机是通过人工接线的方式去实现电路交换,后来随着技术的进步电路交换的过程实现了电气化、自动化,不再需要去人工接线,这就使得电路交换的效率大幅提升。

电路交换的过程分为这样的一些步骤:首先第一步通信双方需要建立连接,比如现在小帅要给小丑打电话小帅通过H1拨打H2的电话号码,此时中间这台交换机接收到建立连接的请求之后,会给他们俩分配通信资源,也就是会接通一条物理的线路,线路接通后H2这个电话机,就会开始响,小丑听到电话铃声后接起电话并且给出回应。此时小帅知道建立连接这个动作已经完成,于是两人可以开始通信,在通信的过程当中两个用户会一直占用中间所需要的这些通信资源,通信结束之后挂断电话释放连接,也就是会归还通信资源。再来看一个例子,假如现在小红要给小美打电话,那么建立连接的过程需要经过三台电话交换机可以看到这两个人的通信中间需要占用很多条线路资源,而相比之下小帅和小丑的这个电话占用的通信资源就比较少,所以在早年间的电话网络当中为什么打长途电话要比打本地电话更贵,就是这个原因,接下来故事是这样的小红和小美在打电话的过程当中,小扁也想要给小美打电话,通过座机H6拨打H5的号码之后,首先这台交换机会给小扁分配这条线路资源,但是下一台交换机无法给小扁分配这条线路资源,因为这台交换机和H5之间的这条线路,此时是正在被占用的情况,所以线路资源不够,因此小扁会听到:对不起您呼叫的用户正在通话中,请稍后再拨这样的一个提示,也就是我们俗称的电话占线,这是电路交换技术。

接下来我们思考一个问题,如果计算机网络采用电路交换技术是否可行,基于电路交换的特点:如果H1和H2之间需要通信,那么我们需要给它俩分配一条专用的物理线路,同样的,如果H3和H5想要通信,我们也需要给他们分配一条专用的物理线路,并且在通信结束之前,整条物理线路是被这两个用户独占的,这就会导致一个问题,如果此时H6这台计算机想要给H5这台计算机发送一些数据,由于通信线路资源不够,因此H5和H6之间就无法建立通信,这就意味着如果小红和小美正在聊微信,但是他们这个微信聊天的过程还没有结束,那么小扁给小美发的任何信息都无法传到小美的计算机上,这显然不太行。

所以我们对电路交换这种技术的优缺点进行一个总结,首先刚才我们说通信之前需要先建立连接,给主叫端和被叫端分配一条专用的物理线路,并且在通信过程当中双方会始终独占这条线路资源,这个特性带来的好处就是双方通信的这个数据可以通过一条已经连好的线路直接送达对方的计算机上,所以数据传输的速率会非常快,与此同时在通信之前需要建立和释放连接这个特点又会导致建立和释放连接的过程要额外的时间开销,这种额外的时间开销也会导致一些新问题,你想一下,如果你打电话的时候,等电话花了两分钟但是讲话只讲了五秒。体验肯定是很差的,相比之下如果等电话两分钟,但讲话讲了一个小时,会觉得等电话的这两分钟等的很值,花在建立连接、释放连接上面的时间开销好像是可以忍受的。所以基于这样的特性电路交换这种技术其实它更适用于低频次大量的传输数据,就是说我建立连接和释放连接在整个通信的过程当中可能只占时间的一小部分,当的连接建立完成之后我可能会传非常非常多的数据,传数据的过程占了时间的大部分比例,如果说我们的通信网络有这样的特性,那使用电路交换就是很合适的,不过很不巧计算机之间的数据传输它往往是突发式的传输,也就是会高频次少量的传输数据,想一下和别人聊微信的时候,可能你在本地打字需要花很长的时间,但是你发送那段文字只需要很短很短的时间,计算机之间可能会频繁的进行数据通信,但是每一次数据通信的数据量,大多数时候都会很少,因此从这个角度来看,电路交换技术显然不适用于计算机网络,除了这个缺点之外刚才我们说过在通信的过程当中这个通信线路会一直被通信双方所独占,所以这些线路的利用率很低,一条线路在一段时间内只能被两个人使用而不能被其他人共享着使用,这样也会导致整个网络的使用成本大幅提升,另一方面,当建立好一条通信线路之后,如果在这条线路上某一个节点或者某一条线出现了故障,我们只能重新建立连接,也就是说我们并不能动态灵活的去重新分配线路,只能重新进行一遍建立连接,再重新通信的过程,因此电路交换的线路灵活性是很差的。最后电路交换技术当中这些中间的交换节点并不支持差错控制,无法发现传输过程当中发现的数据错误,什么意思呢?

假设现在小红要给小美发送一些数据,这串数据是0100,那么在数据传输的过程当中,可能会因为一些电磁干扰而导致这串数据在传输过程当中发生了错误,从0100变成了0101,这些数据它中间经过的线路越多就越有可能出现这种错误,如果这些数据每经过一段链路这个交换节点,都会检查一下这个数据有没有错,检查数据是否有错,如果有错的话修正数据,这个过程就是所谓的差错控制,可惜电路交换这种技术,它的这些中间节点并不支持差错控制,因为这些中间节点的结构很简单,数据通过交换节点的时候只不过是从交换节点分配的某一条线路上,让这些数据原模原样的通过而已,中间并没有差错控制的过程,所以这种电路交换技术在长距离的数据传输过程当中很有可能会出现错误。以上是电路交换技术的优缺点。

回到最初的问题,我们构建计算机网络它的底层原理直接抄电话网络不太合适,接下来看电报网络采用的技术可不可以应用于计算机网络呢?

在电报网络当中就采用了报文交换技术,在那个年代用户通过电报机可以给全国各地的其他用户发送电报,比如现在小帅要给小美发电报,小丑要给小红发电报,那么一封电报当中,至少会包含这样的两部分信息,左边这部分我们把它称为控制信息,指明了这封电报是从哪个位置发出,想要被谁所接收,右边这个部分我们把它称为用户数据,也就是小帅要给小美说的话,控制信息和用户数据两个部分组成了一个Message,Message这个词我们通常把它翻译为信息,但是计算机网络这门课里边可能觉得这种翻译不够性感,所以通常会把Message 翻译为报文,所以控制信息和用户数据共同组成了一个报文。

类似的,小丑要给小红发电报,他也会编辑一个自己的报文,要指明从哪儿发出,被谁所接收以及用户数据是什么。接下来我们看这些报文是如何在网络当中去传递的,小帅和小丑的电报机连接的都是报文交换机A,因此他们各自的报文首先会被发送到交换机上,交换机A首先会把这两个报文的数据给存储起来,你可以理解为交换机A它有一部分的内存空间,它接收到的所有报文都会先被存储到它的内存里边,把报文存储下来之后,这个报文交换机是不是就可以检查每一个报文它的控制信息到底是什么,检查这个报文之后发现它是要发送到交换机C上面的H3这个电报机,所以接下来这个报文会被转发到报文交换机C上面,同样的道理,报文交换机C也会先把这个报文先存储起来,存储好了之后再来分析这个报文的控制信息紧接着再把这个报文转发给下一个节点,类似的,如果这个内存里边还有未处理的报文那么就继续分析下一个报文,它的控制信息是什么,经检查发现这个报文需要发送到交换机D上面的H5这台电报机上,这台报文交换机A,它会选择一条合适的转发路径,它的内存里边会维护一个数据结构叫做存储转发表,通过查这个表就可以知道如果要到达H5这台电报机,需要把这个报文转发到哪个地方,通常来说可以选择的转发路径会有多条,比如说这个报文可以通过下面这条路径,转发到H5这台电报机上,当然也可以通过上面这条路径转发到H5这台电报机上,具体要选择哪条路径,可以根据当时的网络负载情况,如果下面这条线路比较空闲就走下面这条,如果上面这条线路比较空闲就走上面这条。我们不妨假设这个报文会经过上面这条线路不断的存储转发,直到到达目的地址为止,这就是二十世纪六十年代电报网络采用的报文交换技术,这种技术可不可以用于实现计算机网络呢?看起来还挺合适的,假设现在小帅要给小美发送一个报文,小丑要给小扁发送一个报文,那么首先相比于电路交换技术,他们在发送数据之前是否需要和接收方先建立连接呢?不需要,直接把报文丢到这个网络上让这些中间节点,帮我逐层转发就可以了,所以报文交换技术在通信之前是不需要建立连接的,我们只需要确保每一个报文都包含必要的控制信息就可以了,要说明从哪儿发要发到哪儿,当然除了控制信息之外还有用户数据,每一个报文可以携带的信息各不相同,如果小帅此时只是和小美进行文字聊天,那么小帅给小美发的报文它就只需要包含少量的文字数据,相比之下如果小丑想要给小扁分享一个好看的电影,那么他的报文就需要携带更多的用户数据,第一个报文可能只有几个字节,而第二个报文可能会有好几个Gb,接下来报文1首先从H1这台计算机发送到A交换机上,这个交换机需要先存储报文1,与此同时报文2也发送到交换机A上,所以这个交换机也需要存储报文二,那么通过分析报文1的控制信息可以知道,报文1应该通过A->B->D这条路径发送给小美,因此报文1会被转发给交换机B,接下来分析报文2的控制信息,于是决定报文2也是通过这条线路发送给H6,所以报文2也会被转发到交换机B上面,可以看到在这个过程当中A->B这条线路正在同时满足小帅和小美的通信,以及小丑和小扁的通信,也就是说这条通信线路并不会被独占而是可以被整个网络当中的用户所共享。

这是报文交换相比于电路交换来说一个新的优点,数据以报文为单位在交换节点之间存储、转发,具体要转发到哪条线路可以灵活分配,如果在通信的过程当中发现某一条线路或者某一个节点损坏了,这些中间节点完全可以另外去规划一条转发路径,所以这种存储转发的机制会导致通信线路的分配变得更灵活,而且刚才我们说在通信过程当中用户无需独占一整条物理线路,因此线路利用率也显著提高了,另外报文交换由于采用了存储转发的机制,因此也就意味着中间的交换节点,在存储了一个报文之后,它可以通过一些校验技术比如说奇偶校验等等,通过一些校验技术去检查收到的报文有没有出现错误,以及有没有可能修正这个错误,因此中间的交换节点是可以支持差错控制的,这就使得长距离的传输更不容易出错,接下来继续转发这两个报文,报文1下一跳需要转发到D交换机上,最后再由D交换机转发给H5,而报文2需要转发到H6这台计算机上,这样就完成了两个报文的传输,报文交换这种技术如果应用于计算机网络,它也会有一些明显的缺点:第一点,报文是不定长的,不方便存储转发管理,刚才我们说有的报文可能很短就几个字节,有的报文又可能很长,可能是几个Gb,那么中间的这些节点都需要把这些报文先存储到自己的内存里然后再转发出去,这就意味着对于大报文的存储是不是也需要有很大的内存?比如一部高清电影假如是8Gb,那么这台交换机它至少就应该有8Gb的内存,如果报文变得更大,就意味着中间这些交换机的内存也需要跟着拓展要变得更大,这就没完没了了对吧,另一方面每个报文的大小各不相同这也会导致中间节点对内存资源的管理变得更复杂。如果大家已经学过操作系统的内存管理那个章节那么你会知道,如果我们对内存进行分区管理而每个分区的大小都是固定的,这种情况下对内存的管理就会简单很多,相比之下如果内存当中存储的这些东西有大有小,那么我们对内存的划分也是大一片小一片,在这种情况下对内存的管理也会变得更麻烦,因此报文不定长这个特性会对我们存储转发的过程的管理或这些算法的实现造成很多的不方便,另外我们说长报文的存储转发它的缓存开销会很大需要中间节点配备很大的内存,另外报文越长这个中间节点对长报文的处理时间开销也会越大,比如刚才我们说我们要对每一个报文进行差错控制,也就是需要使用一些校验技术去检查里边有没有数据是错误的,报文越长它的数据就越多,校验起来肯定也越耗时间,因此中间节点在存储转发的过程当中,对每个报文的处理时间开销就会变大,最后长报文还带来了一个问题就是报文越长,那么它的某一些比特、某一些数据出现错误的概率也越高,同样一条线路从A点发到B点,传送八个比特的数据和传送80Gb的数据,肯定是数据传的越多,数据出现错误的概率也越大,只要中间的某一个比特出现了错误,那么整个报文就是错的,而如果一个报文发生错误,那么我们通常有两种处理方式,第一种处理方式就是如果我们采用的校验技术比较厉害,那么可能通过校验技术,去修正他的少数几个比特的错误,但是如果这个校验技术,无法去修复数据错误的话,我们就只能要求发送方重新传送这个报文,因此报文越长越容易出错,而一旦出错有可能需要重传这个报文,所带来的代价也会变得很高,可以看到报文交换总体来说它的优点还是很多的,而报文交换的缺点绝大多数都是由于报文不定长、有可能出现长报文而导致的,回到最初的问题,当时科学家们在构建这个计算机网络的时候,发现电话网络不适合抄作业,电报网络有非常好的参考性,但是我们需要解决的是它报文不定长的问题,如果把这个问题解决那么这种技术就完全可以用到计算机网络上,因此基于报文交换技术人们提出了分组交换技术。

分组交换技术和报文交换技术非常类似,只不过我们会把一个长报文的数据,把它切分成定长的若干个部分,这些数据要在网络当中传输少不了控制信息去指明源地址和目的地址,同样的道理,把这样的一个数据切开之后,要让这些小块的数据在网络当中顺利的传输,我们也需要给它增加源地址、目的地址这样的一些关键信息,我们把这样的一块定长数据和它的控制信息看作一个整体,这样的一个整体就是一个所谓的分组,英文叫Packet,在一个分组当中这些控制信息我们通常把它称为首部(Header),也有一些教材会把它翻译为头信息,无论是哪种翻译,你只需要知道它的本质就是控制信息,就是用于控制这个分组在网络当中如何传播的。除了刚才提到的源地址和目的地址之外,我们还需要添加分组号这个关键信息,比如说我给你传一张图片如果我把这个图片的数据拆分成多个分组发给你,你收到这些分组之后还需要知道用什么样的顺序把这些数据给重新拼起来,恢复成原有的样子,因此分组号是首部当中需要包含的一个重要信息。

接下来看一个例子,假设小帅要给小美发送一个数据,那么在数据传送之前,首先会被拆分成多个分组,每个分组都包含首部的信息,现在通过H1这台电脑可以把三个分组发送到下一个中间结点交换机A上,所有的这些分组最终都会发送到H5这台计算机上,那么从这个节点开始可以看到有两
条路径我们可以走上面这条路发送给H5,当然也可以走下面这条路发送给H5,现在故事是这样的:分组0和分组1走了上面这条路,当分组2要被转发出去的时候,中间节点发现上面这条路线已经足够拥堵了,不妨把它发送到下面这条更空闲的路线上,于是分组2被规划到下面这条路径上,
紧接着由于下面这条线路比较通畅,所以分组2遥遥领先一路来到了H5这个计算机上,也就说H5先接收到了分组2,紧接着分组0和分组1也通过上面这条线路逐一的转发给H5,所以收到这些分组的顺序是2、0、1,通过分组首部的分组号的信息,H5这台电脑可以对这些分组进行排序,重新排成0、1、2的顺序然后再把不必要的首部信息给拆出去,最后合并成用户数据。那这就是分组交换技术,在现代计算机网络当中路由器就是一种典型的分组交换机,网络中的数据以固定长度的分组为单位,在各个路由器之间交换,而路由器判断一个分组它是从什么地方发出又应该发到什么位置,是通过IP地址来判断的,发送方有自己的IP地址,接收方也有自己的IP地址,关于路由器的原理还会在第四章进行进一步的学习,这儿先不展开。

来分析一下分组交换的优缺点,首先分组交换几乎继承了报文交换的所有优点,相比于报文交换来说,它又改进了这样的一些问题,报文是不定长的,而分组是定长的,这样就可以让存储转发的这个管理会更方便,同时由于每个分组都是比较小的,所以存储转发的时间开销和缓存开销都会比报文交换更低,另外每个分组变短了之后,它在传输的过程当中也不容易出错,即便是发现分组出错了,要重传一个分组的代价也远低于重传一个报文的代价,所以分组交换把存储转发的这个数据单位从不定长的报文变成了定长的分组之后,几乎就解决了报文交换的这些缺点,它带来了一些优点的同时也带来了一些新的小问题,首先相比于报文交换来说,控制信息的占比增加了,什么意思呢?在报文交换当中一整个报文只需要有一个控制信息,控制信息在报文当中的占比是比较小的,而我们把报文拆分成分组之后,每个分组都会有一个首部的信息,所以整体来看分组交换当中这个控制信息的占比,肯定就会比报文交换要大得多,这样就会使得我们需要消耗更多的网络资源去传送,其实用户并不关心的这些控制信息,当然控制信息的占比其实也不会增加特别多,总的来说付出这一点代价带来的好处要更多。这是和报文交换相比的一个缺点。

和电路交换相比,无论是分组交换还是报文交换它们都存在着存储转发时延,在电路交换当中,中间节点不需要去存储转发数据,只需要让数据直接通过就行了,但是对于分组交换和报文交换来说,每一个中间节点都需要把数据存起来并且对控制信息进行分析处理,然后再转发出去,这就是所谓的存储转发时延,因此相比于电路交换来说,分组交换的数据传输速度肯定要慢一些,最后在分组交换当中,一个报文被拆分成多个分组,通过刚才的例子我们能感受到传输的过程当中有可能会出现分组失序,就是没有按既定的顺序被接收方所接收,或者有的分组可能在传输的过程当中因为一些设备或者线路的问题导致分组丢失,有可能出现的幺蛾子越多,最终要处理这些问题的复杂度也会越高,这是分组交换需要付出的代价。

时间回到上世纪六十年代,计算机网络的这些先驱们在发现这个分组交换的这种问题之后,有人提出了一种解决方案叫做虚电路交换,其实它的本质也是分组交换,只不过在通信双方传输数据之前需要像电路交换那样先建立连接,再传送数据最后释放连接,比如小帅要给小美传数据,那么同样的这些数据会被拆分成分组,在这些数据发送之前,小帅的H1这个电脑会给小美的H5这个电脑发送建立连接的请求,不过与电路交换不同,这儿建立的连接它只是一个虚拟电路,比如说我们可以建立上面这条虚拟电路作为它们俩的这个传输路径,建立完这个连接之后这些分组就可以开始按序去发送,可以看到这些分组都是按照统一的路径以及按照正常的顺序,逐一的发送到H5这台计算机上的,同时这些分组在网络中存储交换的时候,其他用户也可以共享这些链路,也就是说这条所谓的虚拟电路它并不是被两个用户独占的。H5这台计算机按序收到各个分组之后,它再把各个分组合并成最终的一整块数据,这就是所谓的虚拟电路交换技术,本质上也是分组交换只不过它又吸收了电路交换的一个思想,关于虚拟电路交换我们还会在第四章进行学习,在现代计算机网络当中最终是采用了分组交换技术,而没有采用虚拟电路交换技术,原因是连接网络的各个计算机其实它们的处理性能都是非常强大的,如果采用分组交换技术,相当于我们把分组的失序问题、丢失问题各种乱七八糟的问题交给了这些终端来处理,但是如果采用虚拟电路交换技术那么相当于我们把保证分组不乱序、不丢失这些乱七八糟的问题交给了网络的核心部分去处理。这样反而会降低网络核心部分的数据传输能力,其实我们只需要发挥网络边缘的这些终端他们强大的算力、强大的处理能力,事实上是可以解决分组失序等等乱七八糟的问题的。所以结论就是现代的计算机网络采用的是分组交换技术。

这个小节当中我们介绍了电路交换、报文交换和分组交换的原理以及各自的优点缺点,最后我们也补充了虚电路交换的相关原理,不过虚电路交换并不是这一章的学习重点,在这一章当中大家更需要关注的还是电路交换、报文交换以及分组交换。

以上就是这个视频的全部内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋悠然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值