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 等。

相关推荐
西京刀客29 分钟前
golang路由与框架选型(对比原生net/http、httprouter、Gin)
http·golang·gin
Hilaku33 分钟前
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)
前端·javascript·github
IT_陈寒34 分钟前
Java性能调优实战:5个被低估却提升30%效率的JVM参数
前端·人工智能·后端
快手技术35 分钟前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱36 分钟前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
全栈前端老曹1 小时前
【包管理】npm init 项目名后底层发生了什么的完整逻辑
前端·javascript·npm·node.js·json·包管理·底层原理
HHHHHY1 小时前
mathjs简单实现一个数学计算公式及校验组件
前端·javascript·vue.js
boooooooom1 小时前
Vue3 provide/inject 跨层级通信:最佳实践与避坑指南
前端·vue.js
一颗烂土豆1 小时前
Vue 3 + Three.js 打造轻量级 3D 图表库 —— chart3
前端·vue.js·数据可视化
青莲8431 小时前
Android 动画机制完整详解
android·前端·面试