OSI七层协议——分层网络协议

embedded/2025/1/18 1:34:34/

OSI七层协议,顾名思义,分为七层,实际上七层是不存在的,是人为的进行划分,让人更好的理解
在这里插入图片描述
七层协议包括,物理层(我),数据链路层(据),网络层(网),传输层(传输),会话层(会),表示层(表),应用层(用)(记忆口诀->我会用表传输网据)

五层协议,物理层,数据链路层,网络层,传输层,应用层

四层协议,网络接口层(口),网络层(网),传输层(传输),应用层(用)(记忆口诀->用传输网口)

物理层

字面意思就是物理特性,物理传输,硬件的意思,正如我们打电话,必须有网线连接,才能打电话,正如计算机之间进行通讯,而网线传输就是电信号,如10101010,这样的二进制数据,当然我们知道电信号一串数字传输过去,根本就不知道这些二进制是什么意思,所以我们要定义一个规则即协议,比如8位为一组,但是这不是在物理层能干的事情,要在数据链路层

数据链路层

数据链路层,定义了一种协议就是我们经常说的,以太网协议Ethernet,他把电信号分为一组,就是我们经常说的数据包,也叫做帧,每一帧由两部分组成,头和数据
在这里插入图片描述
首先,我们在发送数据包的的过程,就如我们写信一样,我们必须知道我们的地址和对方的地址,才能进行发送信息,而计算的的地址就是mac地址,而mac地址是我们计算机出厂就存在的一个唯一标识,因此在包头就有了目标mac地址和源mac地址
在这里插入图片描述
此时我们计算机之间就可以进行通讯了,假设一个教室就是一个局域网,教室的每一个位置就是一台计算机,比如教室有A,B两个人要进行交谈,A就站起来大喊一声B,说我们下午一起吃饭吧,此时教室的所有人都听见了,但是所有人听到A是喊B,就知道叫的不是自己,就会忽略,而B知道叫的是自己,就答应A说,好的,而这种方式叫做广播,数据链路层的工作方式就是广播的方式

刚才我们知道局域网计算机的通信方式,但是我们计算机通讯肯定不能单单在一个局域网进行通讯,而是有无数个局域网组成的一个更大的局域网,假设全世界的计算机就是一个大型局域网,他们之间通讯好像是不是也可以通过广播的方式进行通讯呢,理论上是可以的,但是仔细想想,都在哪里吼一嗓子,世界不会乱了吗,因此就会出现了网络层的概念

网络

此时网络层也定义了一个协议叫做ip协议,首先举个例子,就是我们每一个教室是一个局域网,有one,two两个教室各自的A,B两个同学要进行交流,但是他们之间不认识,而每个教室都有一个负责人,我们叫做one Teacher ,two Teacher,两位老师,这两位老师相当于我们的网关,然后A同学要找B同学,首先要知道B同学在那个教室,那么就会用上ip协议,ip协议就会区分出B同学在那个教室,这样A同学找到了two Teacher老师告诉他,我要找你们班的B同学,而two Teacher老师就会大吼一声,B同学有人找你,此时就可已进行交流了

mac地址定位的是教室的某一个位置,而ip定位的是哪个教室,此时我们的数据包就会是下面的样子
在这里插入图片描述

此时我们还有一个疑问就是在吼之前,要明确几个地址,自己的mac地址,和ip地址,我可以知道,目标的ip,我们肯定也可以知道,正如我们要访问百度,肯定知道他的域名一样,但是我们怎么知道目标的mac地址呢

其实要知道目标的mac地址,还要靠ARP协议,其实就是靠广播的方式发送ARP数据包,他的格式如下
在这里插入图片描述
其中目标mac地址是12F这叫做广播地址,他的功能就是获取对方的mac地址,当这个包在局域网中发送的时候,每个计算机进行拆解,发现不是自己就会忽略,但是如果是自己就会回把自己的mac地址返回,此时就知道了目标的mac地址了

但是如果是在跨局域网是如何处理的呢,首先通过ip区分目标在哪个网关,然后把目标ip换成网关的ip

在这里插入图片描述

然后网关就会把他自己的mac地址返回给你,放到目标mac地址
在这里插入图片描述
然后在正常发包,此时就会通过网关去找你的目标地址,其实这个过程我们根本就不知道网络的存在

传输层

上面我们通过mac地址和ip地址定位了一条计算机,但是我们的计算机不单单运行一个应用程序,此时就要通过端口进行区分了,传输层就是端口到端口之间通信,且传输层也有他的协议的,比如TCP,UDP

应用层

应用层位于传输层之上,主要提供两个终端设备上的应用程序之间信息交换的服务,它定义了信息交换的格式,消息会交给下一层传输层来传输。我们把应用层交互的数据单元称为报文,应用层定义了许多协议,对于不同的网络应用使用不同的协议,比如Email,WWW,FTP,HTTP等等

TCP和UDP区别

是否面向连接 :UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
是否是可靠传输:远地主机在收到 UDP 报文后,不需要给出任何确认,并且不保证数据不丢失,不保证是否顺序到达。TCP 提供可靠的传输服务,TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制。通过 TCP 连接传输的数据,无差错、不丢失、不重复、并且按序到达。
是否有状态 :这个和上面的“是否可靠传输”相对应。TCP 传输是有状态的,这个有状态说的是 TCP 会去记录自己发送消息的状态比如消息是否发送了、是否被接收了等等。为此 ,TCP 需要维持复杂的连接状态表。而 UDP 是无状态服务,简单来说就是不管发出去之后的事情了。
传输效率 :由于使用 TCP 进行传输的时候多了连接、确认、重传等机制,所以 TCP 的传输效率要比 UDP 低很多。
传输形式 :TCP 是面向字节流的,UDP 是面向报文的。
首部开销 :TCP 首部开销(20 ~ 60 字节)比 UDP 首部开销(8 字节)要大。
是否提供广播或多播服务 :TCP 只支持点对点通信,UDP 支持一对一、一对多、多对一、多对多
在这里插入图片描述

参考文献:OSI协议


http://www.ppmy.cn/embedded/154812.html

相关文章

基于物联网表计的综合能源管理方案

为加快推进国家“双碳”战略和新型能源体系建设,努力实现负荷准确控制和用户精细化管理,按照“政府主导、电网组织、政企协同、用户实施”的指导原则,多地成立市/县级电力负荷管理中心,包括浙江宁波、慈溪、辽宁大连、湖南株洲、娄…

GitLab CI/CD使用runner实现自动化部署前端Vue2 后端.Net 7 Zr.Admin项目

1、查看gitlab版本 建议安装的runner版本和gitlab保持一致 2、查找runner 执行 yum list gitlab-runner --showduplicates | sort -r 找到符合gitlab版本的runner,我这里选择 14.9.1版本 如果执行出现找不到下载源,添加官方仓库 执行 curl -L &quo…

Shell的运行原理以及Linux中的权限问题

Shell的运行原理 Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如…

Centos9 + Docker 安装 MySQL8.4.0 + 定时备份数据库到本地

Centos9 Docker 安装 MySQL8.4.0 定时备份数据库到本地 创建目录,创建配置文件启动容器命令定时备份MySQL执行脚本Linux每日定时任务命令文件内参数其他时间参数 AT一次性定时任务 创建目录,创建配置文件 $ mkdir -p /opt/mysql/conf$ vim /opt/mysql/…

Spring Boot中yml和properties的区别

properties 和 yml 都是 Spring Boot 支持的两种配置文件,可以看作是 Spring Boot 在不同时期的两款“产品”。主要是为了取代 XML 文件格式来配置项目。 properties 配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的…

深度剖析:NLP 领域基于 TF-IDF 和 Text-Rank 的关键字提取原理

今天,我想写一篇自然语言处理领域两大关键词提取技术 TF-IDF 和 Text-Rank。这两项技术在文本处理的世界里犹如两颗璀璨的明星,各自散发着独特的光芒,帮助我们从海量的文本数据中精准地提炼出关键信息,无论是在学术研究、信息检索…

七十五:握手的优化:Session缓存、Ticket票据及TLS 1.3的0-RTT

引言 在现代互联网环境中,安全性和性能是设计网络协议时至关重要的两个方面。传输层安全性(TLS)协议是实现安全传输的关键机制。然而,传统的TLS握手过程虽然安全,但是存在潜在的延迟问题。为了优化握手的效率&#xf…

git 常用命令 git revert

git revert 是 Git 中用于撤销之前提交更改的命令。它通过创建一个新的提交来取消指定提交引入的更改,而不是直接修改历史记录。这使得 git revert 成为一种安全且非破坏性的撤销方式,特别适用于已经推送到远程仓库或被其他开发者依赖的提交。 git reve…