神奇的Willem

ISO网络模型(完全版搬运)

2025/11/25
20
0

概述

OSI(Open Systems Interconnection)七层网络模型是国际标准化组织(ISO)制定的网络互连标准模型,用于描述网络通信的标准框架。该模型将网络通信分为七个抽象层次,每层负责特定的功能,为网络设备制造商和软件开发者提供了统一的标准。

OSI七层模型架构图

┌─────────────────────────────────────────┐
│           第7层:应用层 (Application)      │  ← 用户接口
├─────────────────────────────────────────┤
│           第6层:表示层 (Presentation)     │  ← 数据格式转换
├─────────────────────────────────────────┤
│           第5层:会话层 (Session)          │  ← 会话管理
├─────────────────────────────────────────┤
│           第4层:传输层 (Transport)        │  ← 端到端传输
├─────────────────────────────────────────┤
│           第3层:网络层 (Network)          │  ← 路由选择
├─────────────────────────────────────────┤
│           第2层:数据链路层 (Data Link)     │  ← 帧传输
├─────────────────────────────────────────┤
│           第1层:物理层 (Physical)         │  ← 比特传输
└─────────────────────────────────────────┘

各层详细解析

第1层:物理层 (Physical Layer)

功能职责

  • 定义网络设备间的物理连接

  • 负责比特流的传输

  • 规定电气特性、机械特性、功能特性和过程特性

关键技术

  • 传输媒介:双绞线、光纤、无线电波、同轴电缆

  • 信号编码:曼彻斯特编码、差分曼彻斯特编码

  • 调制技术:ASK、FSK、PSK、QAM

  • 同步机制:时钟同步、帧同步

典型设备

  • 网线、光纤

  • 集线器(Hub)

  • 中继器(Repeater)

  • 调制解调器(Modem)

数据单位:比特(Bit)

物理特性:
├── 机械特性:连接器形状、引脚数量
├── 电气特性:电压范围、阻抗匹配
├── 功能特性:引脚功能定义
└── 过程特性:建立连接的时序

功能职责

  • 在不可靠的物理链路上提供可靠的数据传输

  • 帧同步、流量控制、错误检测与纠正

  • 介质访问控制(MAC)

核心机制

  1. 帧封装格式

┌────────────┬──────────┬────────────┬─────────┬────────────┐
│  帧起始符  │   头部   │    数据    │  校验   │  帧结束符  │
│   FLAG     │ Header   │    Data    │  FCS    │   FLAG     │
└────────────┴──────────┴────────────┴─────────┴────────────┘
  1. 错误检测机制

    • CRC校验:循环冗余校验

    • 奇偶校验:简单错误检测

    • 海明码:单比特错误纠正

  2. 流量控制

    • 停止等待协议:发送方等待确认

    • 滑动窗口协议:提高传输效率

  3. 介质访问控制

    • CSMA/CD:载波监听多路访问/冲突检测

    • 令牌环:令牌传递控制访问

    • TDMA/FDMA:时分/频分多址

典型协议

  • 以太网协议:IEEE 802.3

  • WiFi协议:IEEE 802.11

  • 蓝牙协议:IEEE 802.15

  • PPP协议:点对点协议

典型设备

  • 网桥(Bridge)

  • 交换机(Switch)

  • 网卡(NIC)

数据单位:帧(Frame)

第3层:网络层 (Network Layer)

功能职责

  • 路径选择和路由

  • 逻辑地址分配(IP地址)

  • 数据包转发

  • 网络互连

核心概念

  1. IP地址体系

IPv4地址结构:
┌─────────────┬─────────────┐
│   网络部分  │   主机部分  │
└─────────────┴─────────────┘
32位 = 网络位 + 主机位
 
IPv6地址结构:
128位,8个16进制数段
2001:0db8:85a3:0000:0000:8a2e:0370:7334
  1. 路由算法

    • 距离向量算法:RIP(Routing Information Protocol)

    • 链路状态算法:OSPF(Open Shortest Path First)

    • 路径向量算法:BGP(Border Gateway Protocol)

  2. 子网划分

网络地址:192.168.1.0/24
子网掩码:255.255.255.0
可用主机:254台(2^8-2)
广播地址:192.168.1.255

核心协议

  • IP协议:Internet Protocol

  • ICMP协议:Internet Control Message Protocol

  • ARP协议:Address Resolution Protocol

  • DHCP协议:Dynamic Host Configuration Protocol

典型设备

  • 路由器(Router)

  • 三层交换机

  • 防火墙

数据单位:数据包(Packet)

路由表事例(静态路由)

目标网络        子网掩码        网关          接口       跳数
0.0.0.0        0.0.0.0        192.168.1.1   eth0       1
192.168.1.0    255.255.255.0  0.0.0.0       eth0       0
10.0.0.0       255.0.0.0      192.168.1.254 eth0       2

第4层:传输层 (Transport Layer)

功能职责

  • 端到端的可靠数据传输

  • 流量控制和拥塞控制

  • 数据分段与重组

  • 端口复用

核心协议对比

特性

TCP

UDP

连接性

面向连接

无连接

可靠性

可靠传输

不可靠传输

流量控制

支持

不支持

拥塞控制

支持

不支持

开销

较大

较小

应用场景

文件传输、网页浏览

视频流、游戏

TCP协议详解

  1. TCP头部结构

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
├─────────────────────────────────┬─────────────────────────────────┤
│          源端口号(16位)          │         目标端口号(16位)         │
├─────────────────────────────────────────────────────────────────┤
│                      序列号(32位)                                │
├─────────────────────────────────────────────────────────────────┤
│                      确认号(32位)                                │
├─────┬─────┬─┬─┬─┬─┬─┬─────────────┬─────────────────────────────────┤
│头长度│保留 │U│A│P│R│S│F│   窗口大小   │          校验和(16位)          │
├─────┴─────┴─┴─┴─┴─┴─┴─────────────┼─────────────────────────────────┤
│                              │         紧急指针(16位)         │
└─────────────────────────────────┴─────────────────────────────────┘
  1. TCP三次握手

客户端                                  服务器
   │                                      │
   │────────── SYN(seq=x) ──────────────→│
   │                                      │
   │←───── SYN+ACK(seq=y,ack=x+1) ──────│
   │                                      │
   │────────── ACK(ack=y+1) ────────────→│
   │                                      │
   │            连接建立完成               │
  1. TCP四次挥手

客户端                                  服务器
   │                                      │
   │────────── FIN(seq=x) ──────────────→│
   │                                      │
   │←───────── ACK(ack=x+1) ─────────────│
   │                                      │
   │←───────── FIN(seq=y) ───────────────│
   │                                      │
   │────────── ACK(ack=y+1) ────────────→│
   │                                      │
   │            连接断开完成               │
  1. TCP拥塞控制算法

    • 慢启动:指数增长

    • 拥塞避免:线性增长

    • 快重传:重复ACK触发

    • 快恢复:避免慢启动

数据单位:段(Segment)

第5层:会话层 (Session Layer)

功能职责

  • 建立、管理和终止会话

  • 会话检查点和恢复

  • 数据同步

  • 对话控制

核心机制

  1. 会话建立过程

应用A                    会话层                    应用B
  │                        │                        │
  │──── 会话建立请求 ────→ │                        │
  │                        │ ──── 连接建立 ────→   │
  │                        │ ←──── 连接确认 ──────  │
  │ ←─── 会话建立确认 ──── │                        │
  │                        │                        │
  │        会话建立完成        │
  1. 对话模式

    • 单工:单向数据传输

    • 半双工:双向交替传输

    • 全双工:双向同时传输

典型协议

  • NetBIOS:网络基本输入输出系统

  • RPC:远程过程调用

  • SQL Session:数据库会话

  • LDAP Session:目录访问会话

第6层:表示层 (Presentation Layer)

功能职责

  • 数据格式转换

  • 数据加密解密

  • 数据压缩解压

  • 字符编码转换

核心功能

  1. 数据格式转换

应用层格式 ──→ 网络标准格式 ──→ 目标应用格式
    │              │              │
    ▼              ▼              ▼
  本地格式      ASN.1/XDR       目标格式
 
  1. 加密算法类型

    • 对称加密:AES、DES、3DES

    • 非对称加密:RSA、ECC、DSA

    • 哈希算法:MD5、SHA-1、SHA-256

  2. 压缩算法

  • 无损压缩:LZ77、LZ78、Huffman

  • 有损压缩:JPEG、MP3、MPEG

  • 字符编码

编码类型:
├── ASCII:7位英文字符
├── UTF-8:变长Unicode编码
├── UTF-16:16位Unicode编码
├── GBK:中文字符编码
└── ISO-8859:西欧字符编码

第7层:应用层 (Application Layer)

功能职责

  • 为应用程序提供网络服务

  • 用户接口

  • 网络资源访问

主要协议分类

  1. Web服务协议

    • HTTP/HTTPS:超文本传输协议

    • WebSocket:全双工通信协议

    • REST/GraphQL:API接口标准

  2. 文件传输协议

    • FTP/SFTP:文件传输协议

    • SMB/CIFS:网络文件共享

    • NFS:网络文件系统

  3. 邮件协议

    • SMTP:简单邮件传输协议

    • POP3/IMAP:邮件接收协议

  4. 远程访问协议

    • SSH:安全外壳协议

    • Telnet:远程登录协议

    • RDP:远程桌面协议

  5. 域名系统

    • DNS:域名解析系统

    • mDNS:多播DNS

HTTP协议详解

  1. HTTP请求结构

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Connection: keep-alive
 
[请求体]
  1. HTTP响应结构

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Server: Apache/2.4.41
Cache-Control: max-age=3600
 
[响应体]
  1. HTTP状态码

1xx:信息性状态码
├── 100 Continue
└── 101 Switching Protocols
 
2xx:成功状态码
├── 200 OK
├── 201 Created
└── 204 No Content
 
3xx:重定向状态码
├── 301 Moved Permanently
├── 302 Found
└── 304 Not Modified
 
4xx:客户端错误
├── 400 Bad Request
├── 401 Unauthorized
├── 403 Forbidden
└── 404 Not Found
 
5xx:服务器错误
├── 500 Internal Server Error
├── 502 Bad Gateway
└── 503 Service Unavailable

OSI模型与TCP/IP模型对比

OSI层次

OSI模型

TCP/IP模型

主要协议

7

应用层

应用层

HTTP、FTP、SMTP、DNS

6

表示层

SSL/TLS、JPEG、MPEG

5

会话层

NetBIOS、RPC

4

传输层

传输层

TCP、UDP

3

网络层

网络层

IP、ICMP、ARP

2

数据链路层

网络接口层

Ethernet、WiFi

1

物理层

网线、光纤、无线

数据封装与解封装过程

数据封装过程(发送端)

应用层:     [应用数据]
             ↓
表示层:     [格式化数据]
             ↓
会话层:     [会话头|数据]
             ↓
传输层:     [TCP头|数据] (段 Segment)
             ↓
网络层:     [IP头|TCP头|数据] (包 Packet)
             ↓
数据链路层: [帧头|IP头|TCP头|数据|帧尾] (帧 Frame)
             ↓
物理层:     [比特流] (比特 Bits)

数据解封装过程(接收端)

物理层:     [比特流] → 比特流转换为帧
             ↓
数据链路层: [帧头|IP头|TCP头|数据|帧尾] → 去除帧头帧尾
             ↓
网络层:     [IP头|TCP头|数据] → 去除IP头
             ↓
传输层:     [TCP头|数据] → 去除TCP头
             ↓
会话层:     [数据] → 建立会话
             ↓
表示层:     [数据] → 格式转换
             ↓
应用层:     [应用数据] → 交给应用程序

Web浏览器访问网站的完整过程

  1. 应用层:用户在浏览器输入URL

  2. 表示层:浏览器解析URL,准备HTTP请求

  3. 会话层:建立与服务器的会话

  4. 传输层:TCP三次握手建立连接

  5. 网络层:IP路由寻找服务器

  6. 数据链路层:以太网帧传输

  7. 物理层:通过网线/WiFi传输比特流

网页抓包解读

事例1Willem博客

# ==========================================
# 1. 基础请求信息 (General Info)
# ==========================================
Request URL:    https://cdn.bk.wished.cc/...      # 请求的目标资源地址
Request Method: GET                               # 获取资源的请求方法
Status Code:    304 Not Modified                  # 【关键】状态码 304。
                                                  # 含义:资源未修改,直接使用本地缓存。
                                                  # 节省了下载流量,但仍产生了一次请求往返。
Remote Address: 108.162.198.131:443               # 远程服务器 IP (这是 Cloudflare 的 CDN 节点 IP)
Referrer Policy: strict-origin-when-cross-origin  # 安全策略:跨域时只发送域名,不发送具体路径

# ==========================================
# 2. 响应头 (Response Headers) - 服务器发回来的
# ==========================================
server:           cloudflare                      # 服务器类型:Cloudflare CDN
date:             Tue, 25 Nov 2025 03:46:09 GMT   # 服务器当前的准确时间

# --- 缓存与性能核心指标 ---
cf-cache-status:  DYNAMIC                         # CF 缓存状态:动态。
                                                  # 意味着 Cloudflare 没有缓存此页面,请求回到了你的源站。
server-timing:    cfOrigin;dur=708                # 【性能重点】回源耗时。
                                                  # 表示你的 Halo 源站处理这个请求花费了 708 毫秒。
last-modified:    Tue, 25 Nov 2025 03:44:33 GMT   # 【304 核心】服务器上文件的最后修改时间。
                                                  # 服务器对比发现这个时间和浏览器传来的时间一致,
                                                  # 所以决定返回 304。

# --- 缓存控制 ---
cache-control:    max-age=3, s-maxage=120...      # 浏览器缓存 3秒,CDN 缓存 120秒。
strict-transport-security: max-age=31536000       # HSTS:强制浏览器在未来一年内只使用 HTTPS 访问。

# --- 追踪与调试 ---
cf-ray:           9a3e28464e8e9e53-SJC            # 请求 ID。SJC 代表美国圣何塞节点。
alt-svc:          h3=":443"; ma=86400             # 告诉浏览器:服务器支持 HTTP/3 协议,下次可以用 HTTP/3 连。

# ==========================================
# 3. 请求头 (Request Headers) - 浏览器发出去的
# ==========================================
:authority:       cdn.bk.wished.cc                # HTTP/2 协议头,相当于以前的 Host
:method:          GET
:path:            /archives/wei-ming-ming...      # 请求的具体路径

# --- 协商缓存的“暗号” ---
if-modified-since: Tue, 25 Nov 2025 03:44:33 GMT  # 【304 核心】浏览器询问:
                                                  # “我有这个时间的旧文件,服务器你那边有更新的吗?”
                                                  # 这是一个条件请求,如果服务器没更新,就回 304。

# --- 身份与 Cookie ---
cookie:
  language=zh-CN;                                 # 偏好语言
  sl-session=gEqKFJV3JmnCUR...;                   # 【重要】Halo 博客的登录 Session,说明你是管理员/登录用户。
  cf_clearance=V6Y0bnznKObn...                    # Cloudflare 验证 Cookie,证明你已通过人机验证。

# --- 浏览器指纹 ---
user-agent:       Mozilla/5.0... Chrome/142.0...  # 浏览器版本信息 (Chrome 142)
sec-ch-ua-platform: "macOS"                       # 操作系统:macOS
accept:           text/html,...                   # 浏览器告诉服务器:我能看懂 HTML, 图片等格式。
accept-encoding:  gzip, deflate, br, zstd         # 浏览器支持的压缩格式 (zstd 是最新的算法)。

事例2 华为

Request URL
https://bbs.huaweicloud.com/blogs/378087  // 请求的目标资源地址(华为云博客文章详情页)

Request Method
GET  // 请求方法:GET用于获取资源

Status Code
200 OK  // 状态码:请求成功,服务器已成功返回请求的数据

Remote Address
218.10.185.46:443  // 远程地址:实际连接的服务器IP(通常是CDN边缘节点IP)和端口(HTTPS默认为443)

Referrer Policy
strict-origin-when-cross-origin  // 来源策略:跨域请求时,仅发送来源的协议、域名和端口,不发送具体路径,保护隐私

access-control-allow-credentials
true  // CORS(跨域资源共享)响应头:允许前端请求携带凭证(如Cookies、HTTP认证信息)

access-control-expose-headers
wise_traceid,csrf,X-Language,x-transaction-id,workstation-id  // CORS响应头:指定浏览器端的JavaScript代码可以访问哪些特定的响应头字段

cache-control
public  // 缓存控制:响应可以被任何对象缓存(包括浏览器、CDN、代理服务器)

content-encoding
br  // 内容编码:使用 Brotli 算法压缩响应体(比 Gzip 压缩率更高,能节省带宽)

content-security-policy
frame-ancestors https://developer.martech.saas.huaweicloud.com  // 内容安全策略(CSP):限制此页面只能被嵌入到指定域名的 iframe 中,防止点击劫持攻击

content-type
text/html; charset=utf-8  // 内容类型:响应体是 HTML 文档,字符集为 UTF-8

date
Tue, 25 Nov 2025 04:10:07 GMT  // 响应生成的服务器时间(格林威治标准时间)

server
openresty  // 服务器软件:使用的是 OpenResty(基于 Nginx 的高性能 Web 平台,常用于负载均衡和网关)

strict-transport-security
max-age=31536000; includeSubdomains;  // HSTS安全头:强制浏览器在未来一年(31536000秒)内只使用 HTTPS 访问该域名及其子域名,防止降级攻击

via
CHN-HLhegang-AREACUCC1-CACHE22[187],CHN-HLhegang-AREACUCC1-CACHE30[181,TCP_MISS,186],CHN-TJ-GLOBAL6-CACHE114[113],CHN-TJ-GLOBAL6-CACHE140[110,TCP_MISS,111]
// 代理路径:记录请求经过的 CDN 节点链路。
// [TCP_MISS] 表示该节点没有缓存,需要回源抓取;
// 路径显示经过了黑龙江鹤岗(HLhegang)和天津(TJ)的节点。

x-ccdn-cachettl
0  // CDN 自定义头:缓存生存时间(TTL)为 0,暗示该资源可能不允许在 CDN 节点长时间缓存,或者是动态内容

x-ccdn-origin-time
110  // CDN 自定义头:回源耗时,单位通常是毫秒(CDN 节点从源站获取数据花了 110ms)

x-ccdn-req-id-46b1
03a037e974369ca857409a246cdff6ec  // CDN 自定义头:请求的唯一标识 ID,用于日志追踪和故障排查

x-content-type-options
nosniff  // 安全头:禁止浏览器“嗅探”文件类型,强制使用 declared content-type,防止 MIME 类型混淆攻击

x-download-options
noopen  // 安全头(IE特有):禁止在该站点直接打开下载的文件,必须先保存,防止恶意脚本自动运行

x-download-options
noopen  // [重复] 同上,可能是配置冗余

x-frame-options
SAMEORIGIN  // 安全头:禁止该页面被其他域名的页面嵌入 iframe(除了同源域名),用于防御点击劫持

x-hcs-proxy-type
0  // 华为云(HCS)自定义头:代理类型标识,0 可能代表某种特定的路由或网关模式

x-readtime
55  // 自定义性能指标:可能是服务器读取数据或处理逻辑的耗时(55ms)

x-server-id
a1475dce553405d4488597fcdcc6c4ed-777b564794-gsfkf  // 后端服务器标识:用于定位具体处理请求的后端实例(容器或虚拟机)

x-xss-protection
1; mode=block  // 安全头:启用浏览器的 XSS 过滤器,检测到攻击时直接阻止页面加载

x-xss-protection
1; mode=block;  // [重复] 同上,配置冗余

:authority
bbs.huaweicloud.com  // HTTP/2 伪头部:对应 HTTP/1.1 的 Host 头部,指明请求的域名

:method
GET  // HTTP/2 伪头部:请求方法

:path
/blogs/378087  // HTTP/2 伪头部:请求的路径

:scheme
https  // HTTP/2 伪头部:协议类型

accept
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
// 客户端接收类型:告诉服务器浏览器支持的文件格式(HTML, XML, 图片等),权重 q 代表优先级

accept-encoding
gzip, deflate, br, zstd  // 客户端支持的压缩算法:浏览器支持 gzip, deflate, br (Brotli), zstd

accept-language
zh-CN,zh;q=0.9  // 客户端语言偏好:首选简体中文

cache-control
max-age=0  // 请求缓存控制:浏览器告诉服务器“我不要缓存,给我最新的数据”(通常是用户按了 F5 刷新触发)

cookie
koocdp_sid=...; HWWAFSESID=...; HWWAFSESTIME=...; ...
// Cookie 信息:
// HWWAFSESID / HWWAFSESTIME: 华为云 WAF(Web应用防火墙)的会话ID和时间戳,用于安全防护。
// SessionID: 用户登录会话标识。
// locale=zh-cn: 用户语言设置。

priority
u=0, i  // HTTP 优先级提示:HTTP/3 或 HTTP/2 的特性,告诉服务器该请求的优先级

sec-ch-ua
"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"
// 客户端提示(Client Hints):浏览器品牌和版本。
// 注意:Chrome v142 目前(2025年)是一个非常新的版本(可能是开发版/金丝雀版),或者是为了测试伪造的 UA。

sec-ch-ua-mobile
?0  // 客户端提示:?0 表示不是移动设备(是桌面端)

sec-ch-ua-platform
"macOS"  // 客户端提示:操作系统是 macOS

sec-fetch-dest
document  // 请求目的:这是一个顶级文档导航请求(即浏览器地址栏访问或点击链接)

sec-fetch-mode
navigate  // 请求模式:这是一个页面跳转导航

sec-fetch-site
none  // 请求来源关系:none 表示用户直接输入地址、点击书签或从其他非Web应用打开的,不是从其他网页跳转过来的

sec-fetch-user
?1  // 用户激活:?1 表示此请求是由用户交互(如点击)触发的

upgrade-insecure-requests
1  // 升级请求:告诉服务器如果支持 HTTPS,请将此请求重定向到 HTTPS

user-agent
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
// 用户代理字符串:传统的浏览器身份标识,指明是 macOS 上的 Chrome 142 版本

故障排查与网络诊断

分层故障排查方法

  1. 物理层故障

    • 网线连接检查

    • 网卡状态确认

    • 信号强度测试

  2. 数据链路层故障

    • MAC地址冲突

    • 交换机端口状态

    • VLAN配置错误

  3. 网络层故障

    • IP地址冲突

    • 路由表错误

    • 子网掩码配置

  4. 传输层故障

    • 端口被占用

    • 防火墙阻止

    • 连接超时

  5. 应用层故障

    • 服务未启动

    • 配置文件错误

    • 权限问题

常用诊断工具

# 物理层和数据链路层
ping -t 192.168.1.1      # 连通性测试
arp -a                   # ARP表查看
 
# 网络层
tracert www.baidu.com    # 路由跟踪
route print              # 路由表查看
 
# 传输层
netstat -an              # 端口状态查看
telnet 192.168.1.1 80    # 端口连通性测试
 
# 应用层
nslookup www.baidu.com   # DNS解析测试
curl -I http://example.com # HTTP头部测试

网络安全与OSI模型

各层安全措施

层次

安全威胁

防护措施

应用层

SQL注入、XSS

WAF、输入验证

表示层

数据泄露

加密、数字签名

会话层

会话劫持

会话令牌、超时控制

传输层

端口扫描

防火墙、端口隐藏

网络层

IP欺骗

路由过滤、ACL

数据链路层

MAC泛洪

端口安全、VLAN

物理层

物理接入

机房安全、线路保护

总结

OSI七层网络模型虽然在实际应用中不如TCP/IP模型普及,但它提供了完整的网络通信理论框架。理解OSI模型有助于:

  1. 系统化学习:按层次理解网络技术

  2. 故障定位:快速识别网络问题层次

  3. 技术选型:根据需求选择合适的网络技术

  4. 架构设计:设计可扩展的网络架构

  5. 安全防护:建立多层次安全防护体系

现代网络技术如SDN、NFV、5G等都在某种程度上体现了OSI模型的分层思想,证明了这一理论模型的持续价值和指导意义。