OSI 网络七层模型

网络七层架构(OSI 模型)

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


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

  • 职责:负责在同一网络中的节点之间可靠地传输数据帧,并进行错误检测和纠正。
  • 作用:将数据封装成帧,提供介质访问控制(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 地址选择路由路径。
    • 将封装后的数据包传递给数据链路层。

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

  • 流程

    • 将网络层的数据包封装为帧,添加数据链路层头部(如 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)

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

  • 流程

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

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

  • 流程

    • 检查帧的完整性(如 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. 应用层:解析请求,交给应用程序处理。
相关推荐
不思念一个荒废的名字5 小时前
【刷题Day22】TCP(浅)
网络·网络协议·tcp/ip
LuckyRich16 小时前
【仿Mudou库one thread per loop式并发服务器实现】HTTP协议模块实现
服务器·c++·http·性能优化
智联视频超融合平台6 小时前
智慧能源安全新纪元:当能源监测遇上视频联网的无限可能
人工智能·网络协议·音视频·能源·视频编解码
葵野寺8 小时前
【网络原理】UDP协议
网络·网络协议·udp·md5算法·udp报文格式·校验方法
JiaHao汤10 小时前
HTTP 和 HTTPS 有什么区别?
网络协议·http·https
我要喝可乐!10 小时前
Http基础
网络·网络协议·http
左灯右行的爱情10 小时前
应用层核心协议详解:HTTP, HTTPS, RPC 与 Nginx
http·rpc·https
陈辛chenxin16 小时前
【JavaWeb后端开发02】SpringBootWeb + Https协议
网络协议·http·https
爱吃烤鸡翅的酸菜鱼16 小时前
Java【网络原理】(4)HTTP协议
java·网络·后端·网络协议·http