网络协议速查表
本文档提供网络协议的核心概念、关键指标和常用命令的快速参考。
1. OSI 七层模型与 TCP/IP 对比
OSI(Open Systems Interconnection)模型是 ISO 制定的网络通信参考模型,将网络通信分为七个抽象层次。TCP/IP 是互联网实际使用的协议栈,结构与 OSI 模型有所不同。
| 层级 | OSI 模型 | TCP/IP 模型 | 数据单位 | 典型协议 | 核心功能 |
|---|---|---|---|---|---|
| 7 | 应用层 (Application) | 应用层 | 报文 | HTTP, FTP, DNS, SMTP, SSH | 为应用程序提供网络服务接口 |
| 6 | 表示层 (Presentation) | 应用层 | 报文 | SSL/TLS, JPEG, MPEG | 数据格式转换、加密解密、压缩解压 |
| 5 | 会话层 (Session) | 应用层 | 报文 | NetBIOS, RPC | 建立、管理和终止会话 |
| 4 | 传输层 (Transport) | 传输层 | 段 (Segment) | TCP, UDP, QUIC | 端到端可靠或不可靠传输 |
| 3 | 网络层 (Network) | 网络层 | 包 (Packet) | IP, ICMP, ARP, OSPF | 路由选择、逻辑寻址 |
| 2 | 数据链路层 (Data Link) | 链路层 | 帧 (Frame) | Ethernet, Wi-Fi, PPP | 物理寻址、差错检测 |
| 1 | 物理层 (Physical) | 链路层 | 比特 (Bit) | RJ45, 光纤, 无线电 | 比特流传输 |
2. TCP 连接状态机
TCP 连接从建立到关闭会经历一系列状态转换。理解这些状态对于网络故障排查至关重要。
| 状态 | 说明 | 触发条件 |
|---|---|---|
| CLOSED | 初始状态,连接关闭 | 无连接时的默认状态 |
| LISTEN | 服务器等待连接 | 服务端调用 listen() |
| SYN_SENT | 已发送 SYN,等待响应 | 客户端调用 connect() |
| SYN_RCVD | 已收到 SYN,等待 ACK | 服务端收到 SYN 后发送 SYN+ACK |
| ESTABLISHED | 连接已建立 | 三次握手完成 |
| FIN_WAIT_1 | 主动关闭,已发 FIN | 主动方调用 close() |
| FIN_WAIT_2 | 主动关闭,等待对方 FIN | 收到对方 ACK |
| CLOSE_WAIT | 被动关闭,等待应用关闭 | 收到对方 FIN,发送 ACK |
| LAST_ACK | 被动关闭,等待最终 ACK | 发送 FIN 后 |
| CLOSING | 同时关闭,等待 ACK | 发 FIN 后收到 FIN 而非 ACK |
| TIME_WAIT | 主动关闭,等待 2MSL | 发送最终 ACK 后 |
状态转换要点
- TIME_WAIT 持续 2MSL(通常 60 秒),确保最后的 ACK 到达对方
- CLOSE_WAIT 过多通常意味着应用程序没有正确关闭连接
- SYN_SENT 持续存在可能是网络不通或防火墙阻止
3. TCP 标志位详解
TCP 首部包含 9 个标志位(RFC 9293),控制连接的建立、数据传输和关闭。
| 标志 | 名称 | 说明 | 典型场景 |
|---|---|---|---|
| SYN | Synchronize | 同步序列号,建立连接 | 三次握手的第 1、2 步 |
| ACK | Acknowledgment | 确认号有效 | 连接建立后所有报文必设 |
| FIN | Finish | 结束连接 | 四次挥手 |
| RST | Reset | 重置连接 | 连接异常、拒绝连接 |
| PSH | Push | 推送,立即交付应用 | 交互式数据传输 |
| URG | Urgent | 紧急指针有效 | 带外数据(极少使用) |
| ECE | ECN-Echo | ECN 回显 | 拥塞通知 |
| CWR | Congestion Window Reduced | 拥塞窗口减少 | 拥塞通知响应 |
| NS | Nonce Sum | 随机数和 | ECN 扩展 |
常见标志位组合
| 组合 | 含义 | 场景 |
|---|---|---|
| SYN | 连接请求 | 客户端发起连接 |
| SYN+ACK | 连接请求确认 | 服务端响应连接 |
| ACK | 确认 | 数据传输、握手完成 |
| FIN+ACK | 关闭请求 | 主动关闭连接 |
| RST | 重置连接 | 异常终止连接 |
| PSH+ACK | 数据推送 | 携带数据的正常传输 |
4. HTTP 状态码分类
HTTP 状态码分为五大类,每类代表不同类型的响应状态。
按类别速查
| 类别 | 范围 | 含义 | 常见场景 |
|---|---|---|---|
| 1xx | 100-199 | 信息性响应 | 协议切换、继续发送 |
| 2xx | 200-299 | 成功 | 请求正常处理完成 |
| 3xx | 300-399 | 重定向 | 需要进一步操作 |
| 4xx | 400-499 | 客户端错误 | 请求语法错误或无法完成 |
| 5xx | 500-599 | 服务端错误 | 服务器处理请求失败 |
常用状态码详解
| 状态码 | 含义 | 使用场景 |
|---|---|---|
| 200 | OK | 请求成功,返回响应体 |
| 201 | Created | 资源创建成功(POST 请求) |
| 204 | No Content | 成功但无返回内容(DELETE 请求) |
| 301 | Moved Permanently | 永久重定向,SEO 权重转移 |
| 302 | Found | 临时重定向 |
| 304 | Not Modified | 缓存有效,使用本地副本 |
| 307 | Temporary Redirect | 临时重定向,保持请求方法 |
| 308 | Permanent Redirect | 永久重定向,保持请求方法 |
| 400 | Bad Request | 请求语法错误 |
| 401 | Unauthorized | 需要身份认证 |
| 403 | Forbidden | 已认证但权限不足 |
| 404 | Not Found | 资源不存在 |
| 405 | Method Not Allowed | 请求方法不被允许 |
| 408 | Request Timeout | 请求超时 |
| 429 | Too Many Requests | 请求过于频繁,被限流 |
| 500 | Internal Server Error | 服务器内部错误 |
| 502 | Bad Gateway | 网关/代理收到无效响应 |
| 503 | Service Unavailable | 服务暂时不可用 |
| 504 | Gateway Timeout | 网关/代理超时 |
5. TCP vs UDP vs QUIC 对比
| 特性 | TCP | UDP | QUIC |
|---|---|---|---|
| 连接性 | 面向连接 | 无连接 | 面向连接 |
| 可靠性 | 可靠传输(确认、重传) | 不可靠 | 可靠传输 |
| 顺序保证 | 有序 | 无序 | 有序(流级别) |
| 队头阻塞 | 有(整个连接阻塞) | 无 | 无(流级别独立) |
| 流量控制 | 有 | 无 | 有 |
| 拥塞控制 | 有 | 无 | 有 |
| 加密 | 需额外 TLS | 无 | 内置 TLS 1.3 |
| 连接建立 | 3 次握手 (1.5 RTT) | 无 | 1-RTT / 0-RTT |
| 连接迁移 | 不支持 | 不适用 | 支持(Connection ID) |
| 头部开销 | 20 字节(最小) | 8 字节 | 变长(通常 20-40 字节) |
| 典型应用 | HTTP/1.1、HTTP/2、FTP、邮件 | DNS、直播、游戏、VoIP | HTTP/3 |
6. HTTP 版本演进
| 版本 | 年代 | 传输层 | 核心特性 | 主要改进 |
|---|---|---|---|---|
| HTTP/0.9 | 1991 | TCP | 单行协议 | 仅 GET,无头部 |
| HTTP/1.0 | 1996 | TCP | 头部、状态码 | 支持多种内容类型 |
| HTTP/1.1 | 1997 | TCP | 持久连接、管道化 | 连接复用、Host 头部 |
| HTTP/2 | 2015 | TCP | 二进制分帧、多路复用 | 头部压缩、服务器推送 |
| HTTP/3 | 2022 | QUIC | 基于 UDP、无队头阻塞 | 0-RTT、连接迁移 |
各版本连接开销
| 版本 | 首次连接 | 复用连接 |
|---|---|---|
| HTTP/1.1 | TCP (1.5 RTT) + TLS (2 RTT) = 3.5 RTT | TCP (1.5 RTT) + TLS (1 RTT) = 2.5 RTT |
| HTTP/2 | TCP (1.5 RTT) + TLS (2 RTT) = 3.5 RTT | TCP (1.5 RTT) + TLS (1 RTT) = 2.5 RTT |
| HTTP/3 | QUIC (1 RTT) = 1 RTT | 0-RTT |
7. IP 地址分类(IPv4)
传统分类(已废弃,仅供参考)
| 类别 | 地址范围 | 默认子网掩码 | 私有地址范围 |
|---|---|---|---|
| A | 1.0.0.0 ~ 126.255.255.255 | 255.0.0.0 | 10.0.0.0 ~ 10.255.255.255 |
| B | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 | 172.16.0.0 ~ 172.31.255.255 |
| C | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 | 192.168.0.0 ~ 192.168.255.255 |
| D | 224.0.0.0 ~ 239.255.255.255 | - | 组播地址 |
| E | 240.0.0.0 ~ 255.255.255.255 | - | 保留地址 |
特殊 IP 地址
| 地址 | 说明 |
|---|---|
| 0.0.0.0 | 当前主机,默认路由 |
| 127.0.0.0/8 | 本地回环地址 |
| 169.254.0.0/16 | 链路本地地址(DHCP 失败时自动分配) |
| 224.0.0.0/4 | 组播地址 |
| 255.255.255.255 | 本地广播地址 |
8. 常见端口号
| 端口 | 协议 | 服务 | 说明 |
|---|---|---|---|
| 20 | TCP | FTP Data | FTP 数据传输 |
| 21 | TCP | FTP Control | FTP 控制连接 |
| 22 | TCP | SSH | 安全远程登录 |
| 23 | TCP | Telnet | 不安全的远程登录(已淘汰) |
| 25 | TCP | SMTP | 邮件发送 |
| 53 | TCP/UDP | DNS | 域名解析 |
| 67/68 | UDP | DHCP | 动态主机配置 |
| 80 | TCP | HTTP | 网页浏览 |
| 110 | TCP | POP3 | 邮件接收 |
| 143 | TCP | IMAP | 邮件接收 |
| 443 | TCP | HTTPS | 安全网页浏览 |
| 465 | TCP | SMTPS | 安全邮件发送 |
| 587 | TCP | SMTP Submission | 邮件提交端口 |
| 993 | TCP | IMAPS | 安全 IMAP |
| 995 | TCP | POP3S | 安全 POP3 |
| 1433 | TCP | MSSQL | SQL Server |
| 1521 | TCP | Oracle | Oracle 数据库 |
| 3306 | TCP | MySQL | MySQL 数据库 |
| 3389 | TCP | RDP | Windows 远程桌面 |
| 5432 | TCP | PostgreSQL | PostgreSQL 数据库 |
| 6379 | TCP | Redis | Redis 缓存 |
| 8080 | TCP | HTTP Proxy | 常用 Web 代理端口 |
| 8443 | TCP | HTTPS Alt | HTTPS 备用端口 |
| 27017 | TCP | MongoDB | MongoDB 数据库 |
9. DNS 记录类型
| 类型 | 名称 | 说明 |
|---|---|---|
| A | Address | IPv4 地址记录 |
| AAAA | IPv6 Address | IPv6 地址记录 |
| CNAME | Canonical Name | 别名记录,指向另一个域名 |
| MX | Mail Exchange | 邮件服务器记录 |
| NS | Name Server | 域名服务器记录 |
| PTR | Pointer | 反向 DNS 记录(IP 到域名) |
| SOA | Start of Authority | 授权起始记录,包含区域信息 |
| SRV | Service | 服务记录,指定服务的服务器和端口 |
| TXT | Text | 文本记录,用于 SPF、DKIM 等 |
| CAA | Certificate Authority Authorization | 指定可以颁发证书的 CA |
10. 网络诊断命令速查
连通性测试
# 测试主机连通性
ping -c 4 google.com # Linux: 发送 4 个包
ping -n 4 google.com # Windows: 发送 4 个包
# 追踪路由路径
traceroute google.com # Linux
tracert google.com # Windows
# 使用 ICMP 探测路径 MTU
ping -s 1472 -M do google.com # Linux: 发送 1472 字节(不含头部)
DNS 查询
# 基本查询
nslookup google.com
# 详细查询
dig google.com # Linux
dig @8.8.8.8 google.com # 指定 DNS 服务器
# 查询特定记录
dig google.com MX # 查询 MX 记录
dig -x 8.8.8.8 # 反向查询
端口与连接
# 查看网络连接状态
netstat -tunlp # Linux: 显示监听端口
netstat -an | grep ESTAB # 查看已建立连接
# 更现代的替代命令
ss -tunlp # 显示 TCP/UDP 监听端口
ss -t state established # 查看已建立的 TCP 连接
# 测试端口连通性
telnet 192.168.1.1 80
nc -zv 192.168.1.1 80 # 更推荐的方式
抓包分析
# 抓取特定端口的流量
tcpdump -i eth0 port 80
# 抓取 TCP SYN 包(新建连接)
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
# 保存到文件
tcpdump -i eth0 -w capture.pcap
# 读取抓包文件
tcpdump -r capture.pcap
# 显示详细信息
tcpdump -i eth0 -nn -vvv port 443
Linux 网络配置
# 查看网络接口
ip addr show
ip link show
# 查看路由表
ip route show
# 查看邻居表(ARP)
ip neigh show
# 添加临时 IP
ip addr add 192.168.1.100/24 dev eth0
# 添加路由
ip route add 10.0.0.0/8 via 192.168.1.1
11. TLS/SSL 配置要点
推荐配置
| 项目 | 推荐值 |
|---|---|
| 协议版本 | TLS 1.3(首选)、TLS 1.2 |
| 禁用版本 | SSLv2、SSLv3、TLS 1.0、TLS 1.1 |
| 证书类型 | ECC(ECDSA)优先,RSA 兼容 |
| 密钥交换 | ECDHE(前向保密) |
| 对称加密 | AES-256-GCM、ChaCha20-Poly1305 |
| HSTS | 启用,max-age ≥ 31536000 |
Nginx HTTPS 配置示例
server {
listen 443 ssl http2;
server_name example.com;
# 证书配置
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
# 协议和加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# 会话缓存
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
# HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
}
12. 网络性能关键指标
| 指标 | 全称 | 说明 |
|---|---|---|
| RTT | Round Trip Time | 往返时延,数据包往返所需时间 |
| 带宽 | Bandwidth | 链路最大传输速率(理论值) |
| 吞吐量 | Throughput | 实际数据传输速率 |
| 丢包率 | Packet Loss Rate | 丢失数据包占比 |
| 延迟 | Latency | 数据从源到目的的单向传输时间 |
| 抖动 | Jitter | 延迟的变化程度 |
性能测试命令
# 测试带宽
iperf3 -c server_ip # 客户端
iperf3 -s # 服务端
# 测试延迟
ping -c 10 google.com | tail -1
# 使用 MTR 综合诊断
mtr google.com
13. NAT 类型速查
| 类型 | 映射规则 | 入站限制 | 穿透难度 |
|---|---|---|---|
| Full Cone | 固定映射 | 无限制 | 低 |
| Restricted Cone | 固定映射 | IP 白名单 | 低 |
| Port Restricted Cone | 固定映射 | IP:端口 白名单 | 中 |
| Symmetric | 随目标变化 | 严格匹配 | 高 |
14. 常见错误码速查
TCP/Socket 错误
| 错误码 | 含义 | 可能原因 |
|---|---|---|
| ECONNREFUSED | 连接被拒绝 | 目标端口无服务监听 |
| ETIMEDOUT | 连接超时 | 网络不通、防火墙阻止 |
| ECONNRESET | 连接重置 | 对方发送 RST,可能是服务崩溃 |
| EPIPE | 管道断裂 | 向已关闭的连接写数据 |
| ENOTCONN | 未连接 | 在未连接的 socket 上操作 |
| EADDRINUSE | 地址已使用 | 端口被占用 |
| ENETUNREACH | 网络不可达 | 路由问题 |
DNS 错误
| RCODE | 含义 | 说明 |
|---|---|---|
| 0 | NOERROR | 查询成功 |
| 1 | FORMERR | 格式错误 |
| 2 | SERVFAIL | 服务器错误 |
| 3 | NXDOMAIN | 域名不存在 |
| 4 | NOTIMP | 未实现该查询类型 |
| 5 | REFUSED | 拒绝查询 |
[!TIP] 本速查表提供快速参考,详细信息请参阅对应章节的完整教程。遇到网络问题时,建议使用
tcpdump或 Wireshark 进行深入分析。