跳到主要内容

网络协议速查表

本文档汇总网络协议的关键知识点,方便快速查阅。

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

特性TCPUDP
连接面向连接无连接
可靠性可靠不可靠
顺序有序无序
流量控制
拥塞控制
首部大小20+ 字节8 字节
适用场景文件传输、邮件实时通信、DNS

IP 关键信息

IPv4 首部(20 字节起)

字段大小说明
版本4 位IPv4=4
首部长度4 位以 4 字节为单位
服务类型8 位QoS
总长度16 位数据报总长度
标识16 位分片标识
标志3 位DF, MF
片偏移13 位分片偏移
TTL8 位生存时间
协议8 位上层协议
校验和16 位首部校验
源地址32 位发送方 IP
目的地址32 位接收方 IP

IPv4 地址分类

类别范围默认子网掩码
A1.0.0.0 - 126.255.255.255255.0.0.0
B128.0.0.0 - 191.255.255.255255.255.0.0
C192.0.0.0 - 223.255.255.255255.255.255.0
D224.0.0.0 - 239.255.255.255组播地址
E240.0.0.0 - 255.255.255.255保留

私有 IP 地址

类别范围
A10.0.0.0/8
B172.16.0.0/12
C192.168.0.0/16

协议号

协议号协议
1ICMP
6TCP
17UDP
41IPv6
89OSPF

HTTP 关键信息

请求方法

方法用途幂等
GET获取资源
POST创建资源
PUT更新资源
PATCH部分更新
DELETE删除资源
HEAD获取响应头
OPTIONS查询方法

状态码

类别范围含义
1xx100-199信息性响应
2xx200-299成功
3xx300-399重定向
4xx400-499客户端错误
5xx500-599服务器错误

常见状态码

状态码含义
200OK
201Created
204No Content
301Moved Permanently
302Found
304Not Modified
400Bad Request
401Unauthorized
403Forbidden
404Not Found
500Internal Server Error
502Bad Gateway
503Service 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/htmlHTML 文档
text/plain纯文本
application/jsonJSON 数据
application/xmlXML 数据
application/x-www-form-urlencoded表单数据
multipart/form-data文件上传

DNS 关键信息

记录类型

类型用途
A域名到 IPv4
AAAA域名到 IPv6
CNAME域名别名
MX邮件服务器
NS域名服务器
TXT文本记录
SRV服务记录
PTR反向解析
SOA授权起始

常见端口号

端口服务
20/21FTP
22SSH
23Telnet
25SMTP
53DNS
80HTTP
110POP3
143IMAP
443HTTPS
3306MySQL
5432PostgreSQL
6379Redis
8080HTTP 代理

WebSocket 关键信息

帧操作码

Opcode含义
0x0继续帧
0x1文本帧
0x2二进制帧
0x8关闭帧
0x9Ping 帧
0xAPong 帧

关闭状态码

状态码含义
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