网络中数据是如何交换的?

186 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 12 天,点击查看活动详情

Hi~ o( ̄▽ ̄)ブ,我是Young,今天我又比昨天更博学了,你呢?

数据交换的概念

网络这个词语,大家可能既熟悉又陌生,熟悉点在于我们平时使用的一些电子设备如:电脑、手机、平板经常需要连接网络才能给别人发消息、开视频、语音聊天;陌生点在于绝大多数人对于网络的底层数据是如何转发的一无所知。

今天我们就来窥探一下底层是如何实现的,首先需要明白的是,数据交换是发生在网络彼此互连的结点间的数据转接,实现将数据从数据源端到目的端结点的这么一个过程和技术。计算机网络中按照交换方式把网络分为三种类型:电路交换网络报文交换网络分组交换网络

网络结构

在正式介绍这三种交换网络之前,有必要先让大家看一下目前大规模现代计算机网络的结构图是什么样的:

image.png

在上图网络结构中我们可以看到最外围都是一些电子设备,如:车、电脑、服务器等,它们处于网络边缘,设备通过接入网层提供的电话网ADSL(早期电话线)、3G/4G/5G移动网络、局域网/以太网、WiFi等方式连接到网络核心,网络核心则是由通信链路和分组交换设备构成的。

数据交换技术

要知道计算机网络的根本目的就是实现处于网络边缘层的各终端之间的数据传输、信息交换。现在我们已经知道了网络结构鸟瞰图,接下来我们来聊一聊在这个结构中我们使用了哪些交换技术。

1、电路交换

首先我们得聊一聊电路交换这位老前辈,它是最早出现的一种交换技术,距今已经100多年的历史啦!在电路交换网络中,首先需要通过中间交换节点为两台终端设备建立一条专用的通信线路(称为电路),其次再利用这条电路进行通信,通信结束后再拆除它。最简单的案例就是小时候使用固定电话拨号呼叫的过程其实就是一次请求建立电路的过程。

image.png

2、报文交换

终端设备之间的数据交互并非是持续性的,就像我可能只要给你发个消息就可以了,那采用电路交换的方式就显有点浪费了。于是诞生了报文交换(也称消息交换),整体工作流程是,发送端将消息进行包装,附加上自己主机地址信息和对方主机地址信息,构成一个完整的报文(Message)。然后以报文为单位在交换网络各结点间以存储-转发的形式传递,直到消息抵达目的地。

image.png

报文交换的好处在于不需要提前建立连接,报文只要组装好就可以发送给相邻的交换结点,交换结点在确认收到报文并检查无误后,暂时存储,然后利用路由选择找出需要转发的下一个结点信息,再把整个报文转发给下一个结点。

3、分组交换

分组交换算是目前计算机网络中应用最广泛的技术了,可以说是在报文交换技术的基础上再进行细分,分组交换就是将待发送数据(即报文)分割成较小的数据块,每个数据块都加上地址、序号等控制信息构成分组数据(packet),每个分组数据到达目的地后,需要目的端将分组进行重新组装还原成整个报文。分组传输的过程也是采用存储-转发的方式。

image.png

分组交换与报文交换相比,最主要的区别在于是否将报文拆分成更小的单位。虽然表面上看似乎分组交换要更麻烦一点,需要消耗一定的计算资源来将数据进行拆分和组装。但实际上这个过程却极大的改善了交换网络的性能。具体带来的好处如下:

  • 对于中间层的交换设备存储容量要求低
  • 由于交换的数据更小从而交换速度更快
  • 可靠传输效率高:网络中链路不可能实现100%无差错,传输过程中哪怕错了1位,都需要重传整个报文,可想而知重传整个报文肯定要比一个分组要耗费更多的时间。
  • 公平性:数据是以报文为单位进行存储-转发的,如果多个报文沿着同一条路径传输,且大报文排在前面,小报文排在后面,就会出现小报文一直得不到转发的情况。所以切分成更细的单元后,极大的提高了数据转发的公平性。