热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机网络:数据交换的三种方式及其比较

文章目录数据交换电路交换(circuitswitching)报文交换(messageswitching)分组交换(packageswitching)分组交换与报文交换分组交换与电路

文章目录

      • 数据交换
        • 电路交换(circuit switching)
        • 报文交换(message switching)
        • 分组交换(package switching)
      • 分组交换与报文交换
      • 分组交换与电路交换

数据交换

网络核心主要解决的问题是如何将数据从源主机通过网络核心送达目标主机,
现代计算机网络采用的主要技术是数据交换,
随着网络规模的扩大,计算机间不可能直接相连(O(N2)),
因此引入专用于数据转发的交换设备,
各主机与交换设备相连,且交换设备互连形成交换网络
源主机发送的数据先传递给交换设备,通过交换网络转发至目的地

交换

  • 动态转接
    交换设备的交换指动态转接,指交换设备可将端口按需要在物理上或逻辑上动态地连接
  • 动态分配传输资源
    计算机网络中的交换注重于如何在传输中动态地分配传输资源

电路交换(circuit switching)

最典型的电路交换网络:电话网络
电路交换分为三个阶段

  • 建立连接(电路建立)
  • 数据传输
  • 释放连接(拆除电路)

电路交换的特征:资源独占
采用电路交换的通信中,通信双方独占其使用的通信资源
即使没有数据在传输,第三方也无法使用这个闲置资源
《计算机网络:数据交换的三种方式及其比较》
资源独占并不是指独占整个通信链路,通信链路可以通过各种多路复用技术共享

报文交换(message switching)

报文交换广泛应用于上世纪五六十年代至七十年代的电报通信

  • 将要发送的数据整体作为报文,如 一个文件,以报文为单位进行传输
  • 采用存储+转发的交换方式

分组交换(package switching)

  • 与报文交换相同,采取存储+转发的交换方式
  • 将报文分成若干个小的分组,以分组为单位进行传输
  • 需要将报文拆分重组,且每个分组需要添加分组头(存储分组的元信息),
    产生额外开销
  • 多个分组间可以并行传输
  • 又称为统计多路复用(statistical multiplexing)

《计算机网络:数据交换的三种方式及其比较》
《计算机网络:数据交换的三种方式及其比较》
如上图所示,分组交换网络中,同一通信链路的多个用户可以在同一时间段内
共享所有带宽,且需要发送的数据越多,占用的平均带宽越多
因此,这种按需共享通信资源的复用方式又称为统计多路复用

分组交换与报文交换

分组交换与报文交换均采用存储转发交换方式,主要区别在于发送数据的单位
用传输延迟的概念来比较两种交换方式

  • 传输延迟(传输时延、发送延迟、发送时延)= 数 据 长 度 链 路 传 输 速 率 {\large\frac{数据长度}{链路传输速率}}

设报文大小为 M,分组大小为 L(分组头的影响忽略不计),链路传输速率为 R
需要经过 N 个路由器(交换设备),示意如下
《计算机网络:数据交换的三种方式及其比较》
对于报文交换:
    总发送时延 = 发送时延 × N = N M R \large\frac{NM}{R} RNM
对于分组交换:
    总发送时延 = 分组发送时延 × (N-1) + M R \large\frac{M}{R} RM = ( N − 1 ) L R \large\frac{(N-1)L}{R} R(N1)L + M R \large\frac{M}{R} RM
易知

       ( N − 1 ) L R \large\frac{(N-1)L}{R} R(N1)L < ( N − 1 ) M R \large\frac{(N-1)M}{R} R(N1)M

即发送延迟上分组交换节省的时间约为

       ( N − 1 ) ( M − L ) R \large\frac{(N-1)(M-L)}{R} R(N1)(ML)

两种交换传播时延相同,因此 分组交换交付时间 <报文交换交付时间
可以说分组交换在传输时间上明显优于报文交换

另一方面,由于存储转发的交换方式,对于报文交换与分组交换来说,
路由器(交换设备)所需要的缓存分别至少为 M 和 nL,n 为同时存在于交换节点的分组数量
因此,在交换节点缓存容量的要求上,分组交换也优于报文交换

分组交换与电路交换

现代计算机网络主要为分组交换网络(Internet
现代电话网络仍然使用电路交换
早已成熟、广泛使用的电路交换技术与分组交换相比各有优势

如,N 个用户共享一个1Mbps通信链路的场景:
假设每个用户活动时需要 100kb/s 的带宽
假设每个用户的平均活动时间10%
《计算机网络:数据交换的三种方式及其比较》
若采用电路交换:
无论用户活动与否,都独占通信需要使用的资源
因此电路交换方式可以满足 1Mbps / 100Kbps = 10 个用户

若采用分组交换:
对于 35 个用户,大于 10 个用户同时活动的概率小于 0.0004
因此可以向 35 个用户提供服务

因此,分组交换允许更多用户同时使用网络,从而使网络资源充分共享
相对于电路交换,分组交换更加简单(无需呼叫建立连接),资源共享更充分

但是分组交换就一定优于电路交换吗?

分组交换适用于突发数据传输网络(间歇性数据传输
电路交换适用于实时数据流传输

分组交换在某些方面难以提供电路级性能保障,如音/视频应用
且可能产生网络拥塞(congestion):分组延迟和丢失

因此,分组交换网络需要一些协议保证数据可靠传输和进行拥塞控制

2020/4/22


推荐阅读
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 【系统架构师精讲】(16):操作系统核心概念——寄存器、内存与缓存机制详解
    在计算机系统架构中,中央处理器(CPU)内部集成了多种高速存储组件,用于临时存储指令、数据和地址。这些组件包括指令寄存器(IR)、程序计数器(PC)和累加器(ACC)。寄存器作为集成电路中的关键存储单元,由触发器构成,具备极高的读写速度,使得数据传输非常迅速。根据功能不同,寄存器可分为基本寄存器和移位寄存器,各自在数据处理中发挥重要作用。此外,寄存器与内存和缓存机制的协同工作,确保了系统的高效运行。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 枚举类中enum关键字的常见应用与实践
    在枚举类中,`enum`关键字具有重要的作用,本文探讨了其常见的应用场景与实践。特别指出,枚举对象必须置于枚举类的首行,否则将导致编译错误。通过具体的代码示例,详细解析了这一规则及其背后的原理,帮助开发者更好地理解和使用枚举类。 ... [详细]
  • 本文详细介绍了267 Collections的特性和应用场景。作为Java集合框架中的核心接口,Collection接口是所有单列集合类的顶级接口,涵盖了列表、集合和队列等数据结构。通过具体的应用实例,本文深入解析了Collection接口的各种方法和功能,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 在CICS应用环境中,众多客户端通过网络与CICS服务器进行连接。系统管理员可以通过CICS系统交易CEMT查询当前连接的客户端信息。然而,在非客户端模式下,识别用户连接并解决信息获取错误的问题变得更为复杂。本文将探讨如何在CICS服务器端准确识别非客户端模式的用户连接,并提供有效的解决方案,以确保系统的稳定性和数据的准确性。此外,还将介绍一些常用的诊断工具和技术,帮助管理员快速定位和解决问题。 ... [详细]
  • 在探讨P1923问题时,我们发现手写的快速排序在最后两个测试用例中出现了超时现象,这在意料之中,因为该题目实际上要求的是时间复杂度为O(n)的算法。进一步研究题解后,发现有选手使用STL中的`nth_element`函数成功通过了所有测试点。本文将详细分析这一现象,并提出相应的优化策略。 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
author-avatar
无味18_380
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有