计算机网络——三种交换技术

目录

电路交换——用于电话网络

电路交换的优点:

电路交换的缺点:

报文交换——用于电报网络

报文交换的优点:

报文交换的缺点:

分组交换——用于现代计算机网络

分组交换的优点:

分组交换的缺点


电路交换——用于电话网络

一个电话交换机可能会连接很多部电话,有可能会连接其他的电话交换机

电路交换(Circuit Switching):通过物理线路的连接,动态地分配传输线路资源

电路交换的优点:

通信前从主叫端到被叫端建立一条专用的物理通路,在通信的全部事件内,两个用户始终占用端到端的线路资源。数据直达,传输速率高

电路交换的缺点:

建立/释放连接,需要额外的时间开销

线路被通信双方独占利用率低

线路分配的灵活性差

交换节点不支持“差错控制”(无法发现传输过程中的发生的数据错误)

假设小红要给小美发送一些数据,这串数据是0100,那么在数据传输的过程中,可能会因为一些电磁干扰而导致这串数据在传输过程中发生了错误,从0100变成了0101,这串数据经过的线路越多越容易出现这种错误,如果这些数据每经过一段链路,这个交换结点都会检查一下数据有没有错,如果有错,修正数据,这个过程就是差错控制,但可惜的是电路交换这种技术并不支持交错控制

电路交换更适用于:低频次,大量地传输数据

但不巧的是,计算机之间数据往往是“突发式”传输,即往往是高频次,少量地传输数据

报文交换——用于电报网络

转储转发的思想,把传送的数据单元先存储进中间节点,再根据目的地址转发至下一节点

相比于电路交换技术,他们在发送数据前是否需要和接收方建立连接呢?

不需要。直接把报文丢到网络上,让这些中间节点帮我逐层转发就可以了

只要确保报名都包含必要控制信息就可以了,要说明从哪发,要发到哪

还有用户数据,每个报文可以携带的信息各不相同,如果小帅只是和小美进行文字聊天,那么小帅给小美发的报文只需要包含少量的文字,如果小丑要给小扁发一个好看的电影,那么他的报文就需要携带更多的用户数据

报文交换的优点:

通信前无需建立连接

数据以报文为单位被交换节点间存储转发,通信线路可以灵活分配

在通信时间内,两个用户无需独占一整条物理线路。相比于电路交换,线路利用率高

交换节点支持“交错控制”(通过校验技术)

报文交换的缺点:

报文不定长,不方便存储转发管理

长报文的存储转发时间开销大,缓存开销大

长报文容易出错,重传代价高

分组交换——用于现代计算机网络

假设小帅要给小美发送一个数据,在数据传输前要拆分为多个分组,每个分组都包含首部的信息,通过H!这台电脑可以把多个分组发送到下一个中间节点,所有的这些分组最终都会发送到H5这台计算机上,分组0和分组1走上面一条路,当分组2要被转发出去时,中间节点发现上面一条路线已经足够拥堵了,就可以发到更空闲的路线上,由于下面一条路线比较通常,分组2遥遥领先,一路来到了H5这台计算机上,也就是H5先接收到了分组2,最后收到这些分组的顺序是201,通过分组首部的分组号,H5这台电脑可以对分组进行重新排序成012的顺序,再将不必要的首部信息拆分出去最后合并成用户数据

在现代生活中,路由器就是一种典型的分组交换机

分组交换的优点:

继承了报文交换的所有优点

相比于报文交换,分组交换改进了如下问题

分组定长,方便存储转发管理

分组的存储转发时间开销小,暖存开销小

分组不易出错,重传代价低

分组交换的缺点

相比报文交换,控制信息占比增加了

相比电路交换,依然存在存储转发时延

报文被拆分为多个分组,传输过程中可能会出现失序,丢失等问题,增加处理的复杂度

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

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

相关文章

【Go语言快速上手】第一部分:Go 语言基础

文章目录 引言Go 语言的历史Go 语言的特点与优势学习 Go 语言的意义 1. Go 语言基础1.1 环境搭建下载和安装 Go 语言 SDK配置环境变量 (GOROOT, GOPATH)选择合适的 IDE 或编辑器 1.2 Go 语言基本语法变量声明与赋值变量作用域和生命周期 1.3 数据类型基本类型复合类型控制流if …

PostgreSQL函数自动Commit/Rollback所带来的问题

一、综述 今天在PostgreSQL遇到一个奇怪的现象,简而言之,是想用函数(存储过程)实现插入记录,整个过程没报错但事后却没找到记录!忙活半天,才发现原因是PostgreSQL函数(存储过程&…

linux 进程补充

环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪 里,但是照样可以链接成功&#…

Spring Boot常用注解深度解析:从入门到精通

今天,这篇文章带你将深入理解Spring Boot中30常用注解,通过代码示例和关系图,帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解: SpringBootApplication Confi…

前部分知识复习05

一、多级渐远贴图MipMap 选择贴图,可以勾选贴图的多级渐远效果 [IntRange]_MipMap("MipMap",Range(0,12))0 //多级渐远贴图的LOD调节滑杆 _MipMapTexture("MipMapTexture",2D)"white"{} //定义多级渐远贴图 多级渐远贴图的采样…

解锁反序列化漏洞:从原理到防护的安全指南

目录 前言 一、什么是反序列化 二、反序列化漏洞原理 三、反序列化漏洞的危害 (一)任意代码执行 (二)权限提升 (三)数据泄露与篡改 四、常见的反序列化漏洞场景 (一)PHP 反…

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯数组大小的常量要求💯C 语言中的数组大小要求💯C 中的数组大小要求💯为什么 C 中 const 变量可以作为数组大小💯进一步的…

MAC OS安装Homebrew

文章目录 1.下载Homebrew2.完成安装3.验证安装4.更新 Homebrew作为一个包管理器,提供了一种简便的方式来安装、更新和卸载各种命令行工具和应用程序。相比于手动下载和编译源代码,或者从不同的网站下载安装包,使用Homebrew可以显著减少这些操…

深入解析:如何利用 Python 爬虫获取商品 SKU 详细信息

在电商领域,SKU(Stock Keeping Unit,库存单位)详细信息是电商运营的核心数据之一。它不仅包含了商品的规格、价格、库存等关键信息,还直接影响到库存管理、价格策略和市场分析等多个方面。本文将详细介绍如何利用 Pyth…

OKHttp拦截器解析

OKHttp涉及到拦截器大概的执行步骤为: 1.通过newCall生成RealCall对象 具体代码如下: Override public Call newCall(Request request) {return new RealCall(this, request, false /* for web socket */);}2.调用Call的execute方法 当然这也可以是执…

深度学习系列--04.梯度下降以及其他优化器

目录 一.梯度概念 1.一元函数 2.二元函数 3.几何意义上的区别 二.梯度下降 1.原理 2.步骤 3.示例代码(Python) 4.不同类型的梯度下降 5.优缺点 三.动量优化器(Momentum) 适用场景 1.复杂地形的优化问题 2.数据具有噪声的问…

编程AI深度实战:给vim装上AI

系列文章: 编程AI深度实战:私有模型deep seek r1,必会ollama-CSDN博客 编程AI深度实战:自己的AI,必会LangChain-CSDN博客 编程AI深度实战:给vim装上AI-CSDN博客 编程AI深度实战:火的编程AI&…

深入解析 JPA 的 EntityManager#refresh 方法

在 Java 持久化领域,JPA(Java Persistence API)是一个非常重要的技术,它为开发者提供了一种便捷的方式来操作数据库。今天,我们来深入探讨一下 JPA 中 EntityManager#refresh 方法的使用和原理。 一、refresh 方法的作…

2025年2月6日(anaconda cuda 学习 基本命令)

查看电脑的显卡型号是否支持CUDA的安装 https://developer.nvidia.com/zh-cn/cuda-gpus 查看可以安装的CUDA版本 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html CUDA安装地址 https://developer.nvidia.com/cuda-toolkit-archive Anaconda下载地址 htt…

自动化构建——make/makefile

目录 背景使用推导过程如果多个文件呢?? 背景 会不会写makefile,从侧面可以说明一个人是否具有完成大型工程的能力makefile带来的好处就是——”自动化编译“,一旦写好,只需要一个make命令,整个工程完全自…

深度整理总结MySQL——SQL的执行顺序和流程

SQL的执行顺序和流程 SQL的执行顺序执行一条select语句,发生了什么呢连接器查询缓存解析SQL执行SQL预处理器优化器执行器 总结 SQL的执行顺序 这是一条标准的查询语句: 但实际上并不是从上到下去解析的,真实的执行顺序是: 我们先执行from,join来确定表之间的连接关系&#x…

R语言 | 使用 ComplexHeatmap 绘制热图,分区并给对角线分区加黑边框

目的:画热图,分区,给对角线分区添加黑色边框 建议直接看0和4。 0. 准备数据 # 安装并加载必要的包 #install.packages("ComplexHeatmap") # 如果尚未安装 library(ComplexHeatmap)# 使用 iris 数据集 #data(iris)# 选择数值列&a…

11 享元(Flyweight)模式

享元模式 1.1 分类 (对象)结构型 1.2 提出问题 做一个车管所系统,将会产生大量的车辆实体,如果每一个实例都保存自己的所有信息,将会需要大量内存,甚至导致程序崩溃。 1.3 解决方案 运用共享技术有效…

脚本批量重启openstack虚拟机并加上启动编号、脚本批量验证openstack虚拟机状态并加上编号

文章目录 说明脚本批量重启openstack虚拟机并加上启动编号脚本准备uuid文件准备测试脚本批量验证openstack虚拟机虚拟机状态为并加上编号脚本准备uuid文件准备测试说明 用uuid批量重启openstack虚拟机并带上编号,执行效果分别如下# 重启 [root@controller01 ccx]# sh start_fo…

Jetpack ViewModel

private val deviceViewModel: IDeviceViewModel by viewModels<DeviceViewModel>() 这句代码是 Jetpack ViewModel 在 Fragment 或 Activity 中的标准用法&#xff0c;它的作用是 创建并获取 ViewModel 实例&#xff0c;同时确保 ViewModel 的生命周期与 UI 组件保持一…