当前位置: 首页 > news >正文

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

文章目录

  • 一:计算机网络结构分层的必要性
    • (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响应报文后会对其进行解析,然后将网页呈现在我们面前

在这里插入图片描述

相关文章:

  • 绝了,超越YOLOv7、v8,YOLOv6 v3.0正式发布
  • 概论_第3章_二维随机变量__边缘概率密度
  • JS逆向之补环境过瑞数详解
  • 【程序员陪你过大年】html+css+js 实现春节动态烟花特效及服务器部署
  • 通讯录小练习:柔性数组和文件操作实现
  • 十三.动态内存管理
  • 【8】SCI易中期刊推荐——图像处理领域(中科院4区)
  • 计算机视觉未来发展与走向
  • 【每日一道智力题】之猴子搬香蕉
  • 集成学习、Bagging集成原理、随机森林构造过程、随机森林api与案例、boosting集成原理、梯度提升决策树(GBDT)、XGBoost与泰勒展开式
  • 第一层:封装
  • 【BP靶场portswigger-客户端14】点击劫持-5个实验(全)
  • 【PaaS】分享一家最近发现的宝藏Paas厂家
  • C语言—基于realloc函数实现的通讯录
  • 【云原生】k8s 一键部署(ansible)
  • 2017年终总结、随想
  • AHK 中 = 和 == 等比较运算符的用法
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Centos6.8 使用rpm安装mysql5.7
  • mysql_config not found
  • Terraform入门 - 1. 安装Terraform
  • 分类模型——Logistics Regression
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 计算机在识别图像时“看到”了什么?
  • 用 Swift 编写面向协议的视图
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​插件化DPI在商用WIFI中的价值
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C++17) optional的使用
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (done) 两个矩阵 “相似” 是什么意思?
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (六)Hibernate的二级缓存
  • (转)3D模板阴影原理
  • (转)EOS中账户、钱包和密钥的关系
  • (转)http协议
  • ./configure、make、make install 命令
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET MVC之AOP
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .Net7 环境安装配置
  • .netcore如何运行环境安装到Linux服务器
  • .NET上SQLite的连接
  • :=
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BZOJ4016][FJOI2014]最短路径树问题