HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • 代理技术全栈手册

    • 代理技术全栈手册 - HiHuo
    • 原理篇

      • 第01章 代理是什么:正向 / 反向 / 透明 / 隧道的统一模型
      • 第02章 代理与网络层级:L3 / L4 / L5 / L7 在哪里截断流量
      • 第03章 一个请求穿过代理的一生:连接生命周期全景
    • 协议篇

      • 第04章 HTTP 代理协议:绝对 URI、CONNECT 隧道、转发头与连接池
      • 第05章 HTTPS 与 TLS 代理:终止 / 透传 / MITM / SNI / mTLS
      • 第06章 SOCKS 协议:SOCKS4/4a/5 与 UDP ASSOCIATE 报文级解析
      • 第07章 HTTP/2、gRPC 与 HTTP/3(QUIC) 代理的挑战
      • 第08章 代理自动配置:PAC / WPAD / 系统代理 / NO_PROXY
    • 层级与转发篇

      • 第09章 L4 代理:TCP/UDP 转发与连接级负载均衡
      • 第10章 L7 代理:协议感知与基于内容的路由
      • 第11章 透明代理:iptables REDIRECT/DNAT、TPROXY 与 eBPF 劫持
      • 第12章 数据搬运的艺术:splice / sendfile / 零拷贝 / io_uring
    • 组件横评篇

      • 第13章 Nginx / OpenResty:反向代理、upstream 与 Lua 可编程
      • 第14章 HAProxy:L4/L7、ACL、健康检查与 stick table
      • 第15章 Envoy:xDS 动态配置与 filter chain,为何是云原生数据面
      • 第16章 Traefik / Caddy:自动服务发现与自动 HTTPS
      • 第17章 Squid 与正向/缓存代理:企业出网、缓存与审计
      • 第18章 mitmproxy:抓包、改包、脚本化调试
      • 第19章 内网穿透与隧道:frp / gost / SSH 隧道 / ngrok
      • 第20章 科学上网生态的技术原理(技术中立)
    • 多语言手写篇

      • 第21章 Go:100 行手写 HTTP/CONNECT + SOCKS5 代理
      • 第22章 Rust:基于 tokio 的高性能 TCP 代理
      • 第23章 Python:asyncio 实现,适合调试与脚本
      • 第24章 C:epoll 裸写与零拷贝,及语言选型对比
    • 容器与K8s篇

      • 第25章 Docker 里的代理:HTTP_PROXY、build/pull 与 daemon 配置
      • 第26章 Sidecar 与流量劫持:Istio init-container 的 iptables 原理
      • 第27章 Ingress 与南北流量:Ingress-nginx 与 Gateway API
      • 第28章 Egress 与出网治理:出口网关、registry mirror、审计
      • 第29章 Service Mesh 数据面:Envoy Sidecar 全链路
    • 进阶篇

      • 第30章 可编程代理:Lua / Wasm / eBPF / xDS,代理的"软件定义"
      • 第31章 性能调优:并发模型、连接池、超时与重试、压测
      • 第32章 排错决策树:502 / 504 / 握手失败 / 环路 / 泄漏
      • 第33章 代理安全:开放代理、SSRF、凭证泄漏与攻击面
    • 底层机制篇

      • 第34章 代理的背压与流控:一个代理最难的部分
      • 第35章 socket 与 TCP 状态机:半关闭、超时、连接生命周期
      • 第36章 HTTP/2 帧、流控与 HPACK:h2 代理的内部机制
      • 第37章 负载均衡算法推导与韧性状态机
      • 第38章 Capstone:把玩具代理改造成生产级骨架
    • 综合实战篇

      • 第39章 企业多跳转发链:拓扑、协议矩阵与贯穿性难题
      • 第40章 端到端实战:把 6 类流量全代理通
      • 第41章 更刁钻的流量:gRPC、长轮询、WebRTC、大文件、双向流
      • 第42章 可落地完整参考实现:一套能跑的多协议转发栈
    • 附录

      • 附录 A:代理协议报文速查(HTTP / SOCKS / PAC / PROXY protocol)
      • 附录 B:组件选型决策树
      • 附录 C:抓包与命令速查

代理技术全栈手册

从一根 TCP 连接讲到 Service Mesh 数据面——把"代理"这件事,从底层原理、协议细节、网络层级、多语言实现,一路讲到 Docker/K8s 里的真实落地。

这本手册解决什么

"代理"这个词被用得太泛了:浏览器里的 HTTP 代理、Nginx 反向代理、K8s 里的 kube-proxy、Istio 的 Sidecar、科学上网的 Clash——它们都叫"代理",但工作在不同的网络层级、说着不同的协议、解决着完全不同的问题。

大多数资料只讲其中一个切面,于是你会反复遇到这些困惑:

  • 正向代理和反向代理到底差在哪?透明代理又是什么?
  • HTTP CONNECT 和 SOCKS5 都能做隧道,区别在哪?什么时候该用谁?
  • 代理是工作在第几层?L4 和 L7 代理的本质差异是什么?
  • 为什么 Istio 能"零侵入"接管 Pod 的所有流量?iptables 在背后做了什么?
  • 同样是代理,Nginx、HAProxy、Envoy、Squid、mitmproxy、Clash 凭什么共存?
  • 我想自己写一个代理,Go / Rust / Python / C 各自适合写哪种?

这本手册的目标,是给你一套统一的代理心智模型:看到任何一个"代理",你都能立刻说清它在第几层、说什么协议、是哪种类型、灵活性来自哪里、在容器/K8s 里怎么落地。

你将获得

  • 统一模型:用一张图把正向/反向/透明/隧道四类代理收进同一个框架
  • 协议级理解:HTTP CONNECT、SOCKS4/5、TLS 终止/透传/MITM、PAC/WPAD 的报文级细节
  • 层级穿透:L3/L4/L5/L7 各层代理的截流点,透明代理的 iptables/TPROXY/eBPF 三种劫持法
  • 组件横评:Nginx / HAProxy / Envoy / Traefik / Squid / mitmproxy / frp / Clash 的选型与最小可跑配置
  • 多语言手写:用 Go / Rust / Python / C 从零实现 HTTP 与 SOCKS5 代理,理解"灵活性"从何而来
  • 容器落地:Docker 的 HTTP_PROXY、Istio 的流量劫持、Ingress 南北向、Egress 出网治理、Service Mesh 数据面

适合人群

  • 后端/平台工程师:想把散落各处的"代理"知识收敛成一套体系
  • 云原生工程师:要搞懂 Sidecar、Ingress、Mesh 数据面背后的代理原理
  • 运维/SRE:排查 502/504、握手失败、出网不通时需要协议级判断力
  • 想自己造轮子的人:理解一个生产级代理需要处理哪些细节

学习路线图

✅ 全书 42 章 + 3 附录已全部完成,点击标题即可阅读。(第八篇"底层机制"深挖原理,第九篇"综合实战"打通企业多跳转发与各类刁钻协议)

第一篇 · 原理与心智模型

章标题状态
01代理是什么:正向/反向/透明/隧道的统一模型✅
02代理与网络层级:L3/L4/L5/L7 在哪里截断流量✅
03一个请求穿过代理的一生:连接生命周期全景✅

第二篇 · 协议详解

章标题状态
04HTTP 代理协议:绝对 URI、CONNECT 隧道、转发头与连接池✅
05HTTPS 与 TLS 代理:终止 / 透传 / MITM / SNI / mTLS✅
06SOCKS 协议:SOCKS4/4a/5 与 UDP ASSOCIATE 报文级解析✅
07HTTP/2、gRPC 与 HTTP/3(QUIC) 代理的挑战✅
08代理自动配置:PAC / WPAD / 系统代理 / NO_PROXY✅

第三篇 · 网络层级与转发原理

章标题状态
09L4 代理:TCP/UDP 转发与连接级负载均衡✅
10L7 代理:协议感知与基于内容的路由✅
11透明代理:iptables REDIRECT/DNAT、TPROXY 与 eBPF 劫持✅
12数据搬运的艺术:splice / sendfile / 零拷贝 / io_uring✅

第四篇 · 主流组件横评(每个都给最小可跑配置)

章标题状态
13Nginx / OpenResty:反向代理、upstream 与 Lua 可编程✅
14HAProxy:L4/L7、ACL、健康检查与 stick table✅
15Envoy:xDS 动态配置与 filter chain,为何是云原生数据面✅
16Traefik / Caddy:自动服务发现与自动 HTTPS✅
17Squid 与正向/缓存代理:企业出网、缓存与审计✅
18mitmproxy:抓包、改包、脚本化调试✅
19内网穿透与隧道:frp / gost / SSH 隧道 / ngrok✅
20科学上网生态的技术原理:SS / V2Ray / Clash / sing-box(技术中立)✅

第五篇 · 各语言手写代理(从零实现,理解灵活性)

章标题状态
21Go:100 行手写 HTTP/CONNECT + SOCKS5 代理✅
22Rust:基于 tokio 的高性能 TCP 代理✅
23Python:asyncio 实现,适合调试与脚本✅
24C:epoll 裸写与零拷贝,及语言选型对比✅

第六篇 · 容器与 Kubernetes 中的代理

章标题状态
25Docker 里的代理:HTTP_PROXY、build/pull 走代理、daemon 配置✅
26Sidecar 与流量劫持:Istio init-container 的 iptables 原理✅
27Ingress 与南北流量:Ingress-nginx / Gateway API✅
28Egress 与出网治理:出口网关、registry mirror、审计✅
29Service Mesh 数据面:Envoy Sidecar 全链路✅

第七篇 · 灵活性、性能、排错与安全

章标题状态
30可编程代理:Lua / Wasm / eBPF / xDS,代理的"软件定义"✅
31性能调优:并发模型、连接池、超时与重试、压测✅
32排错决策树:502 / 504 / 握手失败 / 环路 / 连接泄漏✅
33代理安全:开放代理、SSRF、凭证泄漏与攻击面✅

第八篇 · 底层机制(深挖)

把"代理在压力下怎么活下来"讲透——这一篇是面向"真懂底层原理"的进阶读者。

章标题状态
34代理的背压与流控:一个代理最难的部分✅
35socket 与 TCP 状态机:半关闭、超时、连接生命周期✅
36HTTP/2 帧、流控与 HPACK:h2 代理的内部机制✅
37负载均衡算法推导与韧性状态机✅
38Capstone:把玩具代理改造成生产级骨架✅

第九篇 · 综合实战(企业多跳转发)

把全书拉进一个真实企业拓扑:边缘 nginx → K8s Ingress → 容器,把 web-vscode / SSH / WebSocket / SSE / 原始 TCP / 长连接全部代理通。

章标题状态
39企业多跳转发链:拓扑、协议矩阵与贯穿性难题✅
40端到端实战:把 6 类流量全代理通✅
41更刁钻的流量:gRPC / 长轮询 / WebRTC / 大文件 / 双向流✅
42可落地完整参考实现:一套能跑的多协议转发栈✅

附录

编号标题状态
A代理协议报文速查(HTTP / SOCKS / PAC)✅
B组件选型决策树✅
C抓包与命令速查✅

与本站其它手册的关系

代理处在网络与应用架构的交叉口,本手册只讲"代理"这条主线,与代理相关的底层和上层,交给对应的专册,避免重复:

  • 底层网络原理(TCP/TLS 握手、iptables/Netfilter、namespace、eBPF)→ 见 网络架构师学习手册,本手册引用不重写
  • 网关产品与服务治理(Kong、Istio 流量治理、灰度发布、熔断限流)→ 见 API 网关与服务治理手册,本手册讲"反向代理的原理",那里讲"网关作为产品怎么用"
  • K8s 网络与 Ingress 实操 → 见 K8s 实操课 与 网络手册的 Kubernetes 网络篇

一句话分工:network 讲"包怎么走",apiGateway 讲"网关怎么治理",本手册讲"代理本身是什么、怎么实现、怎么落地"。


章节结构

每章尽量遵循统一的"六件套",让你不只懂概念,还能上手:

  • 原理:核心机制、协议细节、为什么这样设计
  • ️ 实现:数据结构、内核路径、关键代码
  • 命令:常用工具、参数详解、真实输出解读
  • 代码:可运行示例、详细注释、环境要求
  • 实验:动手步骤、预期结果、抓包验证
  • 排错:常见故障、排查清单、解决方案

环境准备

# 推荐:Ubuntu 22.04+ / Debian 12+(或 macOS + 一台 Linux 实验机)
# 贯穿全书的工具
sudo apt update
sudo apt install -y curl socat netcat-openbsd tcpdump nginx \
                    iproute2 iptables dnsutils mitmproxy

# 抓包看协议(贯穿全书的核心手段)
sudo tcpdump -i any -n -A 'tcp port 8080'

# 多语言手写篇需要
# Go 1.21+ / Rust 1.75+ / Python 3.11+ / gcc

学习建议

  • 按序读前三篇:原理与协议是地基,跳过会导致后面"知其然不知其所以然"
  • 每章必抓包:代理的一切最终都体现在 socket 上的字节流,tcpdump/mitmproxy 是你最好的老师
  • 手写一遍:第五篇的代码请务必亲手敲、亲手跑,理解会指数级加深
  • 问题导向:线上排查时可直接跳到第七篇的排错决策树

开始你的代理之旅 → 第 01 章:代理是什么——正向/反向/透明/隧道的统一模型