计算机网络:数据交换方式

计算机网络:数据交换方式

    • 电路交换
    • 分组交换
    • 报文交换
    • 传输对比


本博客介绍计算机之间数据交换的三种方式,分别是电路交换、分组交换以及报文交换。

电路交换

我们首先来看电路交换,在电话问世后不久,人们就发现要让所有的电话机都两两相连接是不现实的。例如两部电话只需要用一对电线就能够互相连接起来,但若有 5 部电话要两两相连,则需要 10 对电线。

在这里插入图片描述

当电话机的数量很大时,这种连接方法需要的电线数量就太大了。例如,如果有 n 部电话机需要两两相连,那么一共需要多少对电线呢?答案是(n - 1) * n / 2。

于是人们认识到要使得每一部电话能够很方便地和另一部电话进行通信,就应当使用一个中间设备将这些电话连接起来。这个中间设备就是电话交换机,每一部电话都连接到电话交换机上:

在这里插入图片描述

可以把电话交换机简单的看成是一个有多个开关的开关器,可以将需要通信的任意两部电话的电话线路按需接通,从而大大减少了连接的电话线数量。

当电话机的数量增多时,就需要使用很多彼此连接起来的电话交换机来完成全网的交换任务。用这样的方法就构成了覆盖全世界的电信网,电话交换机接通电话线的方式称为电路交换

从通信资源的分配角度来看,交换就是按照某种方式动态的分配传输线路的资源。我们来看下面这个电路交换的示意图:
在这里插入图片描述

应当注意的是用户线归电话用户专用,而电话交换机之间拥有的大量中继线则是许多用户共享的

电路交换有以下三个步骤:

  • 建立连接,也就是分配通信资源。例如在使用电路交换打电话之前,必须先拨号请求建立连接。当被叫用户听到电话交换机送来的拨号音并接通,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路,这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用

  • 通话,也就是主叫和被叫双方互相通电话。在整个通话期间,之前建立连接所分配的通信资源始终被占用。

  • 释放连接,也就是通话完毕挂机后,电话交换机释放刚才使用的这条专用的物理通路。换句话说是把刚才占用的所有通信资源归还给电信网,

这种必须通过建立连接(占用通信资源),通话(一直占用通信资源),释放连接(归还通信资源)三个步骤的交换方式,称为电路交换

那么如果使用电路交换来传送计算机数据是否可行?

在这里插入图片描述

应该说,尽管采用电路交换可以实现计算机之间的数据传送,但是线路的传输效率往往很低,这是因为计算机数据是突发式的出现在传输线路上的

突发性:
计算机在传输数据时,不会一直在信道中传输数据,而是间歇性的传输数据

计算机数据具有突发性,这导致使用电路交换传送数据时通信线路的利用率很低,真正用来传送数据的时间往往不到10%,甚至不到 1%。已被用户占用的通信线路资源在绝大部分时间里都是空闲的。

试想一下,这种情况,当用户正在输入和编辑一份带传输的文件时,用户所占用的通信资源暂时未被利用,该通信资源也不能被其他用户利用,宝贵的通信线路资源白白被浪费了。因此,计算机网络通常采用分组交换而不是电路交换。


分组交换

在这里插入图片描述

假设这是因特网的一部分,在因特网中最重要的分组交换机就是路由器,他负责将各种网络互联起来,并对接收到的分组进行转发,也就是进行分组交换。

在这里插入图片描述

我们来看这样一个例子,假设主机 H6 的用户要给主机 H2 的用户发送一条消息,通常我们把表示该消息的整块数据称为一个报文

在这里插入图片描述

在发送报文之前,先把较长的报文划分成为一个更小的等长数据段,在每一个数据段前面加上一些由必要的控制信息组成的手部后,就构成了一个分组,也可简称为,相应的手部也可称为包头

那么添加手部的作用是什么?这不是额外加大了带传输的数据量吗?

实际上手部起着非常关键的作用,相信大家至少能想到手部中肯定包含了分组的目的地址,否则分组传输路径中的各分组交换机,也就是各路由器就不知道如何转发分组了。分组交换机收到一个分组后,先将分组暂时存储下来,再检查其手部,按照手部中的目的地址进行查表转发,找到合适的转发接口,通过该接口将分组转发给下一个分组

在这里插入图片描述

主机 H6 将所构造出的各分组依次发送出去,各分组经过途中各分组交换机的存储、转发,最终到达主机H2。

在这里插入图片描述

主机 H2 收到这些分组后,去掉他们的手部,将各数据段组合还原出原始报文:

在这里插入图片描述

需要说明的是,为了初学者容易理解,在本例中我们只演示出了分组传输过程中的两种情况。一种是各分组从源站到达目的站可以走不同的路径,也就是不同的路由。另一种是分组乱序,也就是分组到达目的站的顺序不一定与分组在源站的发送顺序相同。对于可能出现的分组丢失、误码重复等问题并没有演示,这些内容将在以后详细介绍。

在上述的分组交换过程中,发送方所要完成的任务是构造分组发送分组
在这里插入图片描述

路由器,也就是分组交换机,所要完成的任务是缓存分组转发分组,简称为存储转发

接收方所要完成的任务是接收分组还原报文

在这里插入图片描述


报文交换

与分组交换类似,报文交换中的交换节点也采用存储转发方式,但报文交换对报文的大小没有限制,这就要求交换节点需要有较大的缓存空间。需要注意的是,报文交换主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式所取代。因此我们不再详细介绍报文交换了。


传输对比

接下来我们对电路交换、报文交换、分组交换这三种交换方式进行一下对比。
在这里插入图片描述

假设a、b、c、 d 是分组传输路径上所要经过的四个节点,纵坐标为时间。

电路交换:
在这里插入图片描述

对于电路交换通信之前首先要建立连接。连接建立好之后就可以使用已建立好的连接进行数据传送。数据传送结束后需要释放连接以归还之前建立连接所占用的通信线路资源。

报文交换:
在这里插入图片描述

对于报文交换,可以随时发送报文,而不需要事先建立连接,整个报文先传送到相邻节点,交换机全部存储下来后进行查表转发到下一个节点交换机。

分组交换:
在这里插入图片描述

对于分组交换,可以随时发送分组,而不需要事先建立连接。构成原始报文的一个分组,依次在各节点交换机上存储、转发。各节点交换机在发送分组的同时还缓存接收到的分组。

在这里插入图片描述

  • 电路交换:一旦建立连接,中间的各节点交换机就是直通形式的比特流,可以直达终点。

  • 报文交换:整个报文需要在各节点交换机上进行存储转发,由于不限制报文的大小,因此需要各节点交换机都具有较大的缓存空间。

  • 分组交换:构成原始报文的一个个分组,在各节点交换机上进行存储转发。相比报文交换减少了转发时延,还可以避免过长的报文,长时间占用链路,同时也有利于进行差错控制。


最后我们总结一下这三种交换方式各自的优缺点:

电路交换:

优点缺点
通信时延小建立连接时间长
有序传输独占线路,使用率低
没有冲突灵活性差
适用范围广难以规格化
实时性强
控制简单

电路交换的优点:

  • 通信时延小:这是因为通信线路为通信双方用户专用数据直达,因此通信时延非常小。当连续传输大量数据时,这一优点非常明显。
  • 有序传输:这是因为通信双方之间只有一条专用的通信线路,数据只在这一条线路上传输,因此不存在失序问题。
  • 没有冲突:不同的通信双方拥有不同的信道,不会出现征用物理信道的问题。
  • 适用范围广:电路交换既适用于传输模拟信号,也适用于传输数字信号。
  • 实时性强:这主要得益于其通信时延小的优点。
  • 控制简单:电路交换的节点。交换机及其控制都比较简单。

电路交换的缺点:

  • 建立连接时间长:电路交换的平均连接建立时间对计算机通信来说太长了,
  • 线路独占使用效率低:电路交换一旦建立连接物理通路就被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用率很低。
  • 灵活性差:只要连接所建立的物理通路中的任何一点出现了故障,就必须重新拨号,建立新的连接,这对十分紧急和重要的通信是很不利的。
  • 难以规格化:电路交换时,数据直达不同类型、不同规格、不同速率的终端,很难相互进行通信,也难以在通信过程中进行差错控制。

报文交换:

优点缺点
无需建立连接引起了转发时延
动态分配链路需要较大存储缓存空间
提高线路可靠性需要传输额外信息量
提高线路利用率
提供多目标服务

报文交换的优点:

  • 无需建立连接:报文交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送报文。
  • 动态分配线路:当发送方把报文传送给节点交换机时,节点交换机先存储整个报文,然后选择一条合适的空闲线路将报文发送出去。
  • 提高线路可靠性:如果某条传输路径发生故障,会重新选择另一条路径传输数据,因此提高了传输的可靠性。
  • 提高线路利用率:通信双方不是固定占用一条通信线路,而是在不同的时间分段部分占用物理线路,因而大大提高了通信线路的利用率。
  • 提供多目标服务:一个报文可以同时发送给多个目的地址,这在电路交换中是很难实现的。

报文交换的缺点:

  • 引起了转发时延:这是因为报文在节点交换机上要经历存储、转发的过程。
  • 需要较大的存储缓存空间:这是因为报文交换对报文的大小没有限制。
  • 需要传输额外的信息量:这是因为报文需要携带目标地址、原地址等信息。

分组交换:

优点缺点
无需建立连接引起了转发时延
提高线路利用率需要较大存储缓存空间
简化了存储管理对于数据报服务,存在失序,丢失或重复分组的问题
加速传输对于虚电路服务,存在呼叫建立,数据传输和虚电路释放三个过程
减少出错概率和重发数据量

分组交换的优点如下,

  • 无需建立连接:分组交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送分组
  • 线路利用率高:通信双方不是固定占用一条通信线路,而是在不同的时间分段部分占用物理线路,因而大大提高了通信线路的利用率。
  • 简化了存储管理:这是相对于报文交换而言的,因为分组的长度固定,相应的缓冲区的大小也固定,管理起来相对容易。
  • 加速传输:由于分组是逐个传输的,这就使得后一个分组的存储操作与前一个分组的转发操作可以同时进行。
  • 减少出错概率和重发数据量:因为分组比报文小,因此出错概率必然减小。即便分组出错,也只需重传出错的部分,这比重传整个报文的数据量小很多,这样不仅提高了可靠性,也减少了传输时延。

分组交换的缺点如下,

  • 引起了转发时延:这是因为分组在节点交换机上要经历存储、转发的过程。
  • 需要传输额外的信息量:将原始报文分割成等长的数据块,每个数据块都要加上原地址、目的地址等控制信息,从而构成分组,因此使得传送的信息量增大了。
  • 采用数据报服务进行分组交换:可能会出现失序、丢失或重复分组**:分组到达目的节点时,需要重新还原成原始报文比较麻烦。
  • 采用虚电路服务进行分组交换:虽然没有分组失序问题,但由呼叫建立、数据传输和虚电路释放三个过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/283617.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot-软件授权License

无意中看到了一个简单方便的授权方式,只需几步就可集成到boot项目中。 先上地址:smart-license: 保护个人与企业的软件作品权益,降低盗版造成的损失。PS:因个人精力有限,不再提供该项目的咨询答疑服务。 Smart-licen…

【小米汽车SU7实测】 小米汽车su7到底行不行?小米新能源轿车体验感怎么样?

小米汽车SU7是小米汽车的首款车型,定位“C级高性能生态科技轿车”,也是小米迈入新能源赛道的首次成果落地。 首先,让我们来谈谈它的性能。试驾过程中,小米SU7展现出了惊人的加速能力,0-100km/h加速仅需2.78秒&#xf…

pytest全局配置+前后只固件配置

pytest全局配置前后只固件配置 通过读取pytest.ini配置文件运行通过读取pytest.ini配置文件运行无条件跳过pytest.initest_mashang.pyrun.py 有条件跳过test_mashang.py pytest框架实现的一些前后置(固件、夹具)处理方法一(封装)方…

Kafka总结问题

Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题,在 kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。topic 相当于消息的分配标签,是一个逻辑概念。主题好比是数据库的表&#xff0…

C++进阶之路---C++11相关特性 | 左值引用 | 右值引用 | 完美转发

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之…

全球大型语言模型(LLMS)现状与比较

我用上个博文的工具将一篇ppt转换成了图片,现分享给各位看官。 第一部分:国外大语言模型介绍 1,openai的Chatgpt 免费使用方法1:choose-carhttps://share.freegpts.org/list 免费使用方法2:Shared Chathttps://share…

【Java】Map和Set

文章目录 一、Map和Set的概念二、模型三、Map的说明3.1 Map.Entry<K, V>的说明3.2 Map 的常用方法 四、Set的说明4.1 Set的常用方法 一、Map和Set的概念 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关&#xff0c…

redis和rabbitmq实现延时队列

redis和rabbitmq实现延时队列 延迟队列使用场景Redis中zset实现延时队列Rabbitmq实现延迟队列 延迟队列使用场景 1. 订单超时处理 延迟队列可以用于处理订单超时问题。当用户下单后&#xff0c;将订单信息放入延迟队列&#xff0c;并设置一定的超时时间。如果在超时时间内用户…

Ollama 运行 Cohere 的 command-r 模型

Ollama 运行 Cohere 的 command-r 模型 0. 引言1. 安装 MSYS22. 安装 Golang3. Build Ollama4. 运行 command-r 0. 引言 Command-R Command-R 是一种大型语言模型&#xff0c;针对对话交互和长上下文任务进行了优化。它针对的是“可扩展”类别的模型&#xff0c;这些模型在高…

CTF题型 Http请求走私总结Burp靶场例题

CTF题型 Http请求走私总结&靶场例题 文章目录 CTF题型 Http请求走私总结&靶场例题HTTP请求走私HTTP请求走私漏洞原理分析为什么用前端服务器漏洞原理界定标准界定长度 重要!!!实验环境前提POST数据包结构必要结构快速判断Http请求走私类型时间延迟CL-TETE-CL 练习例题C…

代码随想录阅读笔记-栈与队列【用栈实现队列】

题目 使用栈实现队列的下列操作&#xff1a; push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue new MyQueue(); queue.push(1); queue.push(2); queue.peek(); …

GPT实战系列-智谱GLM-4的模型调用

GPT实战系列-智谱GLM-4的模型调用 GPT专栏文章&#xff1a; GPT实战系列-实战Qwen通义千问在Cuda 1224G部署方案_通义千问 ptuning-CSDN博客 GPT实战系列-ChatGLM3本地部署CUDA111080Ti显卡24G实战方案 GPT实战系列-Baichuan2本地化部署实战方案 GPT实战系列-让CodeGeeX2帮…

docker仓库登录及配置insecure-registries的方法

docker仓库登录及配置insecure-registries的方法 这篇文章主要介绍了docker仓库登录配置insecure-registries的方法,docker客户端如果配置中添加了insecure-registary配置&#xff0c;就不需要在docker 客户端配置上对应证书&#xff0c;如果不配置要在/etc/docker/certs.d/目…

vue3与Electron构建跨平台应用(webpack)

一、创建vue3项目 vue create vue3_webpack_electron 二、安装Electron npm install --save-dev electron Electron 三、vue add electron-builder vue add electron-builder

优维全面可观测产品能力分解⑥:运维状态可观测

本文是《优维全面可观测产品能力分解》系列文章的第六篇&#xff1a;『运维状态可观测』。基于可观测的数据体系&#xff0c;「运维状态可观测」是实现于运维状态的一次深入可观测。 在日常运维场景中&#xff0c;系统/应用运维人员重点关注的是系统/应用是否可用&#xff0c;…

视频素材库哪个好?这8个短视频相关的优质素材网推荐看看

在这个数字化时代&#xff0c;视频内容的创作变得前所未有地重要。无论是短视频的快速制作&#xff0c;还是专业影片的精心编辑&#xff0c;找到合适的素材资源是每个视频创作者的基本需求。从高清视频片段、无水印的图片&#xff0c;到富有情感的音效&#xff0c;以下精选的网…

LeetCode---126双周赛

题目列表 3079. 求出加密整数的和 3080. 执行操作标记数组中的元素 3081. 替换字符串中的问号使分数最小 3082. 求出所有子序列的能量和 一、求出加密整数的和 按照题目要求&#xff0c;直接模拟即可&#xff0c;代码如下 class Solution { public:int sumOfEncryptedInt…

《剑指 Offer》专项突破版 - 面试题 88 : 动态规划的基础知识(C++ 实现)

目录 前言 面试题 88 : 爬楼梯的最少成本 一、分析确定状态转移方程 二、递归代码 三、使用缓存的递归代码 四、空间复杂度为 O(n) 的迭代代码 五、空间复杂度为 O(1) 的迭代代码 前言 动态规划是目前算法面试中的热门话题&#xff0c;应聘者经常在各大公司的面试中遇到…

JAVA——volatile,wait,notife

文章目录 volatile关键字简识jvm内存模型内存上的优化问题的产生volatile的作用 wait&#xff08;&#xff09;wait()的作用 notify&#xff08;&#xff09;notify的唤醒顺序 volatile关键字 volatile关键字可以保证内存的可见性&#xff0c;什么是内存的可见性呢&#xff1f…

Jenkins中支持maven构建遇到仓库报错问题

目的 Jenkins中支持maven构建(Jenkins使用docker安装&#xff09; 问题 1.构建一个maven项目 2.执行报错 /var/lib/jenkins/local_maven_repo/com/sx/root/1.0.4/root-1.0.4.pom.part.lock (No such file or directory) Failed to transfer Could not transfer artifact co…