首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

OSI 网络七层模型

  • 25-04-23 10:01
  • 2259
  • 9514
juejin.cn

网络七层架构(OSI 模型)

OSI 模型(Open Systems Interconnection Model)是一个标准化的网络通信参考模型,将网络通信分为七个层次,每一层都有特定的功能和职责。以下是七层架构的介绍:


1. 物理层(Physical Layer)
  • 职责:负责比特流的传输,定义硬件设备的电气、机械、功能和过程特性。
  • 作用:将数据以电信号、光信号或无线信号的形式在设备之间传输。
  • 示例:网线、光纤、无线信号、网络接口卡(NIC)。

2. 数据链路层(Data Link Layer)
  • 职责:负责在同一网络中的节点之间可靠地传输数据帧,并进行错误检测和纠正。
  • 作用:将数据封装成帧,提供介质访问控制(MAC)和逻辑链路控制(LLC)。
  • 示例:以太网协议(Ethernet)、Wi-Fi(802.11)、MAC 地址。

3. 网络层(Network Layer)
  • 职责:负责数据包的路由和转发,确保数据能够跨越多个网络到达目标。
  • 作用:提供逻辑地址(如 IP 地址),并决定数据的最佳传输路径。
  • 示例:IP 协议(IPv4、IPv6)、路由器。

4. 传输层(Transport Layer)
  • 职责:负责端到端的通信,提供可靠的数据传输和流量控制。
  • 作用:分段数据并重组,确保数据完整性和顺序。
  • 示例:TCP(可靠传输)、UDP(无连接传输)。

5. 会话层(Session Layer)
  • 职责:负责建立、管理和终止应用程序之间的会话。
  • 作用:提供会话控制和同步功能。
  • 示例:会话管理协议(如 NetBIOS)。

6. 表示层(Presentation Layer)
  • 职责:负责数据的格式化、加密和解密、压缩和解压缩。
  • 作用:确保不同系统之间的数据能够被正确解析。
  • 示例:SSL/TLS 加密、JPEG、JSON、XML。

7. 应用层(Application Layer)
  • 职责:直接面向用户,提供网络服务的接口。
  • 作用:处理用户请求并提供服务。
  • 示例:HTTP、FTP、SMTP、DNS。

请求从 Client 到 Server 的流转过程

以下是一个 HTTP 请求从客户端发起到服务器响应的流转过程,经过七层架构时每层的作用:


1. 应用层
  • 客户端:用户通过浏览器发起 HTTP 请求(如访问 https://example.com)。
  • 作用:浏览器生成 HTTP 请求报文,包含请求方法(如 GET)、URL、头部信息等。
  • 服务器:接收 HTTP 请求,解析请求内容并准备响应。

2. 表示层
  • 客户端:对 HTTP 请求进行编码(如将数据格式化为 JSON 或 XML),并加密(如使用 TLS)。
  • 作用:确保数据在传输过程中安全且格式正确。
  • 服务器:解密收到的数据,并解析其格式。

3. 会话层
  • 客户端:建立与服务器的会话(如通过 TCP 三次握手)。
  • 作用:管理会话的生命周期,确保会话的建立、维持和终止。
  • 服务器:接受会话请求,并保持会话状态。

4. 传输层
  • 客户端:将 HTTP 请求分段为多个数据包,并通过 TCP 协议确保可靠传输。
  • 作用:提供端到端的通信,确保数据包按顺序到达且无丢失。
  • 服务器:接收数据包,按顺序重组为完整的 HTTP 请求。

5. 网络层
  • 客户端:为每个数据包添加 IP 地址(源地址和目标地址),并选择路由路径。
  • 作用:负责数据包的路由和转发,确保数据跨网络传输到目标服务器。
  • 服务器:根据目标 IP 地址接收数据包。

6. 数据链路层
  • 客户端:将数据包封装为帧,添加 MAC 地址(源 MAC 和目标 MAC)。
  • 作用:在同一网络中传输帧,并进行错误检测。
  • 服务器:接收帧,验证其完整性,并提取数据包。

7. 物理层
  • 客户端:将帧转换为电信号、光信号或无线信号,通过物理介质传输。
  • 作用:负责比特流的实际传输。
  • 服务器:接收信号并还原为帧。

服务器响应回客户端的过程

服务器处理完请求后,生成 HTTP 响应报文,并按照相同的七层架构从上到下封装数据,最终通过物理层传输回客户端。客户端接收到响应后,按照七层架构从下到上解封装数据,最终将响应内容呈现给用户(如在浏览器中显示网页)。


总结

  • 七层架构职责:从物理传输到用户交互,每一层都负责特定的功能,确保数据能够可靠地传输和解析。
  • 请求流转过程:数据从客户端到服务器,再从服务器返回客户端,经过每一层时都会被封装或解封装,完成特定的任务。

客户端发起请求

OSI 七层架构:Client 端发起请求的流程

当客户端发起请求时,数据会从应用层开始逐层向下传递,每一层对数据进行封装,最终通过物理层发送到网络中。以下是基于 OSI 七层架构 的客户端发起请求的流程,以及每一层的作用:


1. 应用层(Application Layer)

  • 作用:直接与用户交互,生成请求数据。

  • 流程:

    • 用户通过应用程序(如浏览器、FTP 客户端)发起请求。
    • 应用程序根据协议(如 HTTP、FTP、SMTP)生成请求报文。
    • 示例:浏览器生成 HTTP 请求报文,包含请求方法(如 GET)、URL、请求头等信息。
    • 将生成的请求数据传递给表示层。

2. 表示层(Presentation Layer)

  • 作用:负责数据的格式化、加密和压缩。

  • 流程:

    • 如果需要加密(如 HTTPS),在这一层对数据进行加密(如 TLS 加密)。
    • 如果需要压缩(如 GZIP),在这一层对数据进行压缩。
    • 确保数据格式化为接收方能够解析的格式。
    • 将处理后的数据传递给会话层。

3. 会话层(Session Layer)

  • 作用:负责建立、管理和终止与服务器的会话。

  • 流程:

    • 如果是基于 TCP 的通信,确保会话已经建立(如 TCP 三次握手)。
    • 如果会话已经建立,将数据传递给传输层。

4. 传输层(Transport Layer)

  • 作用:负责端到端的通信,确保数据的完整性和顺序。

  • 流程:

    • 将表示层的数据分段(Segmentation),为每段数据添加传输层头部(如 TCP 或 UDP 协议头)。
    • TCP:提供可靠传输,添加序列号、确认号等信息。
    • UDP:提供无连接传输,适用于实时性要求高的场景。
    • 将分段后的数据传递给网络层。

5. 网络层(Network Layer)

  • 作用:负责数据包的路由和转发,确保数据能够到达目标主机。

  • 流程:

    • 为每段数据添加网络层头部(如 IP 协议头),包含源 IP 地址和目标 IP 地址。
    • 根据目标 IP 地址选择路由路径。
    • 将封装后的数据包传递给数据链路层。

6. 数据链路层(Data Link Layer)

  • 作用:负责在同一网络中的节点之间传输数据帧。

  • 流程:

    • 将网络层的数据包封装为帧,添加数据链路层头部(如 MAC 地址)。
    • 确定源 MAC 地址和目标 MAC 地址。
    • 将封装后的帧传递给物理层。

7. 物理层(Physical Layer)

  • 作用:负责将数据帧转换为比特流,通过物理介质传输。

  • 流程:

    • 将数据帧转换为电信号、光信号或无线信号。
    • 通过网线、光纤或无线信号将比特流发送到网络中。

数据封装的过程

在客户端发起请求时,数据从应用层开始逐层向下传递,每一层都会对数据进行封装,添加该层的协议头,最终形成如下结构:

css
代码解读
复制代码
[物理层比特流] ↑ [数据链路层帧] ↑ [网络层数据包] ↑ [传输层段] ↑ [会话层数据] ↑ [表示层数据] ↑ [应用层数据]

示例:浏览器发起 HTTP 请求的流程

  1. 应用层:

    • 浏览器生成 HTTP 请求报文,例如 GET /index.html HTTP/1.1。
    • 将请求数据传递给表示层。
  2. 表示层:

    • 如果是 HTTPS 请求,使用 TLS 对数据进行加密。
    • 将加密后的数据传递给会话层。
  3. 会话层:

    • 确保会话已经建立(如 TCP 三次握手完成)。
    • 将数据传递给传输层。
  4. 传输层:

    • 使用 TCP 协议将数据分段,并添加 TCP 头部(如源端口、目标端口、序列号)。
    • 将分段后的数据传递给网络层。
  5. 网络层:

    • 添加 IP 头部(如源 IP 地址、目标 IP 地址)。
    • 将数据包传递给数据链路层。
  6. 数据链路层:

    • 添加帧头(如源 MAC 地址、目标 MAC 地址)。
    • 将帧传递给物理层。
  7. 物理层:

    • 将帧转换为比特流,通过物理介质(如网线或无线信号)发送到网络中。

总结

  • 发起请求时:数据从应用层开始逐层向下封装,最终通过物理层发送到网络中。

  • 每一层的作用:

    • 应用层:生成请求数据。
    • 表示层:加密、压缩数据。
    • 会话层:管理会话。
    • 传输层:分段数据,确保可靠传输。
    • 网络层:路由数据包。
    • 数据链路层:封装帧,传输到同一网络中的节点。
    • 物理层:将数据转换为信号,通过介质传输。

服务端接收请求

OSI 七层架构:Server 端接收请求的流程

当客户端发起请求后,服务器端会接收该请求并逐层处理数据。以下是基于 OSI 七层架构 的服务器端接收请求的流程,以及每一层的作用:


1. 物理层(Physical Layer)

  • 作用:负责接收客户端发送的比特流(电信号、光信号或无线信号)。

  • 流程:

    • 服务器的网卡通过物理介质(如网线、光纤或无线信号)接收比特流。
    • 将比特流转换为数据帧,传递给数据链路层。

2. 数据链路层(Data Link Layer)

  • 作用:负责将物理层传递的比特流组装成帧,并进行错误检测。

  • 流程:

    • 检查帧的完整性(如 CRC 校验)。
    • 根据帧中的目标 MAC 地址,判断是否是发给本机的帧。
    • 如果是发给本机的帧,提取帧中的数据包,传递给网络层。

3. 网络层(Network Layer)

  • 作用:负责数据包的路由和转发,确保数据到达正确的目标主机。

  • 流程:

    • 检查数据包的目标 IP 地址,判断是否是发给本机的。
    • 如果是发给本机的数据包,移除 IP 头部,提取传输层数据,传递给传输层。

4. 传输层(Transport Layer)

  • 作用:负责端到端的通信,确保数据的完整性和顺序。

  • 流程:

    • 检查数据包的目标端口号,判断数据属于哪个应用程序(如 HTTP、FTP)。
    • 如果是 TCP 协议,检查序列号,确保数据包按顺序组装。
    • 如果是 UDP 协议,直接将数据传递给对应的应用程序。
    • 移除传输层头部,传递数据给会话层。

5. 会话层(Session Layer)

  • 作用:负责管理会话,确保应用程序之间的通信能够正确建立、维持和终止。

  • 流程:

    • 确保会话已经建立(如 TCP 三次握手完成)。
    • 如果会话有效,将数据传递给表示层。

6. 表示层(Presentation Layer)

  • 作用:负责数据的格式化、解密和解压缩。

  • 流程:

    • 如果数据是加密的(如 HTTPS),在这一层解密(如 TLS 解密)。
    • 如果数据是压缩的(如 GZIP),在这一层解压缩。
    • 将处理后的数据传递给应用层。

7. 应用层(Application Layer)

  • 作用:直接与应用程序交互,处理用户请求。

  • 流程:

    • 根据协议(如 HTTP、FTP、SMTP)解析数据。
    • 如果是 HTTP 请求,解析请求方法(如 GET、POST)、URL 和请求头。
    • 将请求交给对应的应用程序逻辑处理(如 Web 服务器、API 服务)。

总结:Server 端接收请求的完整流程

  1. 物理层:接收比特流并转换为帧。
  2. 数据链路层:验证帧完整性,提取数据包。
  3. 网络层:检查目标 IP 地址,提取传输层数据。
  4. 传输层:检查端口号,确保数据完整性,传递给会话层。
  5. 会话层:管理会话状态,确保通信有效。
  6. 表示层:解密、解压缩数据,确保格式正确。
  7. 应用层:解析请求,交给应用程序处理。

TCP 三次握手发生在哪个层?

TCP 三次握手发生在 OSI 模型的传输层(Transport Layer) 。


传输层的职责:

  • 传输层负责端到端的通信,确保数据的可靠传输。
  • TCP(传输控制协议)是传输层的主要协议之一,它提供可靠的连接,通过三次握手建立连接。

TCP 三次握手的过程:

  1. 第一次握手:

    • 客户端发送一个带有 SYN 标志的数据包,表示请求建立连接。
    • 这是客户端主动发起的连接请求。
  2. 第二次握手:

    • 服务器收到 SYN 数据包后,回复一个带有 SYN 和 ACK 标志的数据包,表示同意建立连接并确认客户端的请求。
  3. 第三次握手:

    • 客户端收到服务器的 SYN-ACK 数据包后,再发送一个带有 ACK 标志的数据包,表示确认连接建立。

完成三次握手后,客户端和服务器之间的 TCP 连接正式建立。


总结:

TCP 三次握手是传输层的核心机制,用于在通信双方之间建立可靠的连接。

注:本文转载自juejin.cn的日月星辰Ace的文章"https://juejin.cn/post/7495598574711635978"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

103
后端
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top