概述
???? 本文收纳于 ⭐ CS-Wiki(Gitee 推荐项目,0.8k star), 欢迎 star ~ ????
0. 前言
本文所讲的知识点在面试中可能不太会涉及,因为确实很基础也没啥好问的,但是简单不代表你可以不知道,本篇对于整个计网知识体系的构建仍然是必不可少的。属于一篇扫盲文,帮助大家更好的理解计算机网络。
1. 数据传输方式
从上一讲 一文读懂两台计算机之间是如何通信的 我们知道物理层的作用就是在某种传输介质(信道)上传送数据,实现相邻计算机节点之间数据(比特流)的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。
那么这些数据在信道上是以何种方式进行传输的呢?
我们先宽泛的看一下几种不同的传输方式,下文再详细讲解:
- 若按数据传输的顺序可分为:并行传输和串行传输;
- 若按数据传输的同步方式可分为:同步传输和异步传输;
- 若按数据传输的流向和时间关系可分为:单工、半双工和全双工数据传输(通信)
① 按数据传输的流向和时间关系分类
Ⅰ 单工通信
单工数据传输是两数据站之间只能沿一个指定的方向进行数据传输。即发送方和接收方固定。单向传输,仅需要一条信道(大家可以类比广播)
Ⅱ 半双工通信
半双工数据传输是两数据站之间可以在两个方向上进行数据传输,但不能同时进行。即通信的双方都可以发送和接收,但不能同时发送和接收。交替传输,需要两条信道(类比对讲机)
Ⅲ 全双工通信
全双工数据传输是在两数据站之间,可以在两个方向上同时进行传输。即双方可以同时发送和接收。双向同时传输(类比打电话)
② 按数据传输的顺序分类
Ⅰ 串行传输
串行传输是数据流以串行方式在一条信道上传输。
该方法易于实现。缺点是要解决收、发双方码组或字符的同步,需外加同步措施。
Ⅱ 并行传输
并行传输是将数据以成组的方式在两条以上的并行信道上同时传输。例如采用 8 单位代码字符可以用 8 条信道并行传输,一条信道一次传送一个字符。因此不需额外的措施就天然的实现了收发双方的字符同步。
缺点是传输信道多,设备复杂,成本较高,故较少采用。
③ 按数据传输的同步方式划分
首先解释一下什么是同步:上文我们讲过串行传输需要解决收、发双方码组或字符的同步,这句话的意思其实不难理解:在串行传输时,接收端从串行数据流中正确地划分出发送的一个个字符所采取的措施称为字符同步。根据实现字符同步方式不同,数据传输有异步传输和同步传输两种方式。
Ⅰ 同步传输 Synchronous Transmission
同步传输就是发送方和接收方的时钟要同步,以固定时钟节拍来发送数据信号,数据的传送以一个数据块为单位,因此同步传输也称区块传输。
在串行数据流中,各信号码元之间的相对位置都是固定的,接收端要从收到的数据流中正确区分发送的字符,发送端必须建立起始位和结束位:
-
发送端发送的数据格式:同步符号(起始字符)+数据块+同步符号(结束字符)
同步符号:标识数据块的开始和结束
-
接收端区分接收到的字符序列:遇到同步符号,开始接收数据,直到结束符号为止。
???? 打个比方:就像双方约好了发送方每过一个小时就发送一次打包好的数据给接收方,接收方也每过一个小时接收一次数据。但是接收方不明白这一串数据得有多长,不能说传过来的数据收了一半就算完成了,所以得有起始位和结束位方便识别接受到的数据是否完整。
???? 可能存在的问题:假同步现象 — 数据块中含有与同步符号相同的内容
解决方法:增加匹配同步符号的难度
???? 通俗来说:
- 同步传输就是,数据没有被对方确认收到则调用传输的函数就不返回。接收时,如果对方没有发送数据,则你的线程就一直等待,直到有数据了才返回,可以继续执行其他指令
同步传输方式的优点是不需要像异步传输一样对每一个字符单独加起、止码元,因此传输效率较高。
缺点是实现技术较复杂。通常用于高速数据传输
Ⅱ 异步传输 Asynchronous Transmission
异步传输就是发送方和接收方没有时钟同步。异步传输每次传送一个字符代码(5~8 bit),在发送每一个字符代码的前面均加上一个 “起” 信号(起始位),后面均加一个 “止” 信号(终止位)。字符可以连续发送,也可以单独发送;不发送字符时,连续发送止信号。
每一字符的起始时刻可以是任意的(这也是异步传输的含意所在),也就是说发送方可以在任何时刻发送这些字符,而接收方并不知道它们会在什么时候到达。
那么接收端如何区分一个个的字符呢?实际上接收端是根据字符之间的止信号到起信号的跳变(“1”→“0”)来检测识别一个新字符的“起”信号,从而正确地区分出一个个字符。因此,这样的字符同步方法又称起止式同步。
???? 读到这里,相信大家也就能明白为什么异步传输每次发送字符的时候都要在其前后加上 “起” 和 “止” 信号了:
因为异步传输的接收方并不知道数据会在什么时候到达。在它检测到某个字符并做出响应之前,上一个字符已经过去了。这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存字符的时间;在传输结束时,一个停止位表示该次传输信息的终止。
举个异步传输的例子:计算机键盘与主机的通信。我们按下一个字母键、数字键或特殊字符键,就会发送一个 8 比特位的 ASCII 代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。
???? 通俗来说:
- 异步传输就是,你调用一个函数发送数据,马上返回,你可以继续处理其他事,接收时,对方的有数据来,你会接收到一个消息,或者你的相关接收函数会被调用。
异步传输的优点是:实现同步比较简单,收发双方的时钟信号不需要精确的同步。
缺点是每个字符增加了 2~3 bit,降低了传输效率。它常用于低速数据传输。
2. 数据交换方式
首先我们要知道什么是数据交换、为什么要数据交换:数据交换(Data Switching)是指在多个数据终端设备之间,为任意两个终端设备建立数据通信临时互连通路的过程。通俗来说交换是就通过某些交换中心将数据进行集中和传送,传输线路为各个用户共用,从而大大节省通信线路,降低系统费用。如果网络规模较大,则把交换设备连接在一起形成交换网络。
数据交换可以分为:电路交换、报文交换、分组交换
① 电路交换
所谓电路交换就是:用户之间要传输数据时,交换中心在用户之间建立一条暂时的数据电路。电路接通后,用户双方便可传输数据,并一直占用到传输完毕拆除电路为止。电路交换引入的时延很小,而且交换机对数据不加处理,是这几种交换方式中最快的一种。因而适合传输实时性强和批量大的数据。
最典型的电路交换网络:电话网络
电路交换的三个阶段:
- 建立连接(呼叫/电路建立)
- 通信(数据传输)
- 释放连接(拆除电路)
其实大家记住电路交换的这个特点就好了:独占连接。用户始终占用端到端的固定传输带宽。适用于远程批处理信息传输或系统间实时性要求高的大量数据传输的情况。
② 报文交换
首先解释一下报文的概念:报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整数据信息,其长短很不一致,长度不限且可变。
报文交换不同于电路交换,它无需在两个站点之间建立一条专用通路,其数据传输的单位是报文,传送过程采用存储转发的方式。
什么是存储转发呢:比如说 A 发送报文给 C,需要经过 B,那么 B 必须收到完整的报文并检查有无错误后才能进行转发。这也不难理解,因为该报文中包含 C 的地址,如果不是完整的报文,B 也不知道该发给谁
当然,这个接收存储以及转发的过程显然是存在时延的
报文交换示例图:
③ 分组交换
首先我们来了解下分组的概念。所谓分组,就是将一个大的数据包(报文)分成一个个更小的数据包,这些一个个更小的数据报就称为分组。在每个分组的首部写入发送端和接收端的地址,每个分组数据块的结构如下所示:
分组交换同样采用存储转发,不同站点的数据分组可以交织在同一线路上传输,也就是说一个报文分成了若干个分组之后,这些分组不一定都沿着同一条路径进行转发,提高了线路的利用率。当然,由于将大的报文分割成了若干小分组,所以分组交换的速度比报文交换快得多
那么在网络中什么时候会使用分组交换呢?
当一个网络层的 IP 数据报从一个主机传输到另一个主机时,它可能通过不同的物理网络。每个物理网络上都有各自的最大帧的大小(即最大传输单元 MTU),若传输的 IP 数据报超过 MTU,此时就会对整个 IP 数据包进行分组。
由于报文会分为众多的分组,工作量比较大,可能会出现丢包的现象,这也是分组交换的缺点。
④ 三种交换方式比较
电路交换 | 报文交换 | 分组交换 | |
---|---|---|---|
建立连接 | 需要 | 不需要 | 不需要 |
数据交换单位 | 比特流 | 报文 | 分组 |
传输方式 | 比特流直达 | 存储转发 | 存储转发 |
每个分组沿着规定路径 | 是 | 不是 | |
分组按序到达 | 是 | 不是 | |
优点 | 通信时延小; 实时性强; 适用范围广; 控制简单; 避免冲突 | 无需建立连接; 动态分配陆续; 可靠性高; 线路利用率高; 可提供多目标服务 | 加速传输; 简化存储管理; 减少出错几率和重发数据 |
缺点 | 建立连接时间长; 信道利用率低; 缺乏统一标准; 灵活性差 | 由于存储转发导致时延; 对报文大小没有限制,需要较大的存储缓存空间 | 由于存储转发导致时延; 工作量大,可能出现分组丢失等情况 |
⑤ 数据交换方式的选择
- 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小。
- 当端到端的通路有很多段的链路组成时,采用分组交换传送数据较为合适
- 从信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适用于计算机之间的突发式的数据通信(比如我们用微信发消息)
???? 关注公众号 | 飞天小牛肉,即时获取更新
- 博主东南大学研一在读,利用课余时间运营一个公众号『 飞天小牛肉 』,2020/12/29 日第一次开通,专注分享计算机基础(数据结构 + 算法 + 计算机网络 + 数据库 + 操作系统 + Linux)、Java 基础和面试指南的相关原创技术好文。本公众号的目的就是让大家可以快速掌握重点知识,有的放矢。希望大家多多支持哦,共同见证小牛肉的成长
最后
以上就是危机钢笔为你收集整理的网络基础扫盲 | 数据传输方式和交换方式的全部内容,希望文章能够帮你解决网络基础扫盲 | 数据传输方式和交换方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复