(考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例

news2024/11/26 16:34:38

文章目录

  • 一:计算机网络结构分层的必要性
    • (1)分层思想
    • (2)计算机网络分层思想
      • ①:如何让两台计算机通过网线传输数据
      • ②:如何让分组在单个网络内传输
      • ③:如何让分组在网络间传输
      • ④:如何实现进程间基于网络通信
      • ⑤:如何让进程正确解析和处理数据
  • 二:计算机网络体系结构分层思想举例
    • (1)浏览器到路由器
    • (2)路由器处理
    • (3)路由器到Web服务器
    • (4)Web服务器到浏览器

本节相关视频

  • 【计算机网络微课堂(有字幕无背景音乐版)】
  • 【计算机网络微课堂(有字幕无背景音乐版)】

一:计算机网络结构分层的必要性

(1)分层思想

分层思想:软件工程基本定理(FTSE)告诉我们计算机领域的任何问题都可以通过增加一个间接的中间层来解决,这句话概括了计算机领域系统设计时都是按照严格的层级结构设计的。分层思想也是工业领域的通用准则,由于人的记忆能力和大脑处理速度有限,所以不得不把一些无关紧要的细节隐藏起来,让人专注更重要的东西,就像汽车,虽然其内部结构和原理非常复杂,但基本人人都会开车。计算机领域的分层思想比如有

  • 计算机体系结构
    在这里插入图片描述

  • JVM体系结构
    在这里插入图片描述

  • Spring5架构
    在这里插入图片描述

  • Android系统架构
    在这里插入图片描述

(2)计算机网络分层思想

计算机网络分层思想:计算机网络是一个非常复杂的系统,涉及硬件、软件、操作系统、应用等诸多方面,所以必须使用分层的思想,将这个庞大而复杂的问题转化为若干较小的易于解决和处理的局部问题。下面我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,然后层层处理

①:如何让两台计算机通过网线传输数据

两台计算机通过一条网线连接起来:需要考虑的问题有

  • 需要怎样的传输媒体(介质) :例如采用常用的双绞线作为传输媒体
    在这里插入图片描述

  • 计算机上采用怎样的物理接口来连接传输媒体: 例如使用RJ45以太网接口连接双绞线
    在这里插入图片描述

  • 使用怎样的信号表示比特0和1:例如使用方波信号表示0和1,分别代表低电平和高电平
    在这里插入图片描述

这些问题可以划归到我们后面会说到的物理层,至此我们便实现了让两台计算机通过网线传输数据。注意

  • 严格来讲,传输媒体并不属于物理层,它并不包含在体系结构中
  • 计算机网络中传输的信号并非方波信号,这里仅为了简化问题

②:如何让分组在单个网络内传输

以多台主机构成单个总线型网络为例:需要考虑的问题有

  • 如何标识网络中的各主机(主机编址问题):例如使用网卡中的MAC地址进行标识,主机在发送数据时会给数据附加目的地址,当其他主机收到后,根据目的地址和自身地址来决定是否接受数据
    在这里插入图片描述

  • 目的主机如何从信号所表示的一连串比特流中区分出地址和数据(分组封装格式问题)

  • 如何协调各主机对总线的争用问题
    在这里插入图片描述

这些问题可以划归到我们后面会说到的数据链路层,至此我们便实现了分组在网络内传输

  • 上面所展示的总线型网络早已淘汰,取而代之的是使用以太网交换机将多台主机互连所形成的交换式以太网
    在这里插入图片描述

③:如何让分组在网络间传输

以由多个网络通过路由器连接形成的小型互连网络为例:需要考虑的问题有

  • 如何标识各网络以及网络中各主机的问题(网络和主机共同编址的问题):例如使用IP地址进行标识,下图中,网络N1的网络号为192.168.1,连接到该网络中的各主机的主机号分别为1、2、254;网络N2的网络号为192.168.0,连接到该网络中各主机的主机号分别为1、2、254
    在这里插入图片描述

  • 分组从源主机到目的主机可选路径有很多条,应该如何选择(路由器如何转发分组和路由选择)
    在这里插入图片描述

这些问题可以划归到我们后面会说到的网络层,至此我们便实现了分组在网络间传输

④:如何实现进程间基于网络通信

不同主机运行着不同的进程,它们需要通过网络进行通信:需要考虑的问题有

  • 如何解决进程之间基于网络的通信问题:例如下图,服务器上的进程将数据发送给目的主机后,这个数据应该交付给Chrome还是QQ
    在这里插入图片描述

  • 传输中如果出现错误应该如何处理:例如下图,数据在传输过程中出现了误码、丢包等问题
    在这里插入图片描述

这些问题可以划归到我们后面会说到的传输层,至此我们便实现了进程间基于网络通信

⑤:如何让进程正确解析和处理数据

主机上运行着各种各样的进程,它们解析或处理数据的方式也不相同,需要考虑的问题有

  • 如何通过应用进程间的交换来完成特定的网络应用:例如支持万维网应用的HTTP协议、支持电子邮件的SMTP协议等

这些问题可以划归到我们后面会说到的应用层


现在,我们把实现计算机网络中可能遇到的各种各样的问题分别划归了到了物理层、数据链路层、网络层、应用层

在这里插入图片描述

二:计算机网络体系结构分层思想举例

计算机网络体系结构分层思想举例:接下来我们通过请求网页的例子来说明上面计算机网络分层思想

在这里插入图片描述

主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程Web服务器应用进程之间基于网络的通信,这个过程中,体系结构的各层发挥的作用也不相同

  • 浏览器应用进程和Web服务器应用进程需要用到完整的五层结构,因为它们要实现的是端到端通信,数据必须完整无误的交付给对方解析和处理
  • 路由器等中间系统不需要应用层和传输层,因为它只负责信息的存储和转发等问题,不需要解析数据等操作,实现的是点到点通信

在这里插入图片描述

(1)浏览器到路由器

应用层:按HTTP协议要求构建HTTP请求报文,然后交付给传输层处理

在这里插入图片描述

传输层:给HTTP请求报文添加TCP首部,使之成为TCP报文段(格式如下图),然后交付给网络层处理。其中TCP首部主要作用

  • 区分应用进程
  • 实现可靠传输

在这里插入图片描述

网络层:给TCP报文段添加IP首部,使之成为IP数据报(格式如下图),然后交付给数据链路层处理。其中IP首部主要作用是为了让IP数据报可以在互连网上传输,也即被路由器转发

在这里插入图片描述

数据链路层:给IP数据报添加首部和尾部,使之成为(格式如下图),然后交付给物理层处理。其中帧首部和帧尾部作用如下

  • 帧首部:让帧能够在一段链路上或一个网络上传输,可以被相应目的主机接收
  • 帧尾部:让目的主机检查所接收的帧是否有误码

在这里插入图片描述

物理层:将帧看作比特流,然后在该比特流前面加入前导码(格式如下图)。前导码作用是让目的主机做好接收帧的准备

在这里插入图片描述

最后,物理层将含有前导码的比特流变换为相应的信号发送到传输媒体,然后路由器接收

(2)路由器处理

物理层:将信号变换为比特流,去掉前导码后将其交付给数据链路层(注意交付的是
在这里插入图片描述

数据链路层:将帧首部和尾部去掉之后,将其交付给网络层(注意交付的是IP数据报

在这里插入图片描述

网络层:解析IP数据报首部,从中提取出目的网络地址,然后查找自身的路由表,确定转发端口,然后将IP数据报交付给数据链路层

在这里插入图片描述

数据链路层:给IP数据报添加首部和尾部,使之成为帧,然后交付给物理层

在这里插入图片描述

物理层:将帧看作比特流,然后在该比特流前面加入前导码

在这里插入图片描述

最后,物理层将含有前导码的比特流变换为相应的信号发送到传输媒体,然后Web服务器接收

(3)路由器到Web服务器

物理层:将信号变换为比特流,去掉前导码后将其交付给数据链路层(注意交付的是

在这里插入图片描述

数据链路层:将帧首部和尾部去掉之后,将其交付给网络层(注意交付的是IP数据报

在这里插入图片描述

网络层:将IP数据报去掉之后,将其交付给传输层(注意交付的是TCP报文段
在这里插入图片描述

传输层:将TCP报文段去掉之后,将其交付给应用层(注意交付的是HTTP请求报文

在这里插入图片描述

应用层:对HTTP请求报文进行解析,然后给主机发回HTTP响应报文

(4)Web服务器到浏览器

与浏览器到Web服务器类似,Web服务器到浏览器也是这样的一个层层封装和解包的过程,最终浏览器拿到HTTP响应报文后会对其进行解析,然后将网页呈现在我们面前

在这里插入图片描述

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

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

相关文章

SpringBoot项目练习

项目名称:旅游网站后台管理一:项目简介旅游网站后台管理,包括如下用户:旅游线路:线路图片:线路分类:旅行社:后台技术:springboot、mybatis、mybatis plus前台:bootstrap、…

测试开发 | 专项测试技术初识Hook

本文节选自霍格沃兹测试学院内部教材Hook 技术需要预先分析目标应用的源代码和逻辑,根据目标测试场景设置目标、逻辑和数据,然后运行时动态的对目标函数参数值、逻辑或者返回值做修改,达到修改现有函数逻辑、实现目标测试场景的目的。Hook的价…

JavaWeb基础(一) Mybatis使用详解

JavaWeb基础——Mybatis 1,配置文件实现CRUD 如上图所示产品原型,里面包含了品牌数据的 查询 、按条件查询、添加、删除、批量删除、修改 等功能,而这些功能其实就是对数据库表中的数据进行CRUD操作。接下来我们就使用Mybatis完成品牌数据的…

3-2存储系统-主存与CPU的连接外部存储器

文章目录一.主存与CPU的连接(一)连接原理(二)主存容量的扩展1.位扩展法2.字扩展法3.字位同时扩展法(三)存储芯片的地址分配和片选1.线选法2.译码片选法二.外部存储器(一)磁盘储存器1…

JVM-三色标记

一、什么叫三色标记三色也叫三色抽象,它是所有mutator和collector都必须遵守的定律。它把对象标记为三种颜色:白色:对象还未被垃圾收集器访问,在回收的开始阶段所有的对象均为白色(当然了这只是指概念上的,…

PaddleNLP开源UTC通用文本分类技术,斩获ZeroCLUE、FewCLUE双榜第一

飞桨PaddlePaddle 2023-01-12 20:02 发表于湖北 针对产业级分类场景中任务多样、数据稀缺、标签迁移难度大等挑战,百度提出了一个大一统的通用文本分类技术UTC(Universal Text Classfication)。 UTC在ZeroCLUE和FewCLUE两个榜单上均位居榜首…

css加载会造成阻塞吗?

目录 A.设置网络加载速度 B.css加载会阻塞DOM树的解析渲染吗? 1.css会阻塞DOM树解析? 2.css加载会阻塞DOM树渲染? 3.个人对这种机制的评价 3.css加载会阻塞js运行吗? 4.结论 可以使用以下几种方法解决CSS加载速度的问题: …

曲线曲率介绍和python求法

目录曲率1.1 弧长参数 s参考资料曲率 比如我们想知道曲线 AB\boldsymbol{AB}AB 上任一点处的弯曲程度怎么办呢?这时就需要一个十分重要的概念——曲率。 维基百科: 在数学中,曲率(curvature)是描述几何体弯曲程度的量…

Octave安装与使用

1. 介绍 Octave是一种编程语言,旨在解决线性和非线性的数值计算问题。Octave为GNU项目下的开源软件,早期版本为命令行交互方式,4.0.0版本发布基于QT编写的GUI交互界面。Octave语法与Matlab语法非常接近,可以很容易的将matlab程序…

机器学习/人工智能 实验二:图像特征自动学习方法实践与分析

写在前面 参考的是https://zh.d2l.ai/index.html 一、实验目的与要求 (1)利用基于深度学习的特征自动学习方法完成图像特征提取的实验方案的设计。 (2)编程并利用相关软件完成实验测试,得到实验结果。 (3)通过对实验数据的分析、整理,得出实验结论&am…

Unity | 序列化(Serialized)和反序列化(NonSerialized)是什么意思

一、什么是序列化 官方叙述:序列化是将对象的状态信息转换为可以存储或传输的形式的过程。 人话叙述:我们平时输入的代码,实际上是不能储存或者传输的,所以我们需要翻译一下,翻译成能储存或者翻译的文字,这…

【SpringBoot 学习】52、SpringBoot 使用 grpc 实现远程服务调用

文章目录一、SpringBoot 使用 grpc 实现远程服务调用1、服务端编写2、客户端编写一、SpringBoot 使用 grpc 实现远程服务调用 gRPC 是一个现代的、开源的、高性能的远程过程调用(RPC)框架,可以在任何地方运行。gRPC 使客户端和服务器应用程序…

Java-Thread多线程的使用

Java-Thread多线程的使用一、线程,进程,并发,并行的概念1.进程2.线程3.并发和并行二、线程的创建和使用1.通过继承Thread类,重写run方法2.实现Runnable接口,重写run方法3.使用案例三、线程的常用方法四、线程的退出和中…

关于机器人状态估计(11)-VIO单目与双目/雷达Lidar SLAM/未来的机器人

写这篇文章的时候刚发生行业大事件: Google收购ROS 其实一开始还是水,绝对大量文不对题,但是必有干货,毕竟用的是这个关键的系列标题。 最近有几件行业内发生的大小事,让我觉得有必要更一下。 首先是Livox的mid-360…

VueUse(中文)——核心函数:State相关函数

VueUse官方地址 一、createGlobalState 将状态保持在全局范围内,以便跨Vue实例重用 1、没有持久性(存储在内存中) 例如: 或者 2、持久性存储 使用useStorage()存储在localStorage:例如: 组件使用: 二、createInjectionSt…

【图灵商城】前、后端项目搭建与运行

【图灵商城】前、后端项目搭建与运行 项目介绍 图灵商城-基础班架构图,如下所示: 本节是项目代码的初始化,今天是2023-01-15,先预祝大家新年快乐!!! 图灵商城这个项目是一个前后端分离的项目…

我这是这样知道 React TS 中的 Event Handler 类型的

开头 现在 TypeScript 的发展也越来越成熟,已逐渐应用到我们开发的前端项目之中,它能够带来类型提示,提前规避类型上的错误,来提高项目代码的健壮性,以及更高效的编码效率,前提就是我们需要定义好相应的类…

创客匠人赋能线上瑜伽健身实现流量增长

近年来,我国的儿童、成年人肥胖率逐年攀升。身边发胖的人越来越多,尤其是步入中年的人群,很多都有“发福”的现象。 超重肥胖已经成为影响我国居民健康的重要公共卫生问题。在身材焦虑和疫情肆虐下,很多人开始重视自己的健康问题…

python学习笔记---Python基础【廖雪峰】

Python基础 数据类型和变量 整数 对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。十六进制数也可以写成0xa1b2_c3d4。 >>> prin…

Qt opencv编译详细教程(windows版)

在Qt中使用opencv这个算法视觉库,前期环境步骤搭建如下: 1、下载cmake。 2、下载opencv库,我这里下载的是opencv-3.3.1版本。 3、没有安装Qt的下载Qt软件,Qt的环境安装部署,这里不做介绍。 4、安装cmake后,…