计算机网络系列 --- 什么是电路交换和分组交换?

分组

首先我们来了解下分组的概念。所谓分组,就是将一个数据包分成一个个更小的数据包。例如对于一个10GB的数据包,总不可以一次性发送过去吧,而是把它分成若干个小的数据包发送过去。每个分组数据块的结构图:

文件头一般是一些说明性数据,例如源地址和目标地址,数据类型等。数据部分就是真正要传达给对象的内容

电路交换

所谓交换,指的就是服务器与服务器之间的数据交换。数据传输交换的方式有几种,而电路交换便是其中的一种。

假如A和B之间要进行通信,我们就假设A要和E打个电话吧。当A输入E的电话号码,开始拨号之后,那么服务器要做的第一件事就是根据E的电话号码找到E在哪里,由于A通往E的路径有多条,会根据某种算法找到E之后,建立一条通路,然后进行数据的传输。

我们假设选的路径是A→D-→E

找到一条通往E的路径并建立会话的过程中,我们称之为电路交换的第一阶段—-建立连接。之后A和E在通话的过程中会始终霸占着这条路径,数据传输的过程称为电路交换的第二阶段—-数据传输

电路交换的第三阶段,也就是最后一个阶段—-释放连接。A和B只要有一方挂了电话,那便了开始释放连接。

传输例题图:

在这个过程中,新建连接需要花销一定的额外时间(想象你打电话的时候是不是出现正在拨号的字眼),释放连接也会花销一些额外的时间。

那么,电话交换的过程中,数据需要分组来传送吗?

答是不用的,因为电话交换的过程中,A和B两个人始终霸占着一条通信电路,他们每说一句话,都会实时被对方获取,因此数据是不用分组的。

从这也可以看出,电路交换的方式,在数据的传输上是比较高效、实时的,只要A一发出数据,E立马就能收到了,这也是为什么我们的电话通信使用的是电路交换的方式。

但由于一直霸占着这条路径,假如霸占的过程中A与E都在沉默不说话,那么将是对这条路径的极大浪费。因此,电路连接的方式资源的利用率是比较低的。

而且,如果你通话的时间超级短,可能花在新建连接的时间比通话的时间还要长,这就更加难受了。

稍微总结一下

电路连接的三个阶段:

1、建立连接。

2、数据传输。

3、释放连接。

优点:

1、传输速度快、高效。

2、实时。

缺点:

1、资源利用率低。

2、新建连接需要占据一定的时间,甚至比通话的时间还长。

分组交换

从名字分组字眼,我们就可以知道,这种方式数据包是分组成更小的数据包进行传输的。分组交换的数据传输过程和电路交换不一样,分组交换采取存储转发传输的机制。我们下面还是以A给E传输数据作为例子来讲解。

假如A要给E发送一个数据包P,但这个数据包有点大,需要分成三组,例如分成p1,p2,p3三个更小的数据包。

这时A给E传输数据不需要新建连接这个过程,即不需要寻找一个通往E的路径。而且A直接把小的数据包丢给附近的路由器,然后A就不管了,例如A把p1丢给了B,这个时候A就不在去管p1的,当B收到p1这个完整的小数据包之后,B再丢给E。

但是A不一定都会把剩下的数据包都丢给B,有可能会把其他的数据包p2丢给C,之后再把p3丢给D,然后C和D在转发丢给E。这些都是不确定的,会根据某种算法的选择路由器。

这里有一个关键词存储,就是说,B必须收到完整的p1数据包后才能进行转发,这也不难理解,因为p1数据包包含E的地址,如果不是完整的数据包,B也不知道该发给谁啊。

示例图:

从电路交换的机制我们可以看出如下的一些问题:

由于A把数据包丢给B之后就不管了,B什么时候会把p1转发出去,谁也不知道,而且可能B会绕几个圈子再发给E也是有可能的。因为,电路交换的机制在数据传输方面不具有实时性

而且,很有可能会有很多路由器把数据包丢给B,这个时候就会造成通信阻塞,这时可能p1只能排队等待B来发送。

由于B路由器的容量是有限的,如果有太多的数据包丢给它,它可能会容纳不下,这时候就可能会出现丢包的情况。

再者,由于p1,p2,p3数据包都有文件头,里面都包含了A和E的一些信息,当然还有其他的信息。可以说这些文件头有很多重复的数据,因此分组交换发送的数据具有很多的重复无用数据

当然,分组交换还包括时延的缺点,因为B必须收到一个完整的p1才能把p1转发出去,因为这个接受存储的过程中存在时延,这种时延也成为传输时延,当然还存在传播时延处理时延等。所谓处理时延就是每次都得检查这个数据包的文件头和决定将该数据包传输给谁。

说了电路交换的这么多缺点,那总得有优点吧?

实际上,上面的那些缺点,其实都不是什么大问题的。电路交换最主要的优点就是设计简单,资源利用率高了。

总结下分组交换

分组交换采用把一个个小的数据包存储转发传输的机制。

主要的一些缺点:

1、不具有实时性。

2、存在延时。

3、会造成通信阻塞。

4、存在无用的重复数据。

5、会出现丢包的情况。

致命的优点:

1、设计简单。

2、资源利用率很高。

生活中的通信选择

两种交换传输的特点决定了我们平时的电话通信使用的是电路交换,像互联网中的微信等这种不要求实时的通信用分组交换。

这也就是为什么急事的时候会打电话,因为比较实时嘛。像微信这些,有时你发个信息,可能网络不好的话,或者太多人在同时使用的话,可能你的信息要过一阵子对方才能收到。

这里可能有些人会说,分组交换为何要把数据包分成一小个来存储转发呢?一个大的数据包发过去不好吗?

假如你的一个数据包100GB,那B这个路由器就得能存100GB的容量,可是发100GB的概率是极少数的,那把路由器设计成100GB不是很浪费?这也是为什么要分组成小数据包的原因之一。

当然,还有一种报文交换的方式,就是一整个数据包存储转发的,不过这种方式使用的比较少,再此就不详细展开了。

来一张三种交换传输的图:

原文发布于微信公众号 - 苦逼的码农(di201805)

原文发表时间:2018-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏思考的代码世界

基础篇|PHP如何解决网站大流量和高并发

并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行

2.1K4
来自专栏JetpropelledSnake

Web负载均衡学习笔记之四层和七层负载均衡的区别

  ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换...

1232
来自专栏杨建荣的学习笔记

Oracle中的PGA监控报警分析(r11笔记第96天)

最近接到一个数据库报警,让我颇有些意外,这是一个PGA相关的报警。听起来感觉是应用端的资源调用出了问题。 报警内容大体如下: 报警内容: PGA Alarm o...

3938
来自专栏张善友的专栏

搭建consul 集群

上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到...

4217
来自专栏用户2442861的专栏

高性能网络编程(一)—-ACCEPT建立连接

http://taohui.pub/2016/01/25/%E9%AB%98%E6%80%A7%E8%83%BD%E7%BD%91%E7%BB%9C%E7%B...

961
来自专栏.net core新时代

开源任务管理平台TaskManager介绍

  很早之前准备写Quartz系列文章,现在终于能够实现了。从本篇开始将带你实现一款自己的任务管理平台。在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周...

3769
来自专栏张戈的专栏

在Linux中发现IP地址冲突的方法

Linux 下出现 IP 冲突,是不会像 Windows 那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在 VM 虚拟机里面安装了 4 个 redh...

4237
来自专栏西安-晁州

使用pd从数据库逆向生成pdm文件

1683
来自专栏后端技术探索

四层和七层负载均衡的区别

① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换...

1804
来自专栏AhDung

让Windows2008R2也能进入手柄设置(游戏控制器设置)

在Windows2008 R2系统中,插入XB360手柄后能自动完成驱动安装,在【设备和打印机】中也会出现手柄,但在上面右键→游戏控制器设置却没反应,什么都没打...

2371

扫码关注云+社区

领取腾讯云代金券