【计算机网络笔记】数据交换之报文交换和分组交换

news2024/11/19 16:38:32

  • 系列文章目录
  • 报文交换
  • 分组交换
  • 存储-转发
  • 报文交换 vs 分组交换
  • 总结

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换


报文交换

报文:源(应用)发送的信息整体。比如一个文件、一张图片。

报文交换:在传输过程中以报文作为整体,一次性发送到下一个节点,比如路由器。路由器接收到完整的报文之后再发往下一个节点。

报文交换最具有代表性的应用是上世纪5、60年代使用的电报系统。


分组交换

分组:由报文分拆出来的一系列相对较小的数据包再加上头部信息形成

分组交换则是在传输过程中以分组作为整体发送。整个过程需要经过报文的拆分重组两部分。

  • 拆分:源主机把要发送的报文拆分为一个个小的数据包,然后给数据包加上头部信息形成分组
  • 重组:分组到了目的主机后,目的主机要获得完整的报文,就需要把各个小的分组所携带的报文的一部分数据合并在一起

在这里插入图片描述

在分组交换网络中,链路的共享并不是事先分配好的,具有很强的随机性,谁发的数据多,对链路的使用率就高。这种方法就称为统计多路复用,它最大的特点是按需共享链路。也就是说,需要发送数据时才去占用电路的带宽,不需要就不占用。


存储-转发

下面再介绍存储-转发(store-and-forward)的概念。

存储-转发就是先把数据分组接收过来,占存一下,然后确定从哪一个链路发出去。

报文交换与分组交换均采用存储-转发交换方式。但它们使用的交换单位不一样。

  • 报文交换以完整报文进行“存储-转发”
  • 分组交换以较小的分组进行“存储-转发”

这两种交换方式仅仅有这么小的区别,那哪种交换更好呢?下面具体介绍。


报文交换 vs 分组交换

为了评价这两种交换方式的优劣,根据它们的传输延迟(传输时延),利用时间性的问题来进行对比。

以这样一个场景为例,源主机有一系列分组需要发送,这些分组是由报文拆分而来的。每一个分组的长度是L个bit,发送的时候利用一条链路进行传输,这条链路的带宽是R bps。发送每一个分组的时候是一个比特一个比特地进行发送,从第一个分组的第一个比特发送到第一个分组的最后一个比特发送结束这段时间就称为传输延迟或传输时延。

在这里插入图片描述

为了说明问题,利用这样的网络场景来进行对比。在这个网络中,两个主机通过两个路由器互连在一起。左侧为源主机,右侧为目的主机。假设我们忽略其他时间开销,只考虑报文或者分组的传输时间,报文的拆分和重组时间也不考虑。

在这里插入图片描述

  • 如果是报文交换,每次需要把报文完整的发向下一个节点,下一个节点才可以把这个报文再向下一个节点发送。所以在这个网络中,源主机和路由器转发这个报文的时间实际上就是报文传输的传输延迟,也就是M/R

  • 如果是分组交换,区别在于要把报文进行拆分。那么作为主机或者路由器在转发每一个分组所产生的的传输延迟就是L/R。

现在给出具体的数据。报文大小是7.5M,划分为5000个分组,每个分组就是1500bit,链路带宽是1.5Mbps。下面我们来分别计算这两种交换方式所需要的时间。

在这里插入图片描述

  • 按照报文交换方式:源主机在0时刻发送报文,大小是7.5M, 链路带宽是1.5Mbps,那么5s(7.5/1.5)后报文就已经被送到了第一个路由器了。第5s 开始第一个路由器就可以向第二个路由器发送报文。以此类推,再经过5s,报文就到达目的主机了方式。在这个例子中,采用报文交换需要15s的时间能够报文把源主机成功地传输到目的主机。现在我们考虑一个问题,例子中的路由器需要多大的缓存?答案是7.5M的缓存,因为它至少要把报文完整的存储下来后才能向下转发。那么如果报文的大小特别大,那也就意味着中间路由器的缓存也必须相应的特别大。

  • 按照分组交换方式:源主机将报文拆分成5000个分组,每个分组的大小是1500bit。源主机0时刻开始发送第一个分组,这个分组只经过1ms就传输到了第一个路由器,那么从1ms开始,第一个路由器向第二个路由器发送第一个分组,同时源主机向第一个路由器发送第二个分组。继续,从2ms开始,第二个路由器向目的主机发送第一个分组,同时第一个路由器向第二个路由器发送第二个分组,同时源主机向第一个路由器发送第三个分组。那么第3ms的时刻,第一个分组到达目的主机,第二个分组到达第二个路由器,第三个分组到达第一个路由器。这个过程一直持续下去,4999ms的这个时刻,4999号分组在第一个路由器(这么理解:第一的分组在第1ms的时刻到达第一个路由器,第二个分组在第2ms的时刻到达第一个路由器,那么第4999ms的时刻,4999号分组就在第一个路由器,那么同时也能推出源主机此时的分组是5000号、第二个路由器的分组是4998号)。再经过3ms,5000号分组也就是最后一个分组到达目的主机。此时是5002ms,也就是说源主机花了5.002s的时间将所有分组发送到目的主机,此时目的主机对分组进行重组就得到了报文。那么我们现在继续考虑路由器缓存的问题,它只需要1500bit的缓存空间就可以工作了,这比报文交换中7.5M的缓存小多了。

在上面这个例子中,采用报文交换使用了15s,采用分组交换使用了5.002s。为什么呢?因为在分组交换中,每个路由器之间可以并行工作,而报文交换中,它们是串行的。所以由于这个主要原因,分组交换技术在现在的计算机网络以及大部分数据网络中广泛使用。

对刚才的场景进行扩展,得出下面关于分组交换中报文交付时间的一般性结论:报文交付时间=报文传输延迟+最后一个分组经过每个路由器的传输延迟之和

在这里插入图片描述

总结

分组交换相较于报文交换有很多优点。比如传输速度快、对路由器的缓存能力要求不高。因此在现代计算机网络中,基本都使用的是分组交换。

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

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

相关文章

Transformer 中 Positional Encoding 实现

参考博文: https://www.cnblogs.com/nickchen121/p/16470736.html 解决问题 位置编码的主要目的是确保模型能够理解序列中的元素之间的相对位置和顺序,从而更好地捕捉到语义信息。在Transformer模型中,位置编码通常与词嵌入(w…

前端小知识之【浏览器内核】

目录 🌟前言🌟PC端浏览器内核🌟Trident内核🌟Gecko内核🌟WebKit内核(Chromium)🌟Blink内核 🌟移动端浏览器内核🌟应用🌟写在最后 🌟前言 通常所谓的浏览器内…

docker安装nessus

注册地址:https://zh-tw.tenable.com/products/nessus/nessus-essentials 临时邮箱:http://24mail.chacuo.net/ 帮助文档:https://docs.tenable.com/nessus/Content/DeployNessusDocker.htmdocker pull tenableofficial/nessusdocker run --name "my-nessus" -d -p 8…

【Go入门】编程语言比较:Golang VS Python

Golang:最佳人工智能语言,性能优于 Python 本节是学习go的引入,为了了解Python与go编程语言间比较。后续会完成相关课程,并分享笔记。 如今,世界各地有数百万用户使用 Golang 作为机器学习和人工智能的编程语言。 最好…

算法通过村第十四关-堆|白银笔记|经典问题

文章目录 前言在数组中寻找第K大的元素堆排序原理合并K个排序链表总结 前言 提示:想要从讨厌的地方飞出来,就得有藏起来的翅膀。 --三岛由纪夫《萨德侯爵夫人》 这里我们主要看一下经典的题目,这三个题目来说都是堆的热点问题。重点再理解处理…

Qt不能安装自己想要的版本,如Qt 5.15.2

使用在线安装工具安装Qt5.15.2时,发现没有Qt 5的相关版本,只有Qt 6的版本,这时选择右边的Archive,再点击筛选,这时就会出现之前的Qt版本。

vscode插件路径转移C盘之外盘

改变vscode系统路径 最近C盘路径不够了,网上的工具使用没那么精细,还不如自己手动看每个文件夹大小。在整理过长遇到vscode插件路径转移,方法如下: 桌面图标右键点击属性 改变–extensions-dir后面参数就可以了。

Web3 整理React项目 导入Web3 并获取区块链信息

上文 WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi 我们用react 创建了一个 dapp 项目 并将前后端代码做了个整合 那么 我们就来好好整理一下 我们的前端react的项目结构 我们在 src 目录下创建一个 components 用来存放我们的…

Python学习----Day07

函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做…

C++ 程序员入门需要多久,怎样才能学好?

文章目录 C学习方案有哪些推荐的在线教程或学习资源可以帮助我学习C编程?你能给我一些关于C内存管理的进阶学习资源吗? AI解答 C学习方案 C是一种功能强大且广泛应用的编程语言,作为一个初学者,学习C需要一定的时间和努力。学习…

【java学习—七】对象的实例化过程(33)

文章目录 1. 简单类对象的实例化过程2. 子类对象的实例化过程 1. 简单类对象的实例化过程 2. 子类对象的实例化过程

YOLO目标检测——打电话数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用:安全监控、智能驾驶、人机交互、智能城市数据集说明:YOLO目标检测数据集,真实场景的高质量图片数据,数据场景丰富。使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(json)和yolo(txt…

快速学习MyBatisPlus

文章目录 前言一、条件构造器和常用接口1.wapper介绍2.QueryWrapper(1)组装查询条件(2)组装排序查询(3)组装删除查询(4)条件优先级(5)组装select子句&#xf…

c++命名空间,缺省参数,引用

首先为了解决命名冲突,c提出了命名空间这一功能 比如using namespace std; 就是使用std(c官方库定义的命名空间)这个命名空间里面的命名。 using就可以直接指定本文件用那个命名空间。 也可以用::域作用限定符 如std::cin>> 并且会…

Linux网络编程系列之服务器编程——信号驱动模型

一、什么是信号驱动模型 在服务器中,信号驱动模型是一种事件处理模型,它能够异步地响应来自外部的事件。服务器可以注册一组回调函数,来处理来自客户端或其他进程的信号或事件,当信号或事件触发时,操作系统会通知服务器…

云耀服务器L实例部署Nextcloud企业云盘系统|华为云云耀云服务器L实例评测使用体验

文章目录 Nextcloud简介1.1 部署华为云云耀服务器L实例1.1.1 云耀服务器L实例购买1.1.2 云耀服务器L实例初始化配置1.1.3 远程登录云耀服务器L实例 2. 云耀服务器L实例中间件部署2.1 安装配置环境2.1.1 安装基本工具2.1.2 安装MariaDB2.1.3 安装Nginx2.1.4 安装PHP 3. 安装Next…

网络通信协议-HTTP、WebSocket、MQTT的比较与应用

在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP&#xff…

【VSCode】Windows环境下,VSCode 搭建 cmake 编译环境(通过配置文件配置)

除了之前的使用 VSCode 插件来编译工程外,我们也可以使用配置文件来编译cmake工程,主要依赖 launch.json 和 tasks.json 文件。 目录 一、下载编译器 1、下载 Windows GCC 2、选择编译器路径 二、配置 debug 环境 1、配置 lauch.json 文件 2、配置…

FPGA project : flash_write

本实验重点学习了: flash的页编程指令pp。 在写之前要先进行擦除(全擦除和页擦除); 本实验:先传写指令,然后进入写锁存周期,然后传页编程指令,3个地址; 然后传数据&a…

分布式事务协调中间件---seata快速入门

分布式事务 Seata,之前叫做Fescar,是一个开源的分布式事务解决方案,它主要致力于提供高效和简单的分布式事务服务。Seata主要用于解决微服务架构下的数据一致性问题。 Seata 的基本原理是基于两阶段提交 (2PC) 以及三阶段提交 (3PC)&#xff…