OSI 七层网络模型

OSI 七层网络模型

概述

七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。有的人也会将应用层、表示层和会话层合并为应用层,将物理层和数据链路层合并为物理层。每一层都会遵守不同的协议,不同的协议之间通过封装、解封装、加解密等方式进行通信。

物理层

物理层主要是跟物理介质打交道。

物理层的设备包括集线器、中继器、调制解调器、网卡、网桥、交换机等。

物理层的作用是实现比特流的传输,它规定了 0 和 1 的电信号的表示方法、传输距离、传输速率、传输方式、传输媒介等。

数据链路层

数据链路层主要是负责将数据从一台计算机传输到另一台计算机。主要包括建立连接、进行硬件地址寻址、差错校验。

通过将比特流组合成帧,用 MAC 地址标识发送方和接收方,并将帧通过物理介质传输。

MAC 地址是指网络接口卡的物理地址,MAC 地址长度为 48 位,通常用十六进制表示。

数据链路层的协议有 PPP、 Ethernet、FDDO 等。

网络层

网络层是最重要的一层,该层控制数据链路层与传输层之间的信息转发、建立、维持和终止网络的连接。

数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进出路由等控制将信息从一个网络设备传送到另一个网络设备。

  1. 寻址:使用 IP 地址进行寻址,IP 地址长度为 32 位,通常用十进制表示。
  2. 路由:网络层使用路由表进行路由选择,路由表中记录了网络中各个设备的 IP 地址和下一跳路由器的 IP 地址。
  3. 转发:当数据包到达网络层时,网络层检查数据包的目的 IP 地址,并根据路由表选择下一跳路由器,然后将数据包发送给下一跳路由器。
  4. 封装:网络层将数据包封装成数据帧,并添加首部信息,如源 IP 地址、目的 IP 地址、传输层协议类型、数据包长度等。
  5. 分段:当数据包长度超过网络传输的最大数据包长度时,网络层将数据包分段,并在分段后重新封装成数据帧。
  6. 重传:当数据包在网络中传输过程中丢失时,网络层会自动重传。
  7. 错误控制:网络层使用差错校验、流量控制、拥塞控制等机制来保证数据包的可靠传输。

网络层的协议有 IP、ICMP、IGMP、ARP、RIP 等。

传输层

传输层是网络层之上的一层,主要负责向应用层提供可靠的端到端的通信。

传输层的主要协议有 TCP、UDP。

TCP

TCP 协议是一种面向连接的、可靠的、基于字节流的传输层协议。

TCP 协议提供可靠的、按序到达的数据流服务,它建立连接、维护连接、断开连接、数据流的顺序、数据流的完整性、数据流的错误控制等功能。

TCP 协议的特点是建立连接后,通信双方必须互相握手,然后才能开始通信。

UDP

UDP 协议是一种无连接的、不可靠的、基于数据报的传输层协议。

UDP 协议提供不可靠的、无序到达的数据流服务,它不建立连接、不维护连接、不保证数据流的顺序、不保证数据流的完整性、不保证数据流的错误控制等功能。

UDP 协议的特点是无连接,通信双方不必握手,直接就可以通信。

会话层

会话层主要负责建立、管理和终止会话。

  1. 建立会话:会话层建立连接时,首先建立会话,并为通信双方分配会话标识符。
  2. 管理会话:会话层管理连接的建立、维护、终止。
  3. 终止会话:会话层终止连接时,释放连接资源。

数据在这一层叫做报文段,报文段包含源端口号、目的端口号、序列号、确认号、数据、校验和等信息。

会话层的协议有 SSL 、TLS 等。

表示层

表示层主要负责对数据进行编码、加密、解密、压缩、解压缩等处理。

表示层会在在发送之前进行加密,在接收之后进行解密。表示层还会将图片、视频等编码成计算机能读懂的编码。

表示层的协议有 JPEG、MPEG、ASN.1 等。

应用层

应用层是最常用的一层,主要负责向用户提供各种应用服务。包括 AJAX 发送 HTTP 请求、域名系统 DNS 解析,文件传输 FTP、电子邮件 SMTP 等。

应用层的协议有 HTTP、FTP、SMTP、SNMP、Telnet、SSH、TFTP 等。

相关推荐
博客zhu虎康17 分钟前
React Hooks 报错?一招解决useState问题
前端·javascript·react.js
灰海30 分钟前
vue中通过heatmap.js实现热力图(多个热力点)热区展示(带鼠标移入弹窗)
前端·javascript·vue.js·heatmap·heatmapjs
王源骏1 小时前
LayaAir鼠标(手指)控制相机旋转,限制角度
前端
大虾写代码1 小时前
vue3+TS项目配置Eslint+prettier+husky语法校验
前端·vue·eslint
wordbaby2 小时前
用 useEffectEvent 做精准埋点:React analytics pageview 场景的最佳实践与原理剖析
前端·react.js
上单带刀不带妹2 小时前
在 ES6 中如何提取深度嵌套的对象中的指定属性
前端·ecmascript·es6
excel2 小时前
使用热力贴图和高斯函数生成山峰与等高线的 WebGL Shader 解析
前端
wyzqhhhh2 小时前
组件库打包工具选型(npm/pnpm/yarn)的区别和技术考量
前端·npm·node.js
码上暴富2 小时前
vue2迁移到vite[保姆级教程]
前端·javascript·vue.js
土了个豆子的2 小时前
04.事件中心模块
开发语言·前端·visualstudio·单例模式·c#