当前位置: 首页 > 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)
  • 【刷算法】从上往下打印二叉树
  • Apache的基本使用
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • express.js的介绍及使用
  • FineReport中如何实现自动滚屏效果
  • Js基础知识(一) - 变量
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Swift 中的尾递归和蹦床
  • Swoft 源码剖析 - 代码自动更新机制
  • 深入浅出webpack学习(1)--核心概念
  • 时间复杂度与空间复杂度分析
  • 小程序01:wepy框架整合iview webapp UI
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 仓管云——企业云erp功能有哪些?
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.13) SiK无线电高级配置(五)
  • (30)数组元素和与数字和的绝对差
  • (二)丶RabbitMQ的六大核心
  • (蓝桥杯每日一题)love
  • (未解决)macOS matplotlib 中文是方框
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)ObjectiveC 深浅拷贝学习
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET CF命令行调试器MDbg入门(一)
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET运行机制
  • .net中生成excel后调整宽度
  • /etc/shadow字段详解
  • /var/spool/postfix/maildrop 下有大量文件
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [Android View] 可绘制形状 (Shape Xml)
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [C++随笔录] 红黑树