计算机网络:数据交换方式
计算机网络:数据交换方式
- 电路交换
- 分组交换
- 报文交换
- 传输对比
本博客介绍计算机之间数据交换的三种方式,分别是电路交换、分组交换以及报文交换。
电路交换
我们首先来看电路交换,在电话问世后不久,人们就发现要让所有的电话机都两两相连接是不现实的。例如两部电话只需要用一对电线就能够互相连接起来,但若有 5 部电话要两两相连,则需要 10 对电线。
当电话机的数量很大时,这种连接方法需要的电线数量就太大了。例如,如果有 n 部电话机需要两两相连,那么一共需要多少对电线呢?答案是(n - 1) * n / 2。
于是人们认识到要使得每一部电话能够很方便地和另一部电话进行通信,就应当使用一个中间设备将这些电话连接起来。这个中间设备就是电话交换机,每一部电话都连接到电话交换机上:
可以把电话交换机简单的看成是一个有多个开关的开关器,可以将需要通信的任意两部电话的电话线路按需接通,从而大大减少了连接的电话线数量。
当电话机的数量增多时,就需要使用很多彼此连接起来的电话交换机来完成全网的交换任务。用这样的方法就构成了覆盖全世界的电信网,电话交换机接通电话线的方式称为电路交换。
从通信资源的分配角度来看,交换就是按照某种方式动态的分配传输线路的资源。我们来看下面这个电路交换的示意图:
应当注意的是用户线归电话用户专用,而电话交换机之间拥有的大量中继线则是许多用户共享的。
电路交换有以下三个步骤:
-
建立连接,也就是分配通信资源。例如在使用电路交换打电话之前,必须先拨号请求建立连接。当被叫用户听到电话交换机送来的拨号音并接通,从主叫端到被叫端就建立了一条连接,也就是一条专用的物理通路,这条连接保证了双方通话时所需的通信资源,而这些资源在双方通信时不会被其他用户占用。
-
通话,也就是主叫和被叫双方互相通电话。在整个通话期间,之前建立连接所分配的通信资源始终被占用。
-
释放连接,也就是通话完毕挂机后,电话交换机释放刚才使用的这条专用的物理通路。换句话说是把刚才占用的所有通信资源归还给电信网,
这种必须通过建立连接(占用通信资源),通话(一直占用通信资源),释放连接(归还通信资源)三个步骤的交换方式,称为电路交换
那么如果使用电路交换来传送计算机数据是否可行?
应该说,尽管采用电路交换可以实现计算机之间的数据传送,但是线路的传输效率往往很低,这是因为计算机数据是突发式的出现在传输线路上的。
突发性:
计算机在传输数据时,不会一直在信道中传输数据,而是间歇性的传输数据
计算机数据具有突发性,这导致使用电路交换传送数据时通信线路的利用率很低,真正用来传送数据的时间往往不到10%,甚至不到 1%。已被用户占用的通信线路资源在绝大部分时间里都是空闲的。
试想一下,这种情况,当用户正在输入和编辑一份带传输的文件时,用户所占用的通信资源暂时未被利用,该通信资源也不能被其他用户利用,宝贵的通信线路资源白白被浪费了。因此,计算机网络通常采用分组交换而不是电路交换。
分组交换
假设这是因特网的一部分,在因特网中最重要的分组交换机就是路由器,他负责将各种网络互联起来,并对接收到的分组进行转发,也就是进行分组交换。
我们来看这样一个例子,假设主机 H6 的用户要给主机 H2 的用户发送一条消息,通常我们把表示该消息的整块数据称为一个报文。
在发送报文之前,先把较长的报文划分成为一个更小的等长数据段,在每一个数据段前面加上一些由必要的控制信息组成的手部后,就构成了一个分组,也可简称为包,相应的手部也可称为包头。
那么添加手部的作用是什么?这不是额外加大了带传输的数据量吗?
实际上手部起着非常关键的作用,相信大家至少能想到手部中肯定包含了分组的目的地址,否则分组传输路径中的各分组交换机,也就是各路由器就不知道如何转发分组了。分组交换机收到一个分组后,先将分组暂时存储下来,再检查其手部,按照手部中的目的地址进行查表转发,找到合适的转发接口,通过该接口将分组转发给下一个分组。
主机 H6 将所构造出的各分组依次发送出去,各分组经过途中各分组交换机的存储、转发,最终到达主机H2。
主机 H2 收到这些分组后,去掉他们的手部,将各数据段组合还原出原始报文:
需要说明的是,为了初学者容易理解,在本例中我们只演示出了分组传输过程中的两种情况。一种是各分组从源站到达目的站可以走不同的路径,也就是不同的路由。另一种是分组乱序,也就是分组到达目的站的顺序不一定与分组在源站的发送顺序相同。对于可能出现的分组丢失、误码重复等问题并没有演示,这些内容将在以后详细介绍。
在上述的分组交换过程中,发送方所要完成的任务是构造分组和发送分组。
路由器,也就是分组交换机,所要完成的任务是缓存分组和转发分组,简称为存储转发。
接收方所要完成的任务是接收分组和还原报文。
报文交换
与分组交换类似,报文交换中的交换节点也采用存储转发方式,但报文交换对报文的大小没有限制,这就要求交换节点需要有较大的缓存空间。需要注意的是,报文交换主要用于早期的电报通信网,现在较少使用,通常被较先进的分组交换方式所取代。因此我们不再详细介绍报文交换了。
传输对比
接下来我们对电路交换、报文交换、分组交换这三种交换方式进行一下对比。
假设a、b、c、 d 是分组传输路径上所要经过的四个节点,纵坐标为时间。
电路交换:
对于电路交换通信之前首先要建立连接。连接建立好之后就可以使用已建立好的连接进行数据传送。数据传送结束后需要释放连接以归还之前建立连接所占用的通信线路资源。
报文交换:
对于报文交换,可以随时发送报文,而不需要事先建立连接,整个报文先传送到相邻节点,交换机全部存储下来后进行查表转发到下一个节点交换机。
分组交换:
对于分组交换,可以随时发送分组,而不需要事先建立连接。构成原始报文的一个分组,依次在各节点交换机上存储、转发。各节点交换机在发送分组的同时还缓存接收到的分组。
-
电路交换:一旦建立连接,中间的各节点交换机就是直通形式的比特流,可以直达终点。
-
报文交换:整个报文需要在各节点交换机上进行存储转发,由于不限制报文的大小,因此需要各节点交换机都具有较大的缓存空间。
-
分组交换:构成原始报文的一个个分组,在各节点交换机上进行存储转发。相比报文交换减少了转发时延,还可以避免过长的报文,长时间占用链路,同时也有利于进行差错控制。
最后我们总结一下这三种交换方式各自的优缺点:
电路交换:
优点 | 缺点 |
---|---|
通信时延小 | 建立连接时间长 |
有序传输 | 独占线路,使用率低 |
没有冲突 | 灵活性差 |
适用范围广 | 难以规格化 |
实时性强 | |
控制简单 |
电路交换的优点:
- 通信时延小:这是因为通信线路为通信双方用户专用数据直达,因此通信时延非常小。当连续传输大量数据时,这一优点非常明显。
- 有序传输:这是因为通信双方之间只有一条专用的通信线路,数据只在这一条线路上传输,因此不存在失序问题。
- 没有冲突:不同的通信双方拥有不同的信道,不会出现征用物理信道的问题。
- 适用范围广:电路交换既适用于传输模拟信号,也适用于传输数字信号。
- 实时性强:这主要得益于其通信时延小的优点。
- 控制简单:电路交换的节点。交换机及其控制都比较简单。
电路交换的缺点:
- 建立连接时间长:电路交换的平均连接建立时间对计算机通信来说太长了,
- 线路独占使用效率低:电路交换一旦建立连接物理通路就被通信双方独占,即使通信线路空闲,也不能供其他用户使用,因而信道利用率很低。
- 灵活性差:只要连接所建立的物理通路中的任何一点出现了故障,就必须重新拨号,建立新的连接,这对十分紧急和重要的通信是很不利的。
- 难以规格化:电路交换时,数据直达不同类型、不同规格、不同速率的终端,很难相互进行通信,也难以在通信过程中进行差错控制。
报文交换:
优点 | 缺点 |
---|---|
无需建立连接 | 引起了转发时延 |
动态分配链路 | 需要较大存储缓存空间 |
提高线路可靠性 | 需要传输额外信息量 |
提高线路利用率 | |
提供多目标服务 |
报文交换的优点:
- 无需建立连接:报文交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送报文。
- 动态分配线路:当发送方把报文传送给节点交换机时,节点交换机先存储整个报文,然后选择一条合适的空闲线路将报文发送出去。
- 提高线路可靠性:如果某条传输路径发生故障,会重新选择另一条路径传输数据,因此提高了传输的可靠性。
- 提高线路利用率:通信双方不是固定占用一条通信线路,而是在不同的时间分段部分占用物理线路,因而大大提高了通信线路的利用率。
- 提供多目标服务:一个报文可以同时发送给多个目的地址,这在电路交换中是很难实现的。
报文交换的缺点:
- 引起了转发时延:这是因为报文在节点交换机上要经历存储、转发的过程。
- 需要较大的存储缓存空间:这是因为报文交换对报文的大小没有限制。
- 需要传输额外的信息量:这是因为报文需要携带目标地址、原地址等信息。
分组交换:
优点 | 缺点 |
---|---|
无需建立连接 | 引起了转发时延 |
提高线路利用率 | 需要较大存储缓存空间 |
简化了存储管理 | 对于数据报服务,存在失序,丢失或重复分组的问题 |
加速传输 | 对于虚电路服务,存在呼叫建立,数据传输和虚电路释放三个过程 |
减少出错概率和重发数据量 |
分组交换的优点如下,
- 无需建立连接:分组交换不需要为通信双方预先建立一条专用的通信线路,不存在建立连接的时延,用户可以随时发送分组
- 线路利用率高:通信双方不是固定占用一条通信线路,而是在不同的时间分段部分占用物理线路,因而大大提高了通信线路的利用率。
- 简化了存储管理:这是相对于报文交换而言的,因为分组的长度固定,相应的缓冲区的大小也固定,管理起来相对容易。
- 加速传输:由于分组是逐个传输的,这就使得后一个分组的存储操作与前一个分组的转发操作可以同时进行。
- 减少出错概率和重发数据量:因为分组比报文小,因此出错概率必然减小。即便分组出错,也只需重传出错的部分,这比重传整个报文的数据量小很多,这样不仅提高了可靠性,也减少了传输时延。
分组交换的缺点如下,
- 引起了转发时延:这是因为分组在节点交换机上要经历存储、转发的过程。
- 需要传输额外的信息量:将原始报文分割成等长的数据块,每个数据块都要加上原地址、目的地址等控制信息,从而构成分组,因此使得传送的信息量增大了。
- 采用数据报服务进行分组交换:可能会出现失序、丢失或重复分组**:分组到达目的节点时,需要重新还原成原始报文比较麻烦。
- 采用虚电路服务进行分组交换:虽然没有分组失序问题,但由呼叫建立、数据传输和虚电路释放三个过程。
相关文章:
计算机网络:数据交换方式
计算机网络:数据交换方式 电路交换分组交换报文交换传输对比 本博客介绍计算机之间数据交换的三种方式,分别是电路交换、分组交换以及报文交换。 电路交换 我们首先来看电路交换,在电话问世后不久,人们就发现要让所有的电话机都…...
万用表革新升级,WT588F02BP-14S语音芯片助力智能测量新体验v
万能表功能: 万能表是一款集多功能于一体的电子测量工具,能够精准测量电压、电流、电阻等参数,广泛应用于电气、电子、通信等领域。其操作简便、测量准确,是工程师们进行电路调试、故障排查的得力助手,为提升工作效率…...
Day61:WEB攻防-PHP反序列化原生类TIPSCVE绕过漏洞属性类型特征
知识点: 1、PHP-反序列化-属性类型&显示特征 2、PHP-反序列化-CVE绕过&字符串逃逸 3、PHP-反序列化-原生类生成&利用&配合 补充:如果在 PHP 类中没有实现某个魔术方法,那么该魔术方法在相应的情况下不会被自动触发。PHP 的魔…...
【开源】SpringBoot框架开发不良邮件过滤系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统用户模块2.2 收件箱模块2.3 发件箱模块2.4 垃圾箱模块2.5 回收站模块2.6 邮箱过滤设置模块 三、实体类设计3.1 系统用户3.2 邮件3.3 其他实体 四、系统展示五、核心代码5.1 查询收件箱档案5.2 查询回收站档案5.3 新…...
详细教---用Django封装写好的模型
本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。 第一步:代码准备 热搜词条搜集代码: import requests from lxml import etreeurl "https://tophub.today/n/KqndgxeLl9" headers{User-Agent: Mozilla/5.…...
设计模式 抽象工厂
01.人类接口 public interface Human { //首先定义什么是人类//人是愉快的,会笑的,本来是想用smile表示,想了一下laugh更合适,好长时间没有大笑了; public void laugh(); //人类还会哭,代表痛苦 public v…...
OPTIONS请求(跨域预检查)
目录 一、什么是OPTIONS请求?二、简单请求、复杂请求三、特定的请求头、响应头 一、什么是OPTIONS请求? OPTIONS 请求方式是 HTTP 协议中的一种,主要用于 从响应头中获取服务器支持的HTTP请求方式。 OPTIONS 请求方式是 浏览级行为…...
游戏反云手机检测方案
游戏风险环境,是指独立于原有设备或破坏设备原有系统的环境。常见的游戏风险环境有:云手机、虚拟机、虚拟框架、iOS越狱、安卓设备root等。 这类风险环境可以为游戏外挂、破解提供所需的高级别设备权限,当游戏处于这些风险环境下,…...
HarmonyOS NEXT应用开发之动态路由
介绍 本示例将介绍如何使用动态路由跳转到模块中的页面,以及如何使用动态import的方式加载模块 使用说明 通过动态import的方式,在需要进入页面时加载对应的模块。配置动态路由,通过WrapBuilder接口,动态创建页面并跳转。动态i…...
wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载带光照信息的材质文件Mtl 实现光照贴图的最简实例(十七)
文章目录 前言一、3d 立方体 model 属性相关文件1. cube1.obj2. cube1.Mtl3. 纹理图片 cordeBouee4.jpg二、实现光照贴图的效果1. 依赖库和头文件1.1 assimp1.2 stb_image.h2. egl_wayland_obj_cube1.cpp3. Matrix.h 和 Matrix.cpp4. xdg-shell-client-protocol.h 和 xdg-shell…...
【NLP笔记】Transformer
文章目录 基本架构EmbeddingEncoderself-attentionMulti-Attention残差连接LayerNorm DecoderMask&Cross Attention线性层&softmax损失函数 论文链接: Attention Is All You Need 参考文章: 【NLP】《Attention Is All You Need》的阅读笔记 一…...
【Unity】程序创建Mesh(二)MeshRenderer、光照、Probes探针、UV信息、法线信息
文章目录 接上文MeshRenderer(网格渲染器)Materials(材质)Material和Mesh对应Lighting光照Lightmapping材质中的光照 光源类型阴影全局光照Probes(探针)Ray Tracing(光线追踪)Additi…...
每日一练:LeeCode-167. 两数之和 II - 输入有序数组【双指针】
给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 < index1 < index2 < numbers.…...
性能优化(CPU优化技术)-NEON指令详解
原文来自ARM SIMD 指令集:NEON 简介 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀…...
服务器硬件基础知识和云服务器的选购技巧
概述 服务器硬件基础知识涵盖了构成服务器的关键硬件组件和技术,这些组件和技术对于服务器的性能、稳定性和可用性起着至关重要的作用。其中包括中央处理器(CPU)作为服务器的计算引擎,内存(RAM)用于数据临…...
深度学习PyTorch 之 transformer-中文多分类
transformer的原理部分在前面基本已经介绍完了,接下来就是代码部分,因为transformer可以做的任务有很多,文本的分类、时序预测、NER、文本生成、翻译等,其相关代码也会有些不同,所以会分别进行介绍 但是对于不同的任务…...
STC 51单片机烧录程序遇到一直检测单片机的问题
准备工作 一,需要一个USB-TTL的下载器 ,并安装好对应的驱动程序 二、对应的下载软件,stc软件需要官方的软件(最好是最新的,个人遇到旧的下载软件出现问题) 几种出现一直检测的原因 下载软件图标…...
后端系统开发之——接口参数校验
今天难得双更,大家点个关注捧个场 原文地址:后端系统开发之——接口参数校验 - Pleasure的博客 下面是正文内容: 前言 在上一篇文章中提到了接口的开发,虽然是完成了,但还是缺少一些细节——传入参数的校验。 即用户…...
IDEA 配置阿里规范检测
IDEA中安装插件 配置代码风格检查规范 使用代码风格检测 在代码类中,右键 然后会给出一些不符合规范的修改建议: 保存代码时自动格式化代码 安装插件: 配置插件:...
数据仓库系列总结
一、数据仓库架构 1、数据仓库的概念 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 数据仓库通常包含多个来源的数据,这些数据按照主题进行组织和存储&#x…...
gitlab runner没有内网的访问权限应该怎么解决
如果你的GitLab Runner没有内网访问权限,但你需要访问内部资源(如私有仓库或其他服务),你可以考虑以下几种方法: VPN 或 SSH 隧道: 在允许的情况下,通过VPN或SSH隧道连接到内部网络。这将允许Gi…...
el-tree 设置默认展开指定层级
el-tree默认关闭所有选项,但是有添加或者编辑删除的情况下,需要刷新接口,此时会又要关闭所有选项; 需求:在编辑时、添加、删除 需要将该内容默认展开 <el-tree :default-expanded-keys"expandedkeys":da…...
python便民超市管理系统flask-django-nodejs-php
随着人们生活节奏的加快,以前传统的购物方式发生了巨大的改变,以前一个超市要想经营好自己的门店,每天都要忙着记账出账,尤其是出库入库统计,如果忙中出乱,可能导致今天所有的营业流水,要重新换…...
HarmonyOS — BusinessError 不能被 JSON.stringify转换
在鸿蒙中BusinessError 继承于Error,而在JavaScript(以及TypeScript,因为它是JavaScript的超集)中,Error 对象包含一些不能被 JSON.stringify 直接序列化的属性。JSON.stringify 方法会将一个JavaScript对象或者值转换…...
JupyterNotebook 如何切换使用的虚拟环境kernel
在Jupyter Notebook中,如果需要修改使用的虚拟环境Kernel: 首先,需要确保虚拟环境已经安装conda上【conda基本操作】 打开Jupyter Notebook。 在Jupyter Notebook的顶部菜单中,选择 “New” 在弹出的窗口中,列出了…...
预防GPT-3和其他复杂语言模型中的“幻觉”
标题:预防GPT-3和其他复杂语言模型中的“幻觉” 正文: “假新闻”的一个显著特征是它经常在事实正确信息的环境中呈现虚假信息,通过一种文学渗透的方式,使不真实的数据获得感知权威,这是半真半假力量令人担忧的展示。…...
从源码解析AQS
前置概念 要彻底了解AQS的底层实现就必须要了解一下线程相关的知识。 包括voliatevoliate 我们使用翻译软件翻译一下volatile,会发现它有以下几个意思:易变的;无定性的;无常性的;可能急剧波动的;不稳定的;易恶化的;易挥发的;易发散的。这也正式使用vola…...
基于Spring Boot的云上水果超市的设计与实现
摘 要 伴随着我国社会的发展,人民生活质量日益提高。于是对云上水果超市进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套云上水果超市,帮助商家进行…...
游戏引擎中的动画基础
一、动画技术简介 视觉残留理论 - 影像在我们的视网膜上残留1/24s。 游戏中动画面临的挑战: 交互:游戏中的玩家动画需要和场景中的物体进行交互。实时:最慢需要在1/30秒内算完所有的场景渲染和动画数据。(可以用动画压缩解决&am…...
springboot3快速入门案例2024最新版
前边 springboot3 系统要求 技术&工具版本(or later)maven3.6.3 or later 3.6.3 或更高版本Tomcat10.0Servlet9.0JDK17 SpringBoot的主要目标是: 为所有 Spring 开发提供更快速、可广泛访问的入门体验。开箱即用,设置合理的…...
网站建设合同下载/竞价推广的基本流程
Lonza Clonetics & Poietics始于1984年,有着30多年的历史,现在可以提供上百种不同类型组织细胞,并且为每一种类型的细胞都优化了最佳的培养基系统以支持细胞在低血清或无血清环境中维持正常的细胞功能。 细胞系 VS 原代细胞 原代细胞培养…...
滨州正规网站建设公司/域名注册平台有哪些
pgBadger日志分析器,由Darold创建。pgBadger是一种快速、简便的工具,用于分析SQL通信量,并使用动态图来创建 HTML5报告。 适用系统:linux操作系统 ##下载和安装 https://github.com/darold/pgbadger/releases wget https://github.com/darold/pgbadger/…...
网站建设 网址导航/阿里云com域名注册
这个需求不常见,但是通常在svn管理的项目中,如果需要对比两个文件不为文本文件时,svn则无法提供比对。 这两个文件可能为二进制,可能为自定义加密的内容,也可能是unity对序列化后的.prefab或.unity二进制文件。 我们…...
北京海淀区算富人区吗/东莞整站优化推广公司找火速
如何制作出页面的卷角效果呢?我觉得主要要分三部分来共同完成:页面本体、卷角本体、卷角阴影。下面我们就一部分一部分的完成好了。一、页面本体页面本体的难点主要在通过「编辑顶点」功能调节卷角处的弧度,分四步完成:1、绘制一个…...
门户网站开发设计报告/杭州搜索引擎排名
Python之路,Day4 - Python基础4 (new版)本节内容迭代器&生成器装饰器Json & pickle 数据序列化软件目录结构规范作业:ATM项目开发1.列表生成式,迭代器&生成器列表生成式孩子,我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9…...
江苏省建设工程质量监督站网站/关键词查找工具
最近在学习vs 05 发现增加了不少的新东西 .首当其冲是 .ashx文件..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式ÿ…...