2.6数据报与虚电路

2024-06-14 04:04
文章标签 数据 2.6 电路

本文主要是介绍2.6数据报与虚电路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据报

当作为通信子网用户的端系统要发送一个报文时,在端系统中实现的高层协议先把报文拆成若干个带有序号的数据单元,并在网络层加上地址等控制信息后形成数据报分组(即网络层PDU)中间结点存储分组一段很短的时间,找到最佳的路由后,尽快转发每个分组。不同的分组可以走不同的路径,也可以按不同的顺序到达目的结点。

我们用图2-5的例子来说明数据报服务的原理。假定主机A要向主机B发送分组。
在这里插入图片描述
(1)主机A先将分组逐个发往与它直接相连的交换结点A,交换结点A将收到的分组缓存。
(2)然后查找自己的转发表。由于不同时刻的网络状态不一样,因此转发表的内容可能不完全相同,因此有的分组转发给交换结点C,有的分组转发给交换结点D。
(3)网络中的其他结点收到分组后,类似地转发分组,直到分组最终到达主机B。

当分组正在某一链路上传送时,分组并不占有网络的其他部分资源。因为采用存储转发技术,资源是共享的,所以主机A在发送分组时,主机B也可以同时向其他主机发送分组。

通过上面的例子,我们可以总结出数据报服务具有如下特点:
(1)发送分组前不需要建立连接。发送方可随时发送分组,网络中的结点可随时接收分组。
(2)网络尽最大努力交付,传输不保证可靠性,所以可能丢失;为每个分组独立地选择路由,转发的路径可能不同,因而分组不一定按序到达目的结点。
(3)发送的分组中要包括发送端和接收端的完整地址,以便可以独立传输。
(4)分组在交换结点存储转发时,需要排队等候处理,这会带来一定的时延。当通过交换结点的通信量较大或网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组。
(5)网络具有冗余路径,当某一交换结点或一段链路出现故障时,可相应地更新转发表,寻找另一条路径转发分组,对故障的适应能力强。
(6)存储转发的延时一般较小,提高了网络的吞吐量。
(7)收发双方不独占某一链路,资源利用率较高。

虚电路

虚电路方式试图将数据报方式与电路交换方式结合起来,充分发挥两种方法的优点,以达到最佳的数据交换效果。在分组发送之前,要求在发送方和接收方建立一条逻辑上相连的虚电路,并且连接一旦建立,虚电路所对应的物理路径也就固定了。与电路交换类似,整个通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放阶段。

在虚电路方式中,端系统每次建立虚电路时,选择一个没用过的虚电路号分配给该虚电路,以区别于本系统中的其他虚电路。在传送数据时,每个数据分组不仅要有分组号、检验和等控制信息,还要有它要通过的虚电路号,以区别于其他虚电路上的分组。在虚电路网络中的每个结点上都维持一张虚电路表,它的每一项记录了一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号、前一结点和下一结点的标识。数据的传输是双向进行的,上述信息是在虚电路的建立过程中确定的。
在这里插入图片描述
(1)为了进行数据传输,主机A与主机B之间先建立一条逻辑通路,主机A发出一个特殊的"呼叫请求"分组,该分组通过中间结点送往主机B,如果主机B同意连接,就发送"呼叫应答"分组予以确认。
(2)在虚电路建立之后,主机A就可以向主机B发送数据分组。当然,主机B也可以在该虚电路上向主机A发送数据。
(3)传送结束后主机A通过发送"释放请求"分组以拆除虚电路,整个连接就

逐段断开了。通过上面的例子,可以总结出虚电路服务具有如下特点:
(1)虚电路通信链路的建立和拆除需要时间开销,对交互式的应用和小量的短分组情况,显得很浪费,但对长时间、频繁的数据交换,则效率较高。
(2)虚电路的路由选择体现在连接建立阶段,连接建立后,传输路径就确定了。
(3)虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达。此外,还可以对两个数据端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送。
(4)虚电路有一个致命的弱点,即当网络中的某个结点或某条链路出故障而彻底失效时,则所有经过该结点或该链路的虚电路将遭到破坏。
(5)分组首部并不包含目的地址,而是包含虚电路标识符,相对数据报方式开销小。

虚电路之所以是"虚"的,是因为这条电路不是专用的,每个结点到其他结点之间的链路可能同时有若干虚电路通过,它也可能同时与多个结点之间具有虚电路。每条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进程服务,这些虚电路的实际路由可能相同也可能不相同。

请注意,图2-6所示的数据传输过程是有确认的传输(由高层实现),主机B收到分组后要发回相应分组的确认。网络中的传输是否有确认与网络层提供的两种服务没有任何关系。

数据报服务和虚电路服务的比较见表2-1。
在这里插入图片描述

这篇关于2.6数据报与虚电路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1