关于 OSI 七层模型
前言
开放式系统互联模型 (英语:Open System Interconnection Model,缩写:OSI;简称为OSI 模型)是一种 概念模型 ,由 国际标准化组织 提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于 ISO/IEC 7498。
该模型将通信系统中的数据流划分为七个不同的抽象层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用程序层。
最近学了计网和 OSI 模型,对这个有了点初步的了解,在这里聊聊个人的理解和看法。
OSI 为计算机网络通信提供了一个 标准的体系结构 ,使不同厂商和组织能够在相同的基础上进行设计、开发和实现网络协议和设备,从而实现互操作性。在此基础上,OSI 提出了 结构化 的七个抽象层,使得网络设计和维护,故障排查和检修变得简单和清晰明了。在设计网络的时候可以根据 OSI 进行精细而有目的的协同和设计,而当网络出现问题的时候,OSI 的抽象层使得可以清晰地根据不同的故障进行有针对性的且是不同的层级划分的基础上进行具体的定位和解决。
标准规范性文件
OSI 模型在 ISO/IEC 7498 中定义,由以下部分组成:
ISO/IEC 7498-1 基本模型
ISO/IEC 7498-2 安全架构
ISO/IEC 7498-3 命名和寻址
ISO/IEC 7498-4 管理框架
ISO/IEC 7498-1 也作为 ITU-T 建议书 X.200 发布。
层构架
根据 ISO/IEC 7498-1,OSI 模型分为七个抽象层,标记为从 1 到 7,第一层是最底层。
- 7 应用层(Application)
- 6 表示层(Presentation)
- 5 会话层(Session)
- 4 传输层(Transport)
- 3 网络层(NetWork)
- 2 数据链路层(Data Link)
- 1 物理层(Physical)
在 OSI 中,底三层为媒体层(Media layers),上四层为主机层(Host layers)。
从数据流的发送端的流方向角度看
第七层:应用层
数据出现于 应用层 中,诸如 QQ、网页、TG 等应用以及应用程序都属于应用层的内容。
应用层准备好数据后,开始像表示层解释。
第六层:表示层
应用层 收到从应用层送来的文件后,会对数据进行编码、加密、压缩,转换为对方应用层兼容且适合的形式。因此表示层也叫语法层。
第五层:会话层
会话层 不会直接对数据本身进行处理,在收到表示层送来的数据之后,负责在两台计算机之间建立数据连接,和负责维护连接,以保证这段数据不会因为中断而造成问题。
第四层:传输层
如果我们需要一次性传输单个非常大的文件,而我们的网络环境比恶劣,那么如果在这个传输过程中会话层所建立的链接中断了,就意味着需要重新传输。
而传输层可以吧 单个大 的文件拆分为 多个小 的文件,同时配合中断重发机制,就可以解决重新传输问题;同时,由于数据包是通过传输层进行切片和控制的,进而它也可以对数据进行 流量控制,这样就能避免堵塞和多路复用。
此外,传输层还提供端口服务,通过给数据追加一个源头和目标端口,实现明确告知具体的包的具体的传输源头和目的。
[源目端口] | 数据内容
传输层最常用的协议有 TCP 和UDP,前者提供 可靠 的数据传输,后者提供 不可靠 的数据传输。
第三层:网络层
网络层 提供了将 数据包 从一个节点传输到另一个节点的功能和程序手段,这些节点或者叫计算机处于不同的“网段”之中,我们需要依靠 IP 地址来确定异地的网段和目标 。
网络层为传输层的数据追加一个原地址和目标地址[源目 ip 地址] | [源目端口] | 数据内容
,这就解决了数据从何而来和道何而去的问题。
网络层常用的协议有:
Internet 协议(IP):IP 协议是网络层最重要的协议之一,用于在因特网中进行数据包的路由和转发。IPv4 和 IPv6 是两个主要版本的 IP 协议。
Internet 控制报文协议(ICMP):ICMP 协议用于在 IP 网络中发送控制消息,如网络不可达、主机不可达等,以便网络设备能够进行故障排除和错误通知。
地址解析协议(ARP):ARP 协议用于将 IP 地址映射到 MAC 地址,以便在局域网中进行通信时能够将 IP 数据包封装成帧并发送到目标设备。
至此为止,通过 源 IP 地址 、 目标 IP 地址 、 协议号 、 源端口号 和目标端口号 (TCP/IP),就可以识别一个 完整 的通讯。
IP 地址除了可以解决异地网段的问题,同时还映射 MAC 地址,可以通过 IP 地址和路由表共同寻到具体设备的 MAC 地址
第二层:数据链路层
网络层和 IP 地址解决了异地网段的问题,但网络层无法确定要传递到该网段的下的某一台具体的机器。因此,链路层会将网络层的
[源目 ip 地址] | [源目端口] | 数据内容
追加 源目 MAC 地址 变成[源目 MAC 地址][源目 ip 地址] | [源目端口] | 数据内容
。
与此同时,由于我们的数据是切片的,为了数据的完整性,链路层会用 FSC 帧校验 对数据进行再次追加。
至此,我们的数据已经完全追加并处理完成,得到的 [源目 MAC 地址] [源目 ip 地址] | [源目端口] | 数据内容 | [FSC 帧校验]
就是我们的最终帧数据部分。
第一层:物理层
物理层只考虑数据在物理上的传输,而不关心数据流里携带的信息。他将前六层得到的最终数据流编码或转换成 0101 的二进制形式,通过物理接口和传输介质,把数据发送到对端。
从数据流的接受端的流方向角度看
第一层:物理层
收到 主机 A发来的二进制代码,并对代码进行解析,把数据转换为链路层能识别的数据。
第二层:数据链路层
数据链路层收到由物理层解析后的数据,先进行 FSC 帧校验 校验数据的完整性,然后检验目标 MAC 地址 是否正确,最后剥离 FSC 帧校验 和源目 MAC 地址,随后把处理过后的数据帧交给网络层。
[源目 Mac 地址]|[源目 ip 地址]|[源目端口]| 数据内容 |[FSC 帧校验]
→[源目 ip 地址]|[源目端口]| 数据内容
第三层:网络层
网络层 收到数据链路层传来的数据之后,确定设备的 IP 地址并准确无误且可以通过之后,剥离源目 IP 地址 ,并将数据包交给 传输层
[源目 ip 地址]|[源目端口]| 数据内容
→ [源目端口]| 数据内容
第四层:传输层
传输层 收到来自网络层的数据后,确认 源目端口 是否通畅可用,剥离源目端口 ,并把数据交给 会话层
[源目端口]| 数据内容
→ 数据内容
第五层:会话层
会话层 拿到数据后,需要根据端口与相对应的应用建立会话连接,并维持这个连接关系,继续将数据交给 表示层 。 数据内容
→ 数据内容
第六层:表示层
表示层 收到数据后,需要对数据做进一步的 解码 处理,以确保应用能够识别这段数据内容,解码成功后,将数据交给 应用层 。 数据内容
→ 数据内容
第七层:应用层
主机 B最终收到了 主机 A发过来的消息。数据内容
→ 数据内容