网络七层架构(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 请求的流程
-
应用层:
- 浏览器生成 HTTP 请求报文,例如
GET /index.html HTTP/1.1
。 - 将请求数据传递给表示层。
- 浏览器生成 HTTP 请求报文,例如
-
表示层:
- 如果是 HTTPS 请求,使用 TLS 对数据进行加密。
- 将加密后的数据传递给会话层。
-
会话层:
- 确保会话已经建立(如 TCP 三次握手完成)。
- 将数据传递给传输层。
-
传输层:
- 使用 TCP 协议将数据分段,并添加 TCP 头部(如源端口、目标端口、序列号)。
- 将分段后的数据传递给网络层。
-
网络层:
- 添加 IP 头部(如源 IP 地址、目标 IP 地址)。
- 将数据包传递给数据链路层。
-
数据链路层:
- 添加帧头(如源 MAC 地址、目标 MAC 地址)。
- 将帧传递给物理层。
-
物理层:
- 将帧转换为比特流,通过物理介质(如网线或无线信号)发送到网络中。
总结
-
发起请求时:数据从应用层开始逐层向下封装,最终通过物理层发送到网络中。
-
每一层的作用:
- 应用层:生成请求数据。
- 表示层:加密、压缩数据。
- 会话层:管理会话。
- 传输层:分段数据,确保可靠传输。
- 网络层:路由数据包。
- 数据链路层:封装帧,传输到同一网络中的节点。
- 物理层:将数据转换为信号,通过介质传输。
服务端接收请求
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 端接收请求的完整流程
- 物理层:接收比特流并转换为帧。
- 数据链路层:验证帧完整性,提取数据包。
- 网络层:检查目标 IP 地址,提取传输层数据。
- 传输层:检查端口号,确保数据完整性,传递给会话层。
- 会话层:管理会话状态,确保通信有效。
- 表示层:解密、解压缩数据,确保格式正确。
- 应用层:解析请求,交给应用程序处理。