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

计算机网络浅谈—什么是 OSI 模型?

开放系统通信(OSI)模型是一个代表网络通信工作方式的概念模型。

思维导图

什么是 OSI 模型?

开放系统互连 (OSI) 模型是由国际标准化组织创建的概念模型,支持各种通信系统使用标准协议进行通信。简单而言,OSI 为保证不同计算机系统能够相互通信提供了标准。

人们可以将 OSI 模型视为一种通用计算机网络语言。根据这一概念,通信系统分成七个抽象层,逐层堆叠而成。

OSI 模型的每一层负责处理特定作业并与其上下层进行通信。DDoS 攻击的目标是特定的网络连接层;应用程序层攻击的目标第 7 层,协议层攻击的目标第 3 层和第 4 层。

为什么 OSI 模型至关重要?

虽然现代互联网并未严格采用 OSI 模型(其更严格采用较简单的互联网协议套件),但 OSI 模型对于解决网络问题仍然很有帮助。无论是某位无法使用笔记本电脑上网的用户,还是为数千名用户提供服务的网站宕机,OSI 模型都能帮助分解问题并找到问题根源。如果可以将问题范围缩小到模型的某个特定层,就能避免许多不必要的工作。

OSI 模型有哪 7 个层?

OSI 模型的七个抽象层定义如下(自上而下):

7. 应用程序层

这是唯一直接接触用户数据的层。软件应用程序(如 Web 浏览器和电子邮件客户端)依靠应用程序层发起通信。但需要明确的是,客户端软件应用程序不属于应用程序层;相反,应用程序层负责协议和数据操作,软件依靠上述操作向用户呈现有效数据。

应用程序层协议包括 HTTP 和 SMTP(简单邮件传输协议是支持开展电子邮件通信的协议之一)。

6. 表示层

这一层主要负责准备数据,以便应用程序层进行使用;换言之,第 6 层用于确保数据可供应用程序使用。表示层负责完成数据转换、加密和压缩。

两台相互通信的设备可能使用不同的编码方法,因此第 6 层负责将传入数据转换为接收设备应用程序层可以理解的语法。

如果设备通过加密连接进行通信,则第 6 层负责发送端加密和接收端解密,以便向应用程序层呈现非加密可读数据。

最后,表示层还负责压缩从应用程序层接收的数据,然后将数据传递到第 5 层。这有助于尽量减少要传输的数据量,从而提高通信速度和效率。

5. 会话层

这一层负责打开和关闭两个设备之间的通信。通信打开与关闭之间的时间称为会话。会话层用于确保会话保持打开的时长足以传输所有交换数据,而后立即关闭会话以避免浪费资源。

会话层还负责同步数据传输与检查点。例如,如果传输一个 100MB 的文件,会话层可以每 5MB 设置一个检查点。如果在传输了 52MB 后连接断开或崩溃,可以从最后一个检查点恢复会话,也就是只需再传输 50MB 数据。若未设置检查点,则必须从头开始传输整个文件。

4. 传输层

第 4 层负责两个设备间的端到端通信。包括从会话层提取数据,将数据分解为多个区块(称为数据段),然后再发送到第 3 层。接收设备传输层负责重组数据段,确保数据可供会话层使用。

传输层还负责进行流量控制和错误控制。流量控制用于确定最佳传输速度,避免采用快速连接的发件人淹没采用慢速连接的收件人。传输层通过确保接收数据的完整性(如果不完整,则请求重新传输)来对接收端进行错误控制。

传输层协议包括 传输控制协议(TCP) 和 用户数据报协议(UDP)。

3. 网络层

网络层负责促进两个不同网络之间的数据传输。如果两台通信设备位于同一网络,则不需要使用网络层。网络层在发送设备上将传输层发出的数据段分解更小的单元(称为数据包),再在接收设备上重组这些数据包。网络层还要确定数据到达目标的最佳物理路径;人们将此称为路由。

网络层协议包括 IP, 互联网控制消息协议(ICMP), 互联网组消息协议(IGMP),以及 IPsec 套件。

2. 数据链路层

数据链路层与网络层十分相似,但数据链路层用于促进同一网络上两台设备之间的数据传输。数据链路层从网络层提取数据包并将数据包分解成更小的部分(称为帧)。与网络层一样,数据链路层也负责网络内部通信流量控制和错误控制(传输层仅负责网络间通信流量控制和错误控制)。

1. 物理层

这一层包括参与数据传输的物理设备,如电缆和交换机。同时还负责将数据转换为位流,也就是由 1 和 0 构成的字符串。另外,两台设备的物理层必须达成信号约定,以便区分两台设备的字符串 1 和 0。

数据在 OSI 模型中如何流动

为通过网络将人类可读信息通过网络从一台设备传输到另一台设备,必须在发送设备沿 OSI 模型的七层结构向下传输数据,然后在接收端沿七层结构向上传输数据。

库珀先生想给帕尔梅女士发一封电子邮件。库珀先生在笔记本电脑的电子邮件应用程序中编写邮件,然后点击 “发送”。电子邮件应用程序将电子邮件传递到应用程序层应用程序层选取协议(SMTP)再将数据传递到表示层。接着,表示层压缩数据再将数据传递到会话层由会话层初始化通信会话

而后,数据将到达发送方的传输层,在传输层进行分段,再在网络层将这些数据段分解为数据包,然后在数据链路层进一步分解为帧。随后,数据链路层将这些帧传输到物理层,物理层将数据转换为位流 1 和 0,最后通过物理介质(如电缆)发送数据

帕尔梅女士的计算机通过物理介质(如她的 WiFi)接收位流后,数据将沿其设备的同一系列层级流动,但顺序刚好相反。首先,物理层将位流从 1 和 0 转换为帧,传递到数据链路层。然后,数据链路层将帧重组为数据包,供网络层使用。接着,网络层将数据包重组为数据段供传输层使用,传输层再将数据段重组为数据片段。

随后,数据将流入收件方的会话层,会话层将数据传递到表示层并结束通信会话。表示层解压数据并将原始数据传递到应用程序层。应用程序层将人类可读数据传递到帕尔梅女士的电子邮件软件,这样她就能在笔记本电脑屏幕上阅读库珀先生的电子邮件了。

参考:什么是 OSI 模型? | Cloudflare (cloudflare-cn.com)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 普中51单片机:定时器与计数器详解及应用(七)
  • 【eNSP模拟实验】三层交换机实现VLAN通信
  • STL(一)
  • 如何将canvas画布变成一张img图片
  • 光伏电站逆变器选型方法
  • Power BI数据分析可视化实战培训
  • 【UNI-APP】阿里NLS一句话听写typescript模块
  • web后端开发--请求响应
  • QT开发积累——qt中的注释和多行注释的几种方式,函数方法注释生成
  • 阿里云ecs服务器,nginx多域名多项目部署教程,含本地部署教程
  • pytest使用报错(以及解决pytest所谓的“抑制print输出”)
  • 在AvaotaA1全志T527开发板上使用AvaotaOS 部署 Docker 服务
  • 使用Ultralytics YOLO进行模型验证
  • 测试狗:“微观结构表征+理论计算”助力《Science》论文发表
  • 双向链表 -- 详细理解和实现
  • [笔记] php常见简单功能及函数
  • 【前端学习】-粗谈选择器
  • C++类中的特殊成员函数
  • ES6 学习笔记(一)let,const和解构赋值
  • Github访问慢解决办法
  • golang中接口赋值与方法集
  • overflow: hidden IE7无效
  • Python实现BT种子转化为磁力链接【实战】
  • 回顾2016
  • 配置 PM2 实现代码自动发布
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 找一份好的前端工作,起点很重要
  • Spring第一个helloWorld
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • # 达梦数据库知识点
  • #13 yum、编译安装与sed命令的使用
  • #FPGA(基础知识)
  • #图像处理
  • (11)MSP430F5529 定时器B
  • (C#)一个最简单的链表类
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (第61天)多租户架构(CDB/PDB)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)测试工具
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (三)终结任务
  • (转)jdk与jre的区别
  • (转)菜鸟学数据库(三)——存储过程
  • (转)关于多人操作数据的处理策略
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • (自用)仿写程序
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .net CHARTING图表控件下载地址
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @Autowired @Resource @Qualifier的区别
  • @Autowired多个相同类型bean装配问题
  • @NestedConfigurationProperty 注解用法
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法