网络协议速查表
本文档汇总网络协议的关键知识点,方便快速查阅。
OSI 七层模型
| 层次 | 名称 | 功能 | 数据单位 | 典型协议 |
|---|---|---|---|---|
| 7 | 应用层 | 提供网络服务 | 报文 | HTTP, FTP, DNS |
| 6 | 表示层 | 数据格式转换 | 报文 | SSL/TLS |
| 5 | 会话层 | 会话管理 | 报文 | RPC |
| 4 | 传输层 | 端到端传输 | 段 | TCP, UDP |
| 3 | 网络层 | 路由寻址 | 包 | IP, ICMP, ARP |
| 2 | 数据链路层 | 物理寻址 | 帧 | Ethernet |
| 1 | 物理层 | 比特传输 | 比特 | RS-232 |
TCP/IP 四层模型
| 层次 | 对应 OSI | 典型协议 |
|---|---|---|
| 应用层 | 应用层、表示层、会话层 | HTTP, FTP, DNS, SMTP |
| 传输层 | 传输层 | TCP, UDP |
| 网际层 | 网络层 | IP, ICMP, ARP |
| 网络接口层 | 数据链路层、物理层 | Ethernet, WiFi |
TCP 关键信息
TCP 首部(20 字节起)
| 字段 | 大小 | 说明 |
|---|---|---|
| 源端口 | 16 位 | 发送方端口 |
| 目的端口 | 16 位 | 接收方端口 |
| 序号 | 32 位 | 数据字节序号 |
| 确认号 | 32 位 | 期望收到的序号 |
| 数据偏移 | 4 位 | 首部长度 |
| 标志位 | 6 位 | SYN, ACK, FIN, RST, PSH, URG |
| 窗口大小 | 16 位 | 接收窗口 |
| 校验和 | 16 位 | 差错检测 |
| 紧急指针 | 16 位 | 紧急数据位置 |
TCP 标志位
| 标志 | 含义 |
|---|---|
| SYN | 发起连接 |
| ACK | 确认有效 |
| FIN | 关闭连接 |
| RST | 重置连接 |
| PSH | 推送数据 |
| URG | 紧急数据 |
TCP 三次握手
客户端 -> 服务器: SYN, seq=x
服务器 -> 客户端: SYN+ACK, seq=y, ack=x+1
客户端 -> 服务器: ACK, seq=x+1, ack=y+1
TCP 四次挥手
客户端 -> 服务器: FIN, seq=u
服务器 -> 客户端: ACK, ack=u+1
服务器 -> 客户端: FIN, seq=w
客户端 -> 服务器: ACK, ack=w+1
TCP 状态
| 状态 | 说明 |
|---|---|
| LISTEN | 等待连接 |
| SYN_SENT | 发送 SYN 后等待 |
| SYN_RCVD | 收到 SYN 后等待 ACK |
| ESTABLISHED | 连接建立 |
| FIN_WAIT_1 | 发送 FIN 后等待 ACK |
| FIN_WAIT_2 | 收到 ACK 后等待 FIN |
| TIME_WAIT | 主动关闭方等待 2MSL |
| CLOSE_WAIT | 被动关闭方等待应用关闭 |
| LAST_ACK | 发送 FIN 后等待 ACK |
| CLOSED | 连接关闭 |
UDP 关键信息
UDP 首部(8 字节)
| 字段 | 大小 | 说明 |
|---|---|---|
| 源端口 | 16 位 | 发送方端口 |
| 目的端口 | 16 位 | 接收方端口 |
| 长度 | 16 位 | 数据报总长度 |
| 校验和 | 16 位 | 差错检测 |
TCP vs UDP
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 顺序 | 有序 | 无序 |
| 流量控制 | 有 | 无 |
| 拥塞控制 | 有 | 无 |
| 首部大小 | 20+ 字节 | 8 字节 |
| 适用场景 | 文件传输、邮件 | 实时通信、DNS |
IP 关键信息
IPv4 首部(20 字节起)
| 字段 | 大小 | 说明 |
|---|---|---|
| 版本 | 4 位 | IPv4=4 |
| 首部长度 | 4 位 | 以 4 字节为单位 |
| 服务类型 | 8 位 | QoS |
| 总长度 | 16 位 | 数据报总长度 |
| 标识 | 16 位 | 分片标识 |
| 标志 | 3 位 | DF, MF |
| 片偏移 | 13 位 | 分片偏移 |
| TTL | 8 位 | 生存时间 |
| 协议 | 8 位 | 上层协议 |
| 校验和 | 16 位 | 首部校验 |
| 源地址 | 32 位 | 发送方 IP |
| 目的地址 | 32 位 | 接收方 IP |
IPv4 地址分类
| 类别 | 范围 | 默认子网掩码 |
|---|---|---|
| A | 1.0.0.0 - 126.255.255.255 | 255.0.0.0 |
| B | 128.0.0.0 - 191.255.255.255 | 255.255.0.0 |
| C | 192.0.0.0 - 223.255.255.255 | 255.255.255.0 |
| D | 224.0.0.0 - 239.255.255.255 | 组播地址 |
| E | 240.0.0.0 - 255.255.255.255 | 保留 |
私有 IP 地址
| 类别 | 范围 |
|---|---|
| A | 10.0.0.0/8 |
| B | 172.16.0.0/12 |
| C | 192.168.0.0/16 |
协议号
| 协议号 | 协议 |
|---|---|
| 1 | ICMP |
| 6 | TCP |
| 17 | UDP |
| 41 | IPv6 |
| 89 | OSPF |
HTTP 关键信息
请求方法
| 方法 | 用途 | 幂等 |
|---|---|---|
| GET | 获取资源 | 是 |
| POST | 创建资源 | 否 |
| PUT | 更新资源 | 是 |
| PATCH | 部分更新 | 否 |
| DELETE | 删除资源 | 是 |
| HEAD | 获取响应头 | 是 |
| OPTIONS | 查询方法 | 是 |
状态码
| 类别 | 范围 | 含义 |
|---|---|---|
| 1xx | 100-199 | 信息性响应 |
| 2xx | 200-299 | 成功 |
| 3xx | 300-399 | 重定向 |
| 4xx | 400-499 | 客户端错误 |
| 5xx | 500-599 | 服务器错误 |
常见状态码
| 状态码 | 含义 |
|---|---|
| 200 | OK |
| 201 | Created |
| 204 | No Content |
| 301 | Moved Permanently |
| 302 | Found |
| 304 | Not Modified |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Internal Server Error |
| 502 | Bad Gateway |
| 503 | Service Unavailable |
常见请求头
| 头部 | 用途 |
|---|---|
| Host | 目标主机 |
| User-Agent | 客户端信息 |
| Accept | 可接受的类型 |
| Content-Type | 请求体类型 |
| Content-Length | 请求体长度 |
| Authorization | 认证信息 |
| Cookie | 发送 Cookie |
| Cache-Control | 缓存控制 |
常见响应头
| 头部 | 用途 |
|---|---|
| Content-Type | 响应体类型 |
| Content-Length | 响应体长度 |
| Content-Encoding | 响应体编码 |
| Set-Cookie | 设置 Cookie |
| Cache-Control | 缓存控制 |
| ETag | 资源标识 |
| Location | 重定向地址 |
Content-Type 常见值
| 类型 | 说明 |
|---|---|
| text/html | HTML 文档 |
| text/plain | 纯文本 |
| application/json | JSON 数据 |
| application/xml | XML 数据 |
| application/x-www-form-urlencoded | 表单数据 |
| multipart/form-data | 文件上传 |
DNS 关键信息
记录类型
| 类型 | 用途 |
|---|---|
| A | 域名到 IPv4 |
| AAAA | 域名到 IPv6 |
| CNAME | 域名别名 |
| MX | 邮件服务器 |
| NS | 域名服务器 |
| TXT | 文本记录 |
| SRV | 服务记录 |
| PTR | 反向解析 |
| SOA | 授权起始 |
常见端口号
| 端口 | 服务 |
|---|---|
| 20/21 | FTP |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP |
| 53 | DNS |
| 80 | HTTP |
| 110 | POP3 |
| 143 | IMAP |
| 443 | HTTPS |
| 3306 | MySQL |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 8080 | HTTP 代理 |
WebSocket 关键信息
帧操作码
| Opcode | 含义 |
|---|---|
| 0x0 | 继续帧 |
| 0x1 | 文本帧 |
| 0x2 | 二进制帧 |
| 0x8 | 关闭帧 |
| 0x9 | Ping 帧 |
| 0xA | Pong 帧 |
关闭状态码
| 状态码 | 含义 |
|---|---|
| 1000 | 正常关闭 |
| 1001 | 端点离开 |
| 1002 | 协议错误 |
| 1003 | 不支持的数据类型 |
| 1008 | 策略违规 |
| 1009 | 消息过大 |
| 1011 | 内部错误 |
常用命令
网络诊断
ping host # 测试连通性
traceroute host # 追踪路由
netstat -an # 查看连接状态
ss -tuln # 查看监听端口
lsof -i :port # 查看端口占用
tcpdump -i eth0 port 80 # 抓包
DNS 查询
dig example.com # 查询 A 记录
dig example.com MX # 查询 MX 记录
dig @8.8.8.8 example.com # 指定 DNS 服务器
nslookup example.com # DNS 查询
host example.com # 简单查询
HTTP 请求
curl http://example.com # GET 请求
curl -X POST -d "data" http://example.com # POST 请求
curl -H "Content-Type: application/json" http://example.com # 自定义头部
curl -I http://example.com # 只获取头部
wget http://example.com/file # 下载文件
SSL/TLS
openssl s_client -connect host:443 # 测试 TLS 连接
openssl x509 -in cert.pem -text -noout # 查看证书
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem # 生成自签名证书
快速计算
子网计算
子网数量 = 2^借位数
主机数量 = 2^主机位数 - 2(网络地址和广播地址)
示例:192.168.1.0/26
主机位数 = 32 - 26 = 6
主机数量 = 2^6 - 2 = 62
子网掩码 = 255.255.255.192
带宽计算
理论下载速度 = 带宽 / 8
示例:100Mbps 带宽
下载速度 = 100 / 8 = 12.5 MB/s
TCP 窗口计算
最大吞吐量 = 窗口大小 / RTT
示例:窗口 65535 字节,RTT 100ms
吞吐量 = 65535 / 0.1 = 655350 字节/秒 ≈ 5.2 Mbps