【计算机网络】第 3 课 - 计算机网络体系结构
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。
目录
1、常见的计算机网络体系结构
2、计算机网络体系结构分层的必要性
2.1、物理层
2.2、数据链路层
2.3、网路层
2.4、运输层
2.5、应用层
3、计算机网络体系结构中的专业术语
4、总结
1、常见的计算机网络体系结构
为了使不同体系结构的计算机网络都能互连,国际标准化组织于 1977 年成立了专门机构研究该问题。不久,他们就提出了一个试图使各种计算机在世界范围内互连成网的标准框架,也就是著名的 “开放系统互连参考模型”,简称为 OSI(Open Systems Interconnection)。
到了 20 世纪 90 年代初期,虽然整套的 OSI 国际标准都已经制订出来了,但这时因特网已抢先在全世界覆盖了相当大的范围。因特网从 1983 年开始使用 TCP/IP 协议族,并逐步演变成 TCP/IP 参考模型。
在过去制订标准的组织中往往以专家、学者为主。但现在,许多公司都纷纷挤进各种各样的标准化组织,使得技术标准有着浓厚的商业气息。一个新标准的出现,有时不一定反映出其技术水平是最先进的,而是往往有着一定的市场背景。从这种意义上说,能够占领市场的就是标准。
OSI 标准失败的原因可归纳为:
① OSI 的专家们缺乏实际经验,它们在完成 OSI 标准时没有商业驱动力
② OSI 的协议实现起来过分复杂,而且运行效率很低
③ OSI 标准的制订周期太长,因而使得按 OSI 标准生产的设备无法及时进入市场
④ OSI 的层次划分也不太合理,有些功能在多个层次中重复出现
TCP/IP 体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是 可以互连全世界各种不同的网络接口,例如有线的以太网接口,无线局域网的 WIFI 接口,而不限定使用一种或几种网络接口。因此,本质上 TCP/IP 体系结构只有上面的三层。
IP 协议是 TCP/IP 体系结构网际层的核心协议。TCP 和 UDP 是 TCP/IP 体系结构运输层的两个重要协议。 TCP/IP 体系结构的应用层包含了大量的应用层协议,例如 HTTP,SMTP,DNS,RTP 等。
IP 协议可以将不同的网络接口进行互连,并向其上的 TCP 协议和 UDP 协议提供网络互连服务。而 TCP 协议在享受 IP 协议提供的网络互连服务的基础上,可向应用层的相应协议提供 可靠传输的服务。UDP 协议在享受 IP 协议提供的网络互连服务的基础上,可向应用层的相应协议提供 不可靠传输的服务。
由于 TCP/IP 体系结构为了将不同的网络接口进行互连,因此它的网络接口层并没有规定什么具体的内容。然而,这对于我们学习计算机网络的完整体系而言,就会缺少一部分内容,即缺少的是物理层内容。因此,在学习计算机网络原理时往往采取折中的办法,也就是综合 OSI 和 TCP/IP 的优点,采用一种 五层协议的原理体系结构。
可以看出,五层协议的原理体系结构,将 TCP/IP 体系结构的网络接口层又重新划分为了物理层和数据链路层。这样,更有利于我们对计算机网络原理的学习。
2、计算机网络体系结构分层的必要性
“分层” 可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
下面,我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,层层处理。
2.1、物理层
物理层(Physical Layer):这是最底层的层次,负责定义传输介质和数据传输的物理规范,例如电缆、光纤、无线信号等。
首先,来看最简单的情况,两台计算机通过一条网线连接起来。
对于这种最简单的情况,我们需要考虑以下问题:
① 采用怎样的传输媒体(介质)
例如,这是我们常见的双绞线网线。
② 采用怎样的物理接口
例如,这是 RJ45 以太网接口。
③ 使用怎样的信号表示比特 0 和 1
例如,使用这样的方波信号,低电平表示 0,高电平表示 1。(这里,我们需要说明两点,① 严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中。② 计算机网络中传输的信号,并不是我们举例的方波信号,我们之所以举例成方波信号,是为了让初学者容易理解。)
解决了这些问题,两台计算机就可以通过信号来传输比特 0 或 1 了。我们可以将这些问题划规到 物理层。
2.2、数据链路层
数据链路层(Data Link Layer):在物理层之上,负责数据的分帧、差错检测和纠正,以确保数据在物理层的可靠传输。
实用的计算机网络,一般都由多台主机构成。
假设,我们已经解决了物理层的问题,也就是说,主机间可以发送信号来传输比特 0 或 1 了。我们来看看,在这样一个 总线型的网络 上,还面临什么需要解决的问题呢?
如图所示,主机 A 要给主机 C 发送数据,但是,表示数据的信号会通过总线传播到总线上的每一个主机。那么问题来了,主机 C 如何知道该数据是发送给自己的,自己要接受?而主机 B,D,E 又如何知道该数据并不是发送给自己的,自己应该拒绝呢?这就很自然地引出了 如何标识网络中各主机的问题(主机编址问题,例如 MAC 地址)。
主机在发送数据时,应该给数据附加上目的地址,当其他主机收到之后,根据目的地址和自身地址,来决定是否接受数据。这就又引出了一个问题:目的主机从信号所表示的一连串比特流中区分出地址和数据,也就是需要解决分组的封装格式问题。
另外,对于总线型网络,还会出现下面这种典型的问题。例如,在某个时刻总线是空闲的,也就是没有主机使用总线来发送数据。片刻之后,主机 B 和 D 同时向总线发送数据,这必然会造成信号碰撞。因此,如何协调各主机争用总线,也是必须要解决的问题。
需要说明的是,这种总线型的网络早已淘汰,现在常用的是使用 以太网交换机 将多台主机互相形成的 交换式以太网。
那么,以太网交换机是如何实现的呢?我们将这些问题,全部划归到 数据链路层。到这里,大家可能会发现,只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了。
2.3、网路层
网络层(Network Layer):这一层负责网络中不同设备之间的寻址和路由,以确定数据在网络中的最佳路径。
我们每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层还是不能正常工作。我们来看下面这个例子,这是由 3 个路由器,4 个网络互连起来的小型互连网,我们可以把它看作是因特网中很小的一部分。
在之前的例子中,只有一个网络,我们不需要对网络进行标识。而在本例中,有多个网络,很显然,我们面临着 如何标识 “各网络” 以及 “网络中各主机” 的问题(网络和主机共同编址问题,例如 IP 地址)。
例如,这是网络 N1 中各设备的 IP 地址。该类 IP 地址的前三个十进制数用来标识网络,第四个十进制数用来标识主机。
我们在来看另外一个问题,源主机与目的主机之间的传输路径往往不止一条,分组从源主机到目的主机可走不同的路径。这样就引出了路由器如何转发分组的问题 ,以及如何进行路由选择的问题 。我们将这些问题全部划分到 网络层。
2.4、运输层
传输层(Transport Layer):传输层提供端到端的通信,负责将数据分割为较小的数据段,并提供流量控制和可靠性保证,例如通过TCP(传输控制协议)实现的可靠数据传输。
如果我们解决了物理层、数据链路层以及网络层各自的问题,则可以实现分组在网络间传输的问题。但是,对于计算机网络应用而言,这仍然不够。例如,假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程,另一个是 QQ 进程。这台服务器中运行着与网络通信相关的服务器进程。
某个时刻,主机收到了来自服务器的分组,那么,这些分组应该交给浏览器进程处理呢,还是应该交给 QQ 进程处理呢?这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题。
另外,如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组,这应该如何处理呢?我们将这些问题都全部划归到 运输层。
2.5、应用层
我们已经解决了物理层,数据链路层,网络层和传输层各自的问题,则可以实现进程之间基于网络的通信。在此基础上,只需制定各种应用层协议,并按协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。例如,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议,支持文件传送的 FTP 协议,我们将这些问题全部划分到应用层。
至此,我们将实现计算机网络所需要解决的各种主要问题,分别划归到了 物理层、数据链路层、网络层、运输层 和 应用层,进而构成了五层协议体系的原理体系结构。
3、计算机网络体系结构中的专业术语
(1)实体:任何可发送或接收信息的硬件或软件进程
(2)对等实体:收发双方相同层次中的实体
(3)协议的三要素
① 语法:定义所交换信息的格式
② 语义:定义收发双方所要完成的操作
例如,主机要访问远程 Web 服务器,他会构建一个 HTTP 的 GET 请求报文,然后将其发送给 Web 服务器。
Web 服务器收到该报文并进行解析,知道这是一个 HTTP 的 GET 请求报文,于是就在自身内部查找所请求的内容,并将所找到的内容封装在一个 HTTP 响应报文中发回给主机。
主机收到 HTTP 响应报文后,对其进行解析,取出所请求的内容,并由浏览器解析显示。这个例子就可以体现出通信双方收到分组后完成怎么样的操作。这是 HTTP 协议的语义所定义的。
③ 同步:定义收发双方的时序关系
请注意,这里的同步并不是指时钟频率同步。例如,这是 TCP 采用 “三报文握手” 建立连接的过程。要想进行运输层 TCP 实体间的逻辑通信,首先,必须建立连接。从连接建立的过程就可以看出 TCP 客户端和 TCP 服务器之间的时序关系,以及各自的状态转换。只有双方建立连接后,才能进行 TCP 数据传输。这个例子可以充分体现计算机网络协议三要素中的同步。
(4)服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。协议是 “水平的”,服务是 “垂直的” 。
实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是 “透明” 的。
(5)服务访问点
在同一系统中 相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
① 数据链路层的服务访问点为帧的 “类型” 字段
② 网络层的服务访问点为 IP 数据报首部中的 “协议字段” 。
③ 运输层的服务访问点为 “端口号” 。
(6)服务原语
上层使用下层所提供的服务必须通过与下层 交换一些命令,这些命令称为服务原语。
(7)数据单元
① 协议数据单元 PDU
在计算机网络体系结构中,对通信双方所交互的数据包有专门的术语。我们把 对等层次之间传送的数据包 称为该层的协议数据单元。
② 服务数据单元 SDU
同一系统内,层与层之间交换的数据包 称为服务数据单元。
③ 多个 SDU 可以合成为一个 PDU;一个 SDU 也可划分为几个 PDU
4、总结
本期的分享总结就到这里了,如果有疑问的小伙伴儿,我们在评论区交流嗷~~~,笔者必回,我们下期再见啦 !!!
博客中难免存在疏漏和错误之处,皆归因于作者水平有限,诚请各位读者不吝指正 !
<计算机网络> 专栏系列持续更新,欢迎订阅关注 !
相关文章:

【计算机网络】第 3 课 - 计算机网络体系结构
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、常见的计算机网络体系结构 2、计算机网络体系结构分层的必要性 2.1、物理层 2.2、数据链路层 2.3、网路层 2.4、运输层 2…...

精细呵护:如何维护自己的电脑,提升性能和寿命
导语: 在当今数字化时代,电脑已经成为我们日常生活和工作的必需品。然而,就像任何其他设备一样,电脑需要得到适当的维护和保养,以保持良好的性能和延长使用寿命。在本文中,我们将分享一些简单而有效的方法&…...

DevOps-Jenkins
Jenkins Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 官网 应用场景 场景一 研发人员上传开发好的代码到github代码仓库需要将代码下载nginx服务器部署手动下载再…...

Jasper裁员,成也GPT,败也GPT
大家好! 我是老洪。 今天来聊一聊人工智能(artificial intelligence),简称AI。 当前的AI可谓是热火朝天, 自从ChatGPT发布以来,引起了广泛的关注和热情, 许多公司和研究者都试图将其应用于自己的产品或研究中。 按理说…...

安卓开发后台应用周期循环获取位置信息上报服务器
问题背景 最近有需求,在APP启动后,退到后台,还要能实现周期获取位置信息上报服务器,研究了一下实现方案。 问题分析 一、APP退到后台后网络请求实现 APP退到后台后,实现周期循环发送网络请求。目前尝试了两种方案是…...

为什么你的独立站有流量没转化?如何做诊断检查?
新店的创业初期,即使网站有流量,但是销售额为零的情况也常有发生。如果你确定流量是高质量的,寻找阻止潜在客户购买的具体因素可能会感到困难重重。 从“立即购买”按钮的色彩选择这样的细节,到构建品牌故事这样的大计划…...

【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程
【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程 文章目录 【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程前言确定版本对应关系源码编译安装Pytorch3d总结 前言 本人windows10下使用【Code for Neural Reflectance Surfaces (NeRS)】算法时需要搭…...

【算法和数据结构】257、LeetCode二叉树的所有路径
文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:首先看这道题的输出结果,是前序遍历。然后需要找到从根节点到叶子节点的所有路径ÿ…...

yolov5的后处理解析
由于最近实习项目使用到了yolov5, 发现对yolov5的后处理部分不太熟悉,为防止忘记,这里简单做个记录。 在yolov5里,利用FPN特征金字塔,可以得到三个加强特征层,每一个特征层上每一个特征点存在3个先验框&am…...

Java中注解应用场景
1.Parameter注解 Parameter(names "-browser", description "browser name, supported scope [chrome]", required true) Param注解的用法解析_parameter_fFee-ops的博客-CSDN博客 Public User selectUser(param(“userName”) String name, param(“…...

verilog
数据类型 reg reg [3:0] counter; counter是一个寄存器,这个寄存器有4bit大小; reg [3:0] byte1 [7:0]; 有8个寄存器,每个4bit大小; wire 有符号整数 interge 无符号 reg clk_temp (小数)verilog中称实数…...

基于springboot+mybatis+vue进销存管理信息系统
基于springbootmybatisvue进销存管理信息系统 一、系统介绍二、功能展示1.个人中心2.企业信息管理3.商品信息管理4.客户信息管理5.入库记录管理6.出库记录管理7.出库记录管理8.操作日志管理9.库存盘点管理 四、获取源码 一、系统介绍 系统主要功能: 普通用户&#…...

Keepalived 在CentOS安装
下载 有两种下载方式,一种为yum源下载,另一种通过源代码下载,本文章使用源代码编译下载。 官网下载地址:https://www.keepalived.org/download.html wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz --no-…...

Lua语法学习
Lua 文章目录 Lua变量数据类型nilbooleanstringtable 循环if函数运算符Table -- Events local StateEvents ReplicatedStorage:WaitForChild("StateEvents"); local AddMoneyEvent StateEvents:WaitForChild("AddMoneyEvent");AddMoneyEvent:FireServer(…...

【Ajax】笔记-jsonp实现原理
JSONP JSONP是什么 JSONP(JSON With Padding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明才智开发出来的,只支持get请求。JSONP 怎么工作的? 在网页有一些标签天生具有跨域能力,比如:img link iframe script. …...

LLM - Chinese-Llama-2-7b 初体验
目录 一.引言 二.模型下载 三.快速测试 四.训练数据 五.总结 一.引言 自打 LLama-2 发布后就一直在等大佬们发布 LLama-2 的适配中文版,也是这几天蹲到了一版由 LinkSoul 发布的 Chinese-Llama-2-7b,其共发布了一个常规版本和一个 4-bit 的量化版本…...

transformer代码注解
其中代码均来自李沐老师的动手学pytorch中。 class PositionWiseFFN(nn.Module):ffn_num_inputs 4ffn_num_hiddens 4ffn_num_outputs 8def __init__(self,ffn_num_inputs,ffn_num_hiddens,ffn_num_outputs):super(PositionWiseFFN,self).__init__()self.dense1 nn.Linear(ffn…...

【产品经理】高阶产品如何处理需求?(3方法论+2案例+1清单)
不管你是萌新小白,还是工作了几年的“老油条”,需求一直是产品经理工作的重点。只不过,不同年限的产品经理需要面对的需求大有不同,对能力的要求更高。 不知你是否遇过以下问题? 你接手一个项目后,不知从何…...

Neo4j数据库中导入CSV示例数据
本文简要介绍Neo4j数据库以及如何从CSV文件中导入示例数据,方便我们快速学习测试图数据库。首先介绍简单数据模型以及基本图查询概念,然后通过LOAD CSV命令导入数据,生成节点和关系。 环境准备 读者可以快速安装Neo4j Desktop,启…...

第四章 No.1树状数组的原理与使用
文章目录 应用问题原理树状数组练习题241. 楼兰图腾242. 一个简单的整数问题243. 一个简单的整数问题2244. 谜一样的牛 线段树的反面:树状数组原理复杂,实现简单 应用问题 支持两个操作:快速求前缀和任意地修改某个数,时间复杂度…...

mysql(五)主从配置
目录 前言 一、MySQL Replication概述 二、MySQL复制类型 三、部署MySQL主从异步复制 总结 前言 为了实现MySQL的读写分离,可以使用MySQL官方提供的工具和技术,如MySQL Replication(复制)、MySQL Group Replication(组…...

扫地机语音提示芯片,智能家居语音交互首选方案,WT588F02B-8S
智能家居已经成为现代家庭不可或缺的一部分,而语音交互技术正是智能家居的核心。在智能家居设备中,扫地机无疑是最受欢迎的产品之一。然而,要实现一个更智能的扫地机,需要一颗语音提示芯片,以提供高质量的语音交互体验…...

ChatGPT | 分割Word文字及表格,优化文本分析
知识库读取Word内容时,由于embedding切片操作,可能会出现表格被分割成多个切片的情况。这种切片方式可能导致“列名栏”和“内容栏”之间的Y轴关系链断裂,从而无法准确地确定每一列的数据对应关系,从而使得无法准确知道每一列的数…...

基于JavaSE的手机库存管理系统
1、项目背景 基于JavaSE完成如下需求: 功能需求: 1、查询库存量 2、可以修改库存中不同品牌手机的个数 3、退出系统 实现步骤: 1、把List当做库房 2、把手机存放在库房中 3、使用封装的方法区操作仓库中的手机 2、项目知识点 面向对象 集合…...

驱动开发 day4 (led灯组分块驱动)
//编译驱动(注意Makefile的编译到移植到开发板的内核) make archarm //清除编译生成文件 make clean //安装驱动 insmod mycdev.ko //卸载驱动 rmmod mycdev //编译fun.c 函数(用到交叉工具编译) arm-linux-gnueabihf-gcc fun.c head.h #ifndef __HEAD_H__ #define __HEAD_H__…...

electron dialog.showMessageBox使用案例
electron 版本:25.3.1 index.html <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>Hello World!</title><meta http-equiv"Content-Security-Policy" content"script-src self unsa…...

代码随想录算法训练营第二十二天 | 读PDF复习环节2
读PDF复习环节2 本博客的内容只是做一个大概的记录,整个PDF看下来,内容上是不如代码随想录网站上的文章全面的,并且PDF中有些地方的描述,是很让我疑惑的,在困扰我很久后,无意间发现,其网站上的讲…...

TimescaleDB时序数据库初识
注:本文翻译自https://legacy-docs.timescale.com/v1.7/introduction TimescaleDB是一个开源时间序列数据库,针对快速摄取和复杂查询进行了优化。它说的是“完整的SQL”,因此像传统的关系数据库一样易于使用,并且以以前为NoSQL数…...

Numpy-聚合函数
NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。 函数名说明np.sum()求和np.prod()所有元素相乘np.mean()平均值np.std()标准差np.var()方差np.median()中位数np.power()幂运算np.sqrt()开方np.min()最小…...

企业博客资讯如何高效运营起来?
运营一个高效的企业博客资讯需要综合考虑多个因素,包括内容策划、发布频率、优化推广、互动反馈等。下面将从这些方面介绍如何高效运营企业博客资讯。 如何高效运营企业博客资讯 内容策划 首先,需要制定一个明确的内容策略。确定博客的定位和目标受众…...