跳到主要内容

HTTP、TLS、DNS 与网络排障

🌐 网络是所有分布式系统的基础。深入理解 HTTP/TLS/DNS 才能高效排查生产问题。

HTTP 基础

常用状态码速查

状态码含义常见场景
200OK成功
201CreatedPOST 创建资源成功
301/302重定向域名迁移
400Bad Request请求参数错误
401Unauthorized未认证
403Forbidden无权限
404Not Found资源不存在
429Too Many Requests限流
500Internal Server Error服务端异常
502Bad Gateway上游服务不可用
503Service Unavailable服务过载

HTTP/1.1 vs HTTP/2 vs HTTP/3

特性HTTP/1.1HTTP/2HTTP/3
协议TCPTCPQUIC(UDP)
多路复用
头部压缩HPACKQPACK
队头阻塞TCP 层仍有✅ 解决

TLS 握手流程

客户端 服务端
│── ClientHello(支持的加密套件)──▶│
│◀── ServerHello + 证书 ──────────│
│── 验证证书、生成预主密钥 ──────▶│
│◀──────── 握手完成 ─────────────│
│════ 对称加密通信 ════════════════│

证书验证要点

# 检查证书有效期和链
openssl s_client -connect example.com:443 -showcerts

# 验证证书
openssl verify -CAfile chain.pem cert.pem

DNS 解析流程

浏览器缓存 → 系统缓存(/etc/hosts) → 本地 DNS → 根服务器
TLD 服务器 → 权威 DNS → 返回 IP

DNS 记录类型

类型作用
A域名 → IPv4
AAAA域名 → IPv6
CNAME别名 → 另一个域名
MX邮件服务器
TXT验证(SPF、DKIM)
NS权威 DNS 服务器

网络排障工具

# 1. 连通性测试
ping example.com
traceroute example.com # 逐跳延迟

# 2. DNS 查询
dig example.com # 完整 DNS 查询
nslookup example.com 8.8.8.8 # 指定 DNS 服务器

# 3. HTTP 调试
curl -v https://example.com # 详细请求信息
curl -I https://example.com # 只看响应头
curl -w "%{time_total}" https://example.com # 耗时分析

# 4. 端口连通
telnet example.com 443
nc -zv example.com 443

# 5. 抓包
tcpdump -i eth0 port 443 -w capture.pcap
# 用 Wireshark 分析 .pcap 文件

常见误区

  • HTTPS 证书过期导致服务中断,应提前 30 天告警
  • DNS TTL 设置过长,切换 IP 时流量长时间不迁移
  • 排障时只看应用日志,忽略了网络层(丢包/重传)问题