一、OSI七层模型
(1)客户端发送请求时 OSI 七层模型的运作流程
- 应用层(Application Layer)
- 用户通过浏览器输入URL(如https://example.com),根据协议类型(HTTP/HTTPS)确定使用何种应用层协议
- 生成HTTP请求报文:包含请求行(如GET /index.html HTTP/1.1)、请求头(Host、User-Agent等)、请求体(POST数据)
- 补充:DNS解析(将域名转为IP地址)也在此层完成(通过DNS协议)
- 表示层(Presentation Layer)
- 数据转换:对应用层数据进行格式化(如JSON转二进制)
- 加密:如果使用HTTPS,SSL/TLS协议会在表示层对数据进行加密(注:实际中SSL/TLS协议横跨会话层和传输层,OSI模型中的表示层更多是理论划分)
- 压缩:对数据进行压缩(如GZIP)
- 会话层(Session Layer)
- 管理会话生命周期(建立、维持、终止)
- 实际实现:
- 在TCP/IP模型中,会话管理通常由传输层(TCP三次握手)和应用层(如HTTP Keep-Alive)共同完成
- 例如,TCP连接的建立(三次握手)属于传输层,但会话层在OSI中理论上负责逻辑会话管理
- 传输层(Transport Layer)
- 分段:将数据分割为更小的段(Segment),并为每个段编号(序列号)
- 端口标识:添加源端口(随机)和目标端口(HTTP:80,HTTPS:443)
- 协议选择:根据需求选择TCP(可靠传输)或UDP(快速传输)
- 补充:TCP的三次握手在此层完成,确保连接可靠性
- 网络层(Network Layer)
- 封装IP头:添加源IP(客户端IP)和目标IP(服务器IP),形成数据包(Packet)
- 路由选择:根据路由表确定下一跳路由器,通过IP协议进行寻址
- 数据链路层(Data Link Layer)
- 封装帧:添加帧头(源MAC地址、目标MAC地址)和帧尾(CRC校验码),形成数据帧(Frame)
- MAC寻址:通过ARP协议将目标IP转换为目标MAC地址
- 差错检测:通过CRC校验确保数据完整性
- 物理层(Physical Layer)
- 信号转换:将数据帧转换为比特流(0和1)
- 物理传输:通过网线、光纤、WiFi等介质将比特流发送到下一跳设备(如路由器)
(2)服务器接收请求时 OSI 七层模型的运作流程
- 物理层 → 数据链路层
- 物理层:接收比特流,转换为数据帧
- 数据链路层:
- 检查帧头中的目标MAC地址是否为本机
- 校验CRC,若错误则丢弃帧
- 剥离帧头和帧尾,将数据包上传至网络层
- 网络层
- 检查IP头中的目标IP是否为本机
- 若IP匹配,剥离IP头,将数据段上传至传输层
- 若为路由器,则根据路由表转发数据包
- 传输层
- 根据目标端口(如80或443)将数据段交给对应的应用进程(如Web服务器)
- 若为TCP协议,发送ACK确认,并重组数据段为完整数据
- 会话层 → 表示层 → 应用层
- 会话层:维护会话状态(如保持TCP连接)
- 表示层:解密(HTTPS)、解压缩、数据格式转换
- 应用层:
- 解析HTTP请求报文(如提取URL、请求头)
- 处理请求(如读取文件、查询数据库)
- 生成HTTP响应报文(状态行、响应头、响应体)
二、TCP/IP四层模型
OSI七层模型 | TCP/IP四层模型 |
---|
应用层 | 应用层 |
表示层 | 应用层 |
会话层 | 应用层 |
传输层 | 传输层 |
网络层 | 网络层 |
数据链路层 | 网络接口层 |
物理层 | 网络接口层 |
三、总结
- TCP/IP模型更实用,实际网络协议栈(如Linux)基于此实现
- 常见协议归属:TCP(传输层)、IP(网络层)、HTTP(应用层)、DNS(应用层)