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

news2025/4/17 2:29:45

一.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操作系统眼里,网卡也是文件,通过文件系统,对网卡进行管理
执行对应的网卡驱动程序,驱动硬件网卡将我们的数据报文发出,并采取对应的策略保证在同一个局域网内,两台主机可以互相进行通信(数据链路层)
唯一有所不同的是,操作系统可能种类有很多,但是网络只能有一种,可能实现的方式不同,但是不同层所实现的功能和目的是相同的!这是一种约定,更规范来说,这是一种协议

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据集][目标检测]焊接处缺陷检测数据集VOC+YOLO格式3400张8类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3400 标注数量(xml文件个数):3400 标注数量(txt文件个数):3400 标注…

FFmpeg播放器的相关概念【1】

播放器框架 相关术语 •容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。 • 媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、一段…

6.6学习总结

一.算法练习(Codeforces Round 949 (Div. 2)和) B. Turtle and an Infinite Sequence 思路:对于数字而言,轮之后的结果是所有数的或。因此只需要求区间或就行了。(其实就是找区间左边界,二进制中的特殊位置,将后面的所有位都变成1,最后输出结果) 代码实…

关于计算机是如何工作的

计算机的发展历程 世界上的第一个计算机 冯诺依曼机构体系 1.存储器 (包括内存(存储空间小,访问速度快,成本高,掉电后数据丢失) 外存(硬盘,软盘,U盘,光盘)),存储空间小,访问速度慢,成本低,掉电后数据仍在 2.CPU(中央处理单元,计算机最核心的部分,用于算术运算和逻辑判断),…

【ARM Cache 及 MMU 系列文章 6.2 -- ARMv8/v9 Cache 内部数据读取方法详细介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Direct access to internal memoryL1 cache encodingsL1 Cache Data 寄存器Cache 数据读取代码实现Direct access to internal memory 在ARMv8架构中,缓存(Cache)是用来加速数据访…

算法金 | 再见!!!KNN

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 KNN算法的工作原理简单直观,易于理解和实现,这使得它在各种应用场景中备受青睐。 我们将深入探讨KNN算法&…

带你了解消防安全与应急救援,2024北京消防展6月盛大开启

带你了解消防安全与应急救援,2024北京国际消防展6.26盛大开启 在日益关注安全问题的今天,消防安全与应急救援已经成为社会发展的重要一环。为了提高全民消防安全意识,推动应急救援技术的发展,2024年北京国际消防展将于6月26日盛大…

Docker自定义镜像实现(SpringBoot程序为例)

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。🍎个人主页:Meteors.的博客💞当前专栏:知识备份✨特色专栏:知识分享&#x1f96…

【窗口函数的详细使用】

前言: 💞💞大家好,我是书生♡,今天主要和大家分享一下可MySQL中的窗口函数的概念,语法以及常用的窗口函数,希望对大家有所帮助。感谢大家关注点赞。 💞💞前路漫漫,希望大…

(面试官问我微服务与naocs的使用我回答了如下,面试官让我回去等通知)微服务拆分与nacos的配置使用

微服务架构 正常的小项目就是所有的功能集成在一个模块中,这样代码之间不仅非常耦合,而且修改处理的时候也非常的麻烦,应对高并发时也不好处理,所以 我们可以使用微服务架构,对项目进行模块之间的拆分,每一…

Nacos服务管理

1.前言 在当前的分布式系统和微服务架构中,服务发现和管理变得至关重要。Nacos(NAme COntrol Service)作为一个开源的动态服务发现、配置管理和服务管理平台,为解决这些挑战提供了一站式的解决方案。其提供的负载均衡、分环境管理…

接口自动化框架封装思想建立(全)

httprunner框架(上) 一、什么是Httprunner? 1.httprunner是一个面向http协议的通用测试框架,以前比较流行的是2.X版本。 2.他的思想是只需要维护yaml/json文件就可以实现接口自动化测试,性能测试,线上监…

elementplu父级页面怎么使用封装子组件原组件的方法

一、使用原因: 封装了el-table,表格中有多选,父级要根据指定状态,让其选择不上,需要用到elementplus中table原方法toggleRowSelection 附加小知识点:(el-tree刷新树后之前选中的保持高亮setCurr…

【荒原之梦考研数学】感谢 CSDN 的小伙伴们

自 2016 年在 CSDN 上开设账号至今,荒原之梦网获得了很多同学们的支持和肯定,以及意见或建议,荒原之梦网一路走来,是大家给予了我们不断前进的动力。 当前这个 CSDN 账号,是荒原之梦考研数学网目前在 CSDN 的第一个也…

css 中clip 属性和替代方案 clip-path属性使用

clip clip 属性概述 作用:clip 属性用于定义一个裁剪区域,该区域外的元素内容将不可见。适用元素:clip 属性只对绝对定位(position: absolute)或固定定位(position: fixed)的元素有效&#xf…

JVM学习-Arthas

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

MogoTemplate基本入门(Mongodb数据库基本增删改查)

nosql 因为没有标准的 sql,各有各的操作方式,所以学习成本比较高。实际应用也不会去命令行直接操作,而是用编程语言的 api。 所以我们可以简单了解一下Mongodb,然后用java的Api去操作就行了 没必要花很大功夫在命令行上操作执行…

创意SQL,高考祝福!一起为学子们加油助威!

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

rman恢复后,少部分数据文件状态为MISSING000**

客户有套一体机,每天晚上21点开始做rman完全备份,大约第2天上午9点多完成备份,rman备份保留策略保留一份完全备份 6月1日晚21点自动发起备份,6月2日上午10点15分完成备份,并生成了一个控制文件备份 c-4063271871-2024…

Navicat修改数据库主键

在MySQL数据库,主键ID默认自增(最大的数字自增),但是,在某些情况下,我们想将其从头开始………… 借助Navicat修改数据库主键即可! 1. 找到数据库,点击需要更改的表:点击…