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

计算机网络——计算机网络体系结构

计算机网络——计算机网络体系结构

  • 计算机网络体系结构的由来
  • 正确认识分层
  • 协议与层次划分
  • 著名的几个体系结构
    • OSI体系结构
    • TCP/IP体系结构
    • 5层体系结构

我们今天来了解一下计算机网络体系结构:

计算机网络体系结构的由来

俗话说,“没有规矩,不成方圆”,我们有了互联网,可以上网,但是这个时候大家是没有遵守任何规则,这就会导致这个互联网的生态乱成一锅粥,此时我们急需制定一些大家都接受的规则,方便大家进行信息传输。

我们先从最简单的开始,两台电脑之间的传输,除了最基本的数据通路之外,还要满足以下规则:

(1) 必须有一条传送数据的通路
(2) 发起方必须激活通路
(3) 要告诉网络如何识别接收方
(4) 发起方要清楚对方是否已开机,且与网络连接正常
(5) 发起方要清楚对方是否准备好接收和存储文件
(6) 若文件格式不兼容,要完成格式的转换
(7) 要处理各种差错和意外事故,保证收到正确的文件

我们发现我们要解决的各个问题,相对比较独立,所以我们可以将各个问题封装分层,一层解决一类问题,这就是之后各种架构的思想来源。

我们划分的层要满足以下特点:

1.各层之间相互独立,每层之间实现一种相对独立的功能
2.每层之间界面自然清晰,易于理解,相互交流尽可能少
3.结构上可分开。每层采用最适合的技术实现
4.保持下层对上层的独立性上层单向使用下层提供的服务
5.整个分层结构能促进标准化工作

分层带来了许多好处:

简化复杂性:通过将整个系统划分为多个独立的层次,每个层次只关注其特定的功能和任务,从而降低了系统的复杂性。这使得开发人员可以更容易地理解和处理每一层的问题,提高了工作效率。
灵活性:分层结构允许各层之间保持松散的耦合关系。这意味着当某一层发生变化时,只要其接口关系保持不变,其他层就不会受到影响。这种灵活性使得系统更容易适应变化,减少了级联修改的可能性。
标准化:分层结构促进了标准化工作。每个层次都可以遵循统一的规范和标准,从而确保整个系统的兼容性和互操作性。
可复用性:由于各层之间的独立性,某一层的实现可以被其他层复用,提高了代码的复用率。这不仅可以减少开发工作量,还可以提高系统的稳定性和可靠性。
分工明确:分层结构使得开发人员的分工更加明确。每个开发人员可以专注于某一层的开发,而不需要关心其他层的实现细节。这有助于降低沟通成本,提高开发效率。

正确认识分层

在这里插入图片描述

1.实体:第n层的活动元素称为第n层实体,同一层的实体叫做对等实体
2.协议
3.接口(访问服务SAP):上层使用下层服务的接口
4. 服务:下层为相邻上层提供的功能调用

还有几个术语:

  1. SDU服务数据单元:为完成用户所要求的的功能而应传输的数据
  2. PCI协议数据单元:控制协议操作的信息(头,附加信息)
  3. PDU = PCI +SDU 对等层之间传送的数据单位

协议与层次划分

在计算机网络中要做到有条不紊的交换数据,就必须遵守一些事先约定好的约定,这些规定规定了所交换的数据的格式以及有关的同步问题,为进行网络中的数据交换而建立的规则,标准或约定称为网络协议

网络协议三个组成要素:

语法:数据与控制信息的结构或格式 。
语义:需要发出何种控制信息,完成何种动作以及做出何种响应。
同步:事件实现顺序的详细说明。

这些是比较出名的协议:

IP协议(Internet Protocol,因特网互联协议):是TCP/IP协议族的核心协议之一,负责为计算机之间的通信提供可靠的、无连接的、尽最大努力的数据包传输服务。
TCP协议(Transmission Control Protocol,传输控制协议):与IP协议配合使用,提供面向连接的、可靠的、基于字节流的通信服务。它确保数据在传输过程中的完整性和顺序性。
UDP协议(User Datagram Protocol,用户数据报协议):是另一种传输层协议,与TCP不同,UDP提供无连接的、不可靠的通信服务。它适用于对实时性要求较高、但对数据完整性要求不高的应用。
HTTP协议(Hyper Text Transfer Protocol,超文本传输协议):是用于分布式、协作式和超媒体信息系统的应用层协议。它是互联网上应用最为广泛的一种网络协议,用于网页浏览、文件传输等。
HTTPS协议(Secure Hypertext Transfer Protocol,安全超文本传输协议):是HTTP协议的安全版本,通过SSL/TLS对数据进行加密,确保数据传输的安全性。
FTP协议(File Transfer Protocol,文件传输协议):用于在计算机网络上进行文件传输的标准协议,允许用户从一台计算机将文件复制到另一台计算机上。
SMTP协议(Simple Mail Transfer Protocol,简单邮件传输协议):用于电子邮件的发送和接收,它规定了邮件在两台计算机之间进行传输的方式和格式。
POP3协议(Post Office Protocol 3,邮局协议第三版):用于电子邮件的接收,它允许用户从邮件服务器上下载邮件到本地计算机上。
ICMP协议(Internet Control Message Protocol,因特网控制报文协议):用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
ARP协议(Address Resolution Protocol,地址解析协议):将32位网络地址转换为低层物理网络地址(如以太网地址)。
SNMP协议(Simple Network Management Protocol,简单网络管理协议):专门设计用于在IP网络管理网络节点(如服务器、工作站、路由器、交换机等)的一种标准协议。

各个层解决的各种问题,有一部分是依赖这些协议,协议帮助我们更好更高效的解决问题,同时,协议也是每一层的重要内容。

在这里插入图片描述在这里插入图片描述

著名的几个体系结构

OSI体系结构

OSI(Open System Interconnect),即开放式系统互连,是ISO组织在1985年研究的网络互连模型。OSI参考模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

物理层:实际上是布线、光纤、网卡和其他用于将两台网络通信设备连接在一起的东西。
数据链路层:该层负责通过MAC地址(物理地址)进行寻址,并且给分组数据加上头部与尾部,形成帧。
网络层:负责在计算机网络通信中选择合适的网间路由和交换节结点,以确保数据的及时传输。
传输层:在传输层上,数据单元变为段或者报文,该层提供端到端(最终用户到最终用户)的透明、可靠的数据传输服务,并处理端到端的差错控制和流程控制问题。
会话层:在两个节点间建立端与端的连接,进行对话的连接、管理和拆除,但不参与具体的传输。
表示层:提供格式化的表示和转换数据服务,对数据进行压缩、格式转换、加密和解密等工作,解决用户信息的语法表示问题。
应用层:包含应用程序级的数据。

在这里插入图片描述
但是,注意,这个OSI提出的很好,但没被使用:
在这里插入图片描述
至于为什么嘛:

OSI的专家们缺乏实际经验:在制定OSI标准时,他们缺乏商业驱动力,导致OSI标准的制定周期过长。这使得按照OSI标准生产的设备无法及时进入市场,从而降低了其竞争力。
OSI协议实现复杂且运行效率低:OSI的七层协议体系每一层都需要对数据进行处理,这增加了通信的延迟和资源消耗。此外,每个层级都需要对数据进行封装和解封装,这造成了冗余的数据传输和额外的开销,从而降低了网络的效率。
OSI的层次划分不太合理:在OSI的层次划分中,有些功能在多个层次中重复出现,这增加了系统的复杂性和不必要的开销。
OSI缺乏灵活性和适应性:随着互联网的发展和通信需求的不断变化,OSI的固定结构限制了其在新兴应用领域的适应性和灵活性。这使得OSI难以适应不断变化的网络通信需求。

相反,是另一款层次结构,TCP/IP得到了广泛应用:

TCP/IP体系结构

TCP/IP体系结构,也被称为TCP/IP协议簇,是Transmission Control Protocol/Internet Protocol的简写,译为传输控制协议/因特网互联协议。这一体系结构为计算机网络中的数据通信提供了一套标准化的协议和规范,确保数据在传输过程中的封装、定址、传输、路由以及接收都得以正确执行。

TCP/IP体系结构主要分为四个层次,从下至上分别是:网络接口层、网际层、传输层和应用层。

网络接口层:主要负责将二进制数据转换为电信号,以便在物理网络上进行传输。尽管这一层没有直接对应的协议,但它确保了数据能够在不同的网络设备之间正确地传输。
网际层:负责主机间的数据路由和网络上数据的存储。主要协议包括IP(网间协议)和ARP(地址解析协议)。IP协议负责数据的路由和寻址,而ARP协议则将网络地址映射到硬件地址。此外,RARP(反向地址解析协议)则将硬件地址映射到网络地址。
传输层:提供端到端的通信,确保两台计算机上的软件间能够建立可靠的数据连接。主要协议有TCP(传送控制协议)和UDP(用户数据报协议)。TCP是一种可靠的全双工字节流面向连接的协议,而UDP则提供无连接的通信服务。
应用层:为用户的应用程序提供接口,使用户可以访问网络。这一层包括多种协议,如HTTP(超文本传输协议,用于网页浏览)、FTP(文件传输协议,用于文件上传和下载)、SMTP(简单邮件传输协议,用于邮件的发送和转发)等。

TCP/IP体系结构将软件通信过程抽象化为这四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。这种分层的设计使得每一层都专注于其特定的功能,从而提高了整个系统的效率和可靠性。

5层体系结构

经过了时间的检验,大家综合了OSI和TCP/IP的优点,提出了5层体系结构
五层体系结构是计算机网络中常用的一种分层模型,它主要由物理层、数据链路层、网络层、传输层和应用层五个层次组成。

物理层:物理层是五层体系结构的最低层,它主要关注数据的实际传输,包括比特流的传输和物理接口的规范。物理层定义了设备如何连接以及如何传输原始比特流,涉及的设备包括集线器和中继器等。
数据链路层:数据链路层在物理层之上,它负责将数据封装成帧,并在发送和接收端之间进行数据的可靠传输。数据链路层使用诸如CSMA/CD(载波侦听多路访问/碰撞检测)和PPP(点对点协议)等协议,以及二层交换机和网桥等设备。
网络层:网络层负责将数据包从源地址路由到目标地址。它处理的是分组交换和路由选择,确保数据包能够正确地到达目的地。网络层的主要协议是IP(网际协议),它负责数据包的寻址和路由。
传输层:传输层负责在源端和目的端之间提供可靠的、透明的数据传输服务。它处理数据的分段和重组,以及流量控制和差错控制。传输层的主要协议有TCP(传输控制协议)和UDP(用户数据报协议)。
应用层:应用层是五层体系结构的最高层,它直接为用户提供各种网络服务。应用层协议众多,如HTTP(超文本传输协议)用于网页浏览,SMTP(简单邮件传输协议)用于电子邮件的发送,FTP(文件传输协议)用于文件的上传和下载等。

接下来我们会依次介绍OSI和TCP/IP这两种网络层次模型。

相关文章:

计算机网络——计算机网络体系结构

计算机网络——计算机网络体系结构 计算机网络体系结构的由来正确认识分层协议与层次划分著名的几个体系结构OSI体系结构TCP/IP体系结构5层体系结构 我们今天来了解一下计算机网络体系结构: 计算机网络体系结构的由来 俗话说,“没有规矩,不…...

近期常用linux命令总结

linux mv [options] source dest : 移动文件 cp [options] source : 复制文件 ps -a: 列出所有进程 ps -ef | grep 进程关键字: 查找指定进程 (-e 显示所有进程 -f 全格式) docker docker images 显示所有镜像 docker pull [IMAGE_NAME] : 拉取某个镜像&#xf…...

变配电站配电监控解决方案--变电站综合自动化系统

变电站综合自动化系统 Acrel-1000变电站综合自动化监控系统是我司根据电力系统自动化及无人值守的要求,总结国内外的研究和生产的先进经验专门研制出的新一代电力监控系统。本系统具有保护、遥测、遥信、遥脉、遥调、遥控功能,可实现无人或少人值守功能…...

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/o…...

Spring 被打暴了! vs Javalin vs Solon

测试仅供参考。不同的环境、场景,效果会不同。 测试记录: 项目SpringBoot2SpringBoot3JavalinSolon运行时java 17java 17java 17java 17测试前状态/内存101.1Mb112.9Mb66.1Mb45.6Mb测试后状态/内存996.3Mb326.9Mb457.3Mb369.2Mb测试后状态/并发2万2.6万…...

IDEA中快速配置Git

Git介绍: Git下载 idea中配置Git...

vscode用SSH远程开发c语言

vscode配置远程 这里我使用虚拟机进行展示,首先需要你的虚拟机安装好ssh 没安装好就执行下面的命令安装并开启服务 sudo apt-get install ssh sudo service ssh start ps -e | grep sshvscode安装 remote-ssh扩展 点击左下角的远程连接,我这里已经连接…...

鸿蒙Next 支持数据双向绑定的组件:Checkbox--Search--TextInput

Checkbox $$语法,$$绑定的变量发生变化时,会触发UI的刷新 Entry Component struct MvvmCase { State isMarry:boolean falseStatesearchText:string build() {Grid(){GridItem(){Column(){Text("checkbox 的双向绑定")Checkbox().select($$…...

跨越时空的纽带:探索Facebook如何连接人与人

引言 Facebook作为全球最大的社交媒体平台之一,已经成为了人们日常生活中不可或缺的一部分。它不仅仅是一个社交网络,更是连接人与人、人与世界的纽带。在这篇文章中,我们将深入探讨Facebook如何跨越时空,连接人与人之间的关系&a…...

LabVIEW湍流等离子体束热效率优化

LabVIEW湍流等离子体束热效率优化 利用LabVIEW虚拟仪器技术,对湍流等离子体束的热效率进行了实时监测与优化,提高其在材料处理领域的应用效率和精度。通过双进气湍流等离子体发生器,实现了在不同工作参数下对热效率的实时在线监测&#xff0…...

21个 JVM 技术点详解(附面试解答)

最近兄弟们面试,都逃不过被 JVM 问题轰炸的命运,为啥面试官喜欢拿 JVM 说事呢?V 哥认为,除了要问倒你,就是要压你薪水,咱绝对不能怂,俗话说的好:兵来将挡,水来土掩&#…...

mysql逗号分隔字段拆成行简述

概述 在实际业务中总有一些字段内容是逗号分隔的,然后后续业务需要扩展时就很难受; 所以一般在这种情况下都是需要建立关联表,将字段内容拆分; 当前使用mysql版本 8.0.32 拆分demo 这里要注意mysql.help_topic表的记录行数&a…...

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容:修复播放器接口问题,把接口本地化,但是集成外链播放器接口就不本地化了,我花钱找人写的理解下…...

golang 操作redis

1. redis操作需要引入 github.com/gomodule/redigo/redis 包 go get github.com/gomodule/redigo/redis 2.封装redis操作对象,使用时便可调用 redis的 地址、端口、密码 放配置文件,用config获取即可 package databaseimport ("gin/config"…...

macOS - 获取硬件设备信息

文章目录 1、CPU获取方式 一: system_profiler获取方式二:sysctl, machdepmachdep 2、内存3、硬盘4、显卡5、声卡6、光驱7、系统序列号8、型号标识符9、UUID 等信息 10. 计算机名称 1、CPU 获取方式 一: system_profiler % syst…...

突破编程_C++_STL教程( queue 的基础知识)

1 std::queue 概述 std::queue 是 C 标准模板库(STL)中的一种容器适配器,它提供了队列(Queue)这种数据结构的功能。队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作…...

Hystrix 容错机制数据监控可视界面无法加载

在微服务项目中创建一个Hystrix模块配置好pom和yml文件但是在加载可视化界面的时候报如下问题 第一个界面报的错误 第二个界面报错误 熔断监控图形化界面报错Unable to connect to Command Metric Stream 解决方案 在yml文件在加如下代码 代码块 hystrix:dashboard:proxy…...

【Java】POI解析excel

一、相关介绍 POI技术 Apache POI是Apache软件基金会的开放源码函式库&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 poi-ooxml能解析xls&#xff0c;xlsx。 poi能解析word、ppt、excel、xml等office软件 导入坐标&#xff1a; <depende…...

AI浸入社交领域,泛娱乐APP如何抓住新风口?

2023年是大模型技术蓬勃发展的一年&#xff0c;自ChatGPT以惊艳姿态亮相以来&#xff0c;同年年底多模态大模型技术在国内及全球范围内的全面爆发&#xff0c;即模型能够理解并生成包括文本、图像、视频、音频等多种类型的内容。例如&#xff0c;基于大模型的文本到图像生成工具…...

遥感图像地物分类流程

遥感图像地物分类流程 1. 制作标签 使用arcgis pro或者arcgis或者envi&#xff0c;画标签&#xff0c;保存为tiff格式 2. 处理标签数据 用python gdal库安装 osgdal库&#xff0c;如果安装失败就需要下载 对应库得 .whl去安装&#xff0c;网站具体搞忘了&#xff0c;可以百…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...