计算机网络扫盲(3)——网络核心

一、概述

        在之前的文章中,我们已经介绍了计算机网络的边缘,本文我们将继续介绍网络核心部分,即由互联因特网系统的分组交换机和链路构成的网状网络。

二、分组交换

        在各种网络应用中,端系统彼此交换报文(message)。报文能够包含协议设计者需要的任何东西。报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据、JPEG图像或MP3 音频文件。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。在源和目的地之间,每个分组都通过通信链路和分组交换机(packet switch)传送。(交换机主要有两类:路由器(router) 和链路层交换机 (link-layer switch)。)分组以等于该链路最大传输速率的速度传输通过通信链路。因此,如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。

2.1 存储转发传输

        多数分组交换机在链路的输入端使用存储转发传输(store-and-forward transmission)机制。存储转发传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。

        在这种机制下,当路由器接收到一个分组的前沿比特时,不会立刻进行转发,而是必须先缓存(即“存储”)该分组的比特,只有当路由器已经接受完该分组的所有比特后,它才能开始向出链路传输(即“转发”)该分组。

2.2 排队时延和分组丢失

        每台分组交换机有多条链路与之相连。对于每条相连的链路,该分组交换机具有一个输出缓存(output buffer,也称为输出队列(output queue)),它用于存储路由器准备发往那条链路的分组。该输出缓存在分组交换中起着重要的作用。如果到达的分组需要传输到某条链路,但发现该链路正忙于传输其他分组,该到达分组必须在输出缓存中等待。因此,除了存储转发时延以外,分组还要承受输出缓存的排队时延(queuing delay)。这些时延是变化的,变化的程度取决于网络的拥塞程度。因为缓存空间的大小是有限的,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满了。在此情况下,将出现分组丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃。

2.3 转发表和路由选择协议

        前面我们说过,路由器从与它相连的一条通信链路得到分组,然后向与它相连的另一条通信链路转发该分组。但是路由器怎样决定它应当向哪条链路进行转发呢?不同的计算机网络实际上是以不同的方式完成分组转发的。这里,我们简要介绍在因特网中所采用的方法。

        在因特网中,每个端系统具有一个称为IP地址的地址。当源主机要向目的端系统发送一个分组时,源在该分组的首部包含了目的地的IP地址。如同邮政地址那样,该地址具有一种等级结构。当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的一部分,并向一台相邻路由器转发该分组。更特别的是,每台路由器具有一个转发表(forwarding table),用于将目的地址(或目的地址的一部分) 映射成为输出链路。当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路。路由器则将分组导向该出链路。

        我们刚刚学习了路由器使用分组的目的地址来索引转发表并决定适当的出链路。但是这个叙述还要求回答另一个问题:转发表是如何进行设置的?是通过人工对每台路由器逐台进行配置,还是因特网使用更为自动的过程进行配置呢?这部分的内容我们会在后面的文章中详细讨论,这里先进行一个简单的说明:因特网具有以下特殊的路由选择协议(routing protocol),用于自动设置这些转发表。

三、电路交换

        通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。上一节我们已经讨论过分组交换网络,现在我们将注意力转向电路交换网络。

        在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率)。在分组交换网络中,这些资源则不是预留的;会话的报文按需使用这些资源,其后果可能是不得不等待(即排队)接入通信线路。一个简单的类比是,考虑两家餐馆,一家需要顾客预订,而另一家不需要预订,但不保证能安排顾客。对该餐馆时,原则上我们能够立即入座并点菜。对于不需要预订的那家餐馆,我们不必麻烦于需要预订的那家餐馆,我们在离开家之前必须承受先打电话预订的麻烦,但当我们到达地预订餐桌,但当我们到达该餐馆时,也许不得不先等待一张餐桌空闲后才能入座。

        传统的电话网络是电路交换网络的例子。考虑当一个人通过电话网向另一个人发送信息(语音或传真)时所发生的情况。在发送方能够发送信息之前,该网络必须在发送方和接收方之间建立一条连接。这是一个名副其实的连接,因为此时沿着发送方和接收方之间路径上的交换机都将为该连接维护连接状态。用电话的术语来说,该连接被称为一条电路(circuit)。当网络创建这种电路时,它也在连接期间在该网络链路上预留了恒定的传输速率(表示为每条链路传输容量的一部分)。既然已经为该发送方—接收方连接预留了带宽,则发送方能够以确保的恒定速率向接收方传送数据。

四、小结

        在网络核心中,通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching)和分组交换(packet switching)。这里我们着重介绍了分组交换的方式,主要是因为笔者在实际应用中更多需要接触到的是这一部分的内容,因此对于电路交换的内容只是简单提及,并未展开。

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

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

相关文章

Java内存缓存神器:Caffeine(咖啡因)

文章目录 一、Caffeine简介二、缓存加载1、手动加载2、自动加载3、手动异步加载(需要额外的包)4、自动异步加载 三、缓存清理1、基于容量2、基于时间3、基于引用 四、缓存移出1、手动移出2、移出监听器 五、刷新缓存 一、Caffeine简介 官网:…

PCL 点云加权均值收缩

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 受到之前Matlab 加权均值质心计算(WMN)的启发,我们在计算每个点的加权质心时可以很容易的发现,他们这些点会受到周围邻近点密度的影响,最后会收缩到某一个区域,那么这个区域也必定是我们比较感兴趣的一些点,…

conda使用——(待完善)

conda删除虚拟环境 conda env remove --name your_env_name Python Anaconda导出(export)环境到environment.yml文件conda create --prefix 命令安装虚拟环境到指定路径报错conda环境打包迁移及部署conda使用yaml创建虚拟环境conda创建新环境Linux查看当前Cuda(CUDA…

《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-02-计算软件

文章目录 1. 概述2. 操作系统2.1 操作系统的组成2.2 操作系统的作用2.3 操作系统的特征2.4 操作系统的分类2.4.1 批处理操作系统2.4.2 分时操作系统2.4.3 实时操作系统2.4.4 网络操作系统2.4.5 分布式操作系统2.4.6 微型计算机操作系统2.4.7 嵌入式操作系统3. 数据库3.1 关系型…

2023.12.4

race\牛客\多校\广西师范大学训练赛\雾锁山头山锁雾.cpp #include<bits/stdc.h> #include<iostream> #include<algorithm> #include<map> #include<set> #include<queue> #include<cstring> #include<math.h> #include<ma…

uniapp中进行地图定位

目录 一、创建map 二、data中声明变量 三、获取当前位置信息&#xff0c;进行定位 四、在methods中写移动图标获取地名地址的方法 五、最终展示效果 一、创建map <!-- 地图展示 --><view class"mymap"><!-- <view class"mymap__map"…

LangChain(0.0.340)官方文档五:Model

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、Chat models1.1 Chat models简介1.2 Chat models的调用方式1.2.1 环境配置1.2.2 使用LCEL方式调用Chat models1.2.3 使用内置Chain调用Chat models 1.3 缓存1.3.1 内存缓存…

如何调用 API | 学习笔记

开发者学堂课程【阿里云 API 网关使用教程:如何调用 API】学习笔记&#xff0c;与课程紧密联系&#xff0c;让用户快速学习知识。 课程地址&#xff1a;阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 如何调用 API 调用 API 的三要素 要调用 API 需要三…

Oracle的回收站

Oracle的回收站 一、什么是oracle的回收站二、oracle的回收站相关操作1、设置Oracle回收站的状态2、回收站功能的使用3、查看回收站的状态和内容4、回收站具体应用案例&#xff1a; 一、什么是oracle的回收站 Oracle的回收站是一种功能&#xff0c;它允许用户在删除表中的数据…

Linux系统检查是以虚拟机还是物理机形式运行

平时工作中使用Linux大部分是通过ssh远程连接到服务器上,比如应用安装部署和系统维护等。那么,对于没有进过机房的人,如何知道自己使用的Linux服务器是虚拟机还是物理机呢? 1、dmidecode命令 dmidecode命令可以获取有关系统硬件的详细信息,包括制造商信息, 虚拟机通常会…

Hive 安装部署

文章目录 Hive 安装部署部署模式嵌入模式安装下载安装配置环境启动 Hive 客户端工具 本地模式安装下载安装 MySQL登录 MySQL安装 Hive Hive 命令行交互 Hive 安装部署 部署模式 Hive 有3种部署模式&#xff0c;分别是嵌入模式、本地模式和远程模式。关于这 3 种部署模式的具体…

【软件测试学习】—软件质量需求(四)

【软件测试学习】—软件质量需求&#xff08;四&#xff09; 1 软件质量需求的分类 软件质量需求用于确定测试目标。测试目标包括&#xff1a;功能、性能、界面、易用性、兼容性、安全性、可用性/可靠性、可维 护性、可扩展性等。功能以外统称非功能 2 功能  软件能做什么…

【JavaScript手撕代码】数组去重

利用Set function getUnRepeatArr(arr){return [...new Set(arr)] }利用filter function getUnRepeatArr(arr){return arr.filter((item, index) > {// 过滤的方法&#xff0c;如果说数组中最后一个元素的索引当前遍历到的元素的索引// 那么我们认为它是唯一的return arr.…

组网技术-交换机

交换机&#xff1a; 分类&#xff1a; 根据交换方式划分&#xff1a; 1.存储转发交换&#xff1a;交换机对输入的数据包先进行缓存、验证、碎片过滤&#xff0c;然后进行转发。 时延大&#xff0c;但是可以提供差错校验&#xff0c;并支持不同速度的输入、输出端口间的交换…

Python读取二进制文件:深入解析与技术实现

目录 一、引言 二、二进制文件的基础 1、二进制文件的组成 2、二进制文件的编码 三、Python读取二进制文件的方法 1、使用内置函数open() 2、使用numpy库 四、处理读取的二进制数据 1、解析数据 2. 转换数据类型 五、总结与展望 1、高效读取二进制文件 2、处理复杂…

ssm医药进出口交易系统源码和论文

ssm医药进出口交易系统源码和论文726 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构…

电源自动切换初识

【前提&#xff1a;这里以一般的单片机产品为例&#xff0c;使用3.3V的供电系统&#xff0c;常见的USB供电、外接电源设配器供电和电池供电】 一、经典二极管切换电路 这是最简单的电源切换电路&#xff1a;二极管并联&#xff0c;理论上支持无数个电源切换&#xff0c;缺点是…

C++基础 -36- 模板之模板函数

模板函数格式 template <class T> void allexchange(T a,T b) {T c;c*a;*a*b;*bc; }模板函数可以增强函数的通用性 举例说明&#xff0c;使用一个模板函数实现了两个的函数的功能 #include "iostream"using namespace std;void myexchangeint(int* a,int* …

C语言图书管理系统的代码,包括图书录入、查询、插入、修改和删除功能。

以下是一个简单的C语言图书管理系统的代码&#xff0c;包括图书录入、查询、插入、修改和删除功能。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 // 最大图书数量 // 图书结构体 typedef struct { int id; //…

linux作业管理_jobs

4.2 作业管理 是指控制当前正在运行的进程的行为&#xff0c;也称为进程控制。 是shell的一个特性&#xff0c;使用户能在多个独立进程间进行切换。 例如&#xff0c;用户可以挂起一个正在运行的进程&#xff0c;稍后再恢复其运行。当用户使用vim编辑一个文本文件&#xff0c…