一.网络基础——OSI七层模型

一.OSI七层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型被称为开放式系统互联参考模型,它是一个逻辑上的定义和规范;
它把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整.
通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
在这里插入图片描述

二.OSI七层模型(TCP/IP协议)

但是, OSI七层网络模型虽然设计非常完善,但它在实际生活中,既复杂又不实用; 所以我们一般都是用TCP/IP四层模型来讲解
将最上面三层合并为一层——应用层,并将最下面的两层合并为另外新的一层——网络接口层
在这里插入图片描述

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求

物理层:

负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

数据链路层:

负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太
网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

网络层:

负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层:

负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

应用层:

负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
那总共五层,为什么一般称为TCP/IP四层模型呢?
原因在于物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型

三.系统与网络之间的关系

但是,估计所有人看完上面的分层依旧是一头雾水,什么是分层呢?它又怎么和操作系统OS扯上联系?
首先,为什么会出现网络?
因为两台主机,假如距离很近,比如都在同一个宿舍,其实只要一条数据线,将两部电脑连接在一起,就可以相互通信了
本质的原因就在于距离,距离变长了,而我们又想要或者需要两台主机进行通信(数据传送),提高协同效率,所以网络的诞生是非常自然的
那网络通信会有哪些需求需要解决呢?

1.长距离传输,数据异常的问题(丢失)
2.定义一台主机的问题(为什么我是向你发消息,而不是其他人)
3.怎么进行数据转发,路径选择的问题(中间节点是谁?)
4.010101硬件级别的协议

而这些问题出现的本质也是传输距离变长所导致的
因为出现不同的需求,其实也就是不同性质的问题,所以针对不同相似的问题,我们要给出对应的解决方案
于是才出现了层的概念
每一层解决的都是相似的问题,这就是我们所说的高内聚
并且我们还可以发现,上述问题其实也是互相关联的,更进一步说,应该是有先后上下的结构
比如说我先要完成长距离传输,数据异常的问题,可以将数据安全送达给对面,我们才可以考虑路径转发的问题,不然考虑路径转发毫无意义.
所以层与层之间有上下,不同层解决不同的问题,这就是我们说的低耦合
而这样的分层的操作其实我们早就做过了,在C++中,一切皆基类,继承体系的本质,何尝不是一种软件形式上的分层呢?
分成不同类后,不同类只要提供对应的接口,就可以完成类与类之间的交互
(分层后,只要提供对应的接口,就可以实现层与层之间的交互)
每一个类都只关心自己该类所要实现的功能,并且只使用继承自上层类的接口
(软件分层之后,每一层都只关心自己同层的功能,只使用来自下层的接口)
任何类出现问题,都不会直接影响另一个类,减少后期开发者成本,做到真正的高内聚,低耦合
(任何一层出现问题,都不会直接影响另外一层)
所以分层其实是一种思想,有点像我们老祖宗所说的,分而治之,各个击破
那怎么又扯到OS操作系统呢?
最简单通俗的说,我们所学的TCP/IP协议,它就是在OS内部自己实现的
网络传输是OS一个很重要的功能,我们要学习的网络,本质其实是操作系统的一部分,前者TCP协议对应传输层,后者IP协议对应网络层
网络和操作系统不分家,两者是一一对应的
图来自2021dragon博主
在这里插入图片描述
我们上层用户在应用层调用相应下层为我们提供好的系统接口,编写好我们自己的代码,比如各种客户端等等,会向下继续交付
OS操作系统替我们继续完成对数据的封装(应用层)
在传输层有对应的协议,对数据要进行怎样的封装,并采取对应的策略保证数据可靠的传输(传输层)
在网络层有对应的协议,对数据要进行怎样的封装,并采取对应的策略策略选择对应的中间节点路径,去到对面(网络层)
直到数据到达最下面的数据链路层,继续对数据封装,linux下一切皆文件,在Linux操作系统眼里,网卡也是文件,通过文件系统,对网卡进行管理
执行对应的网卡驱动程序,驱动硬件网卡将我们的数据报文发出,并采取对应的策略保证在同一个局域网内,两台主机可以互相进行通信(数据链路层)
唯一有所不同的是,操作系统可能种类有很多,但是网络只能有一种,可能实现的方式不同,但是不同层所实现的功能和目的是相同的!这是一种约定,更规范来说,这是一种协议

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot高手之路04-Aop

文章目录 AOP 基础AOP概述start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖都会下载下来 AOP快速入门AOP核心概念 切入点表达式-execution AOP 基础 AOP概述 AOP 对特定的方法做增强 AOP 快速入门 start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖…

python数据文件处理库-pandas

内容目录 一、pandas介绍二、数据加载和写出三、数据清洗四、数据转换五、数据查询和筛选六、数据统计七、数据可视化 pandas 是一个 Python提供的快速、灵活的数据结构处理包,让“关系型”或“标记型”数据的交互既简单又直观。 官网地址: https://pandas.pydata.o…

Polar Web 【简单】- 被黑掉的站

Polar Web 【简单】- 被黑掉的站 Contents Polar Web 【简单】- 被黑掉的站思路EXP运行&总结 思路 如题目所述,这是一个被黑掉的站点,由此不禁要了解该黑客发现了哪些可以入手的路径,或是留下了什么样的文件供持续访问。 目录扫描该站点发…

AI和机器人引领新一轮农业革命

AI和机器人技术在农业领域的应用正在迅速发展,未来它们可能会实现厘米级精度的自主耕作。 精确种植:AI算法可以分析土壤条件、气候数据和作物生长周期,以决定最佳种植地点和时间。 土壤管理:利用传感器和机器学习,机器…

Windows安装运行elasticsearch服务

官方下载地址:Download Elasticsearch | Elastic 我在linux上执行的下载命令:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_64.tar.gz Elasticsearch(简称ES)是一款基于Apache Lu…

JVM学习-Arthas

Arthas Alibaba开源的Java诊断工具,在线排查问题,无需重启,动态跟踪Java代码,实时监控JVM状态Arthas支持JDK6,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能&#…

前端传参数后端变量类型能够接受到List却无法接收到值

问题描述 今天写了个接口,下图所示 ReqVO里是这样的: 然后前端去请求,从请求结果中看发现这里值是在的(有经验的可能就看出来了otherInfo.id: 这样以参数后端是接收不到的,但是当时没发现) 传进来后端…

【cmake】cmake cache

cmake cache是什么 cmake cache是cmake在配置好后生成的一个CMakeCache.txt的文件,里面存储了一堆变量,这些变量一般都是关于项目的配置和环境的。 比如你用的什么编译器,编译器选项,还有项目目录。 例如(在cmakelist…

uniAPP @input时报错

<input :maxlength"8" v-model"item.value" placeholder"请输入金额" input"inputFn" /> 这些些时会报以下错误 定位了好久之后发现input不支持 v-model和input一起使用 改成以下这般就正常啦 <input :maxlength"8&q…

【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5(下)

【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5&#xff08;下&#xff09; 一、导出数据&#xff08;2022中文版案例&#xff09;二、安装datasmith插件三、导入数据四、检查导入材质是否正常五、编辑替换材质六、安装模型编辑插件七、编辑替换建筑规则 一、导出数…

⌈ 传知代码 ⌋ 辅助任务改进社交帖子多模态分类

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

WPS表格插件方方格子【凑数】功能:选出和等于固定数字的数

文章目录 后来发现可以下载方方格子插件&#xff0c;使用【凑数】功能https://ffcell.lanzouj.com/iwhfc1kjhayh【凑数】快速【凑数】 导师让沾发票&#xff0c;需要选出若干个数额的发票&#xff0c;使它们的和等于一个指定数。不知道怎么办了&#xff0c;查了一下&#xff0c…

实验9 浮动静态路由配置

--名称-- 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 浮动静态路由也是一种特殊的静态路由&#xff0c;主要考虑链路冗余。浮动静态路由通过配置一条比主路由优先级低的静态路由&#xff0c;用于保证在主路由失效的情况下&#xff0c;…

为什么我们需要在软件本地化过程中使用术语服务?

你知道软件翻译和本地化的术语服务吗&#xff1f;此解决方案涵盖源术语和目标术语的创建、开发和维护。所有术语都存储在具有多个字段的数据库中&#xff0c;包括术语定义、用法示例、上下文和历史记录。这使我们能够正确处理每个术语的创建或更改请求&#xff0c;避免创建重复…

orbslam2代码解读(1):数据预处理过程

写orbslam2代码解读文章的初衷 首先最近陆陆续续花了一两周时间学习视觉slam&#xff0c;因为之前主要是做激光slam&#xff0c;有一定基础所以学的也比较快&#xff0c;也是看完了视觉14讲的后端后直接看orbslam2的课&#xff0c;看的cvlife的课&#xff08;课里大部分是代码…

SpringBoot+Vue校园管理系统(前后端分离)

技术栈 JavaSpringBootMavenMyBatisMySQLVueElement-UIShiro 系统角色 管理员用户院系管理员 系统功能截图

OrangePi KunPengPro | linux系统下挂载U盘

OrangePi KunPengPro | linux系统下挂载U盘 时间&#xff1a;2024年6月6日21:32:53 文章目录 OrangePi KunPengPro | linux系统下挂载U盘1.参考2.操作fdisk -l 列出系统上所有磁盘的分区表信息将 /dev/sda1 分区挂载到 /mnt/udisk/ 目录显示文件系统的磁盘空间使用情况卸载文件…

LeetCode-704. 二分查找【数组 二分查找】

LeetCode-704. 二分查找【数组 二分查找】 题目描述&#xff1a;解题思路一&#xff1a;注意开区间和闭区间背诵版&#xff1a;解题思路三&#xff1a; 题目描述&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xf…

27 - 求关注者的数量(高频 SQL 50 题基础版)

27 - 求关注者的数量 selectuser_id,count(*) followers_count fromFollowers group byuser_id;

使用Vue.js将form表单传递到后端

一.form表单 <form submit.prevent"submitForm"></form> form表单像这样写出来&#xff0c;然后把需要用户填写的内容写在form表单内。 二.表单内数据绑定 <div class"input-container"><div style"margin-left: 9px;"&…