B02 · 網路與協議 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → backend/ROADMAP.md


章節目標

後端工程師必須懂網路。不是記協議名字,是理解「封包從使用者鍵盤到你 handler 的完整路徑」。涵蓋 TCP/UDP / HTTP 三代演進 / DNS / TLS / WebSocket / gRPC / MQ 協議。讓讀者在 debug 連線問題、設計 API、選 real-time 方案時知道每一層在幹嘛。


🌱 基本介紹

#主題SlugStage大綱
01後端網路是什麼01-what-is-backend-network🌱從 socket 到 HTTP handler 的完整堆疊、OSI 7 層對應實際工作

❓ 為什麼需要

#主題SlugStage大綱
02為什麼不懂 TCP/UDP 會踩爆02-why-tcp-udp-matters🌱Nagle / delayed ack 造成的延遲、TIME_WAIT、connection pooling 錯誤設定、UDP 丟包你不 retry 誰 retry
03為什麼要懂 HTTP 三代演進03-why-http-evolution-matters🌱HTTP/1.1 的 head-of-line blocking、HTTP/2 多工但還有 TCP-level blocking、HTTP/3 over QUIC 真解決、影響 API 設計策略
04為什麼不懂 DNS 會被半夜 Page 起床04-why-dns-matters🌱DNS 快取失效、TTL 誤設、短 TTL 太多查詢、DNS pollution、Resolver 選擇的實際影響

🕰️ 演進

#主題SlugStage大綱
05HTTP 演進史05-http-evolution🌱HTTP/0.9 → 1.0 → 1.1(keep-alive、pipelining)→ 2(binary / stream / push)→ 3(QUIC / UDP-based)
06TLS 演進06-tls-evolution🌱SSL 2/3 → TLS 1.0/1.1/1.2 → 1.3;handshake 從 2-RTT 到 1-RTT / 0-RTT;cipher suite 汰換
07Real-time 協議演進07-realtime-protocol-evolution🌱Polling → Long Polling → SSE → WebSocket → WebTransport(HTTP/3 based)
07-2協議演進的驅動力(每個協議解了什麼痛點)07-2-protocol-evolution-drivers🌱匯整視角:TCP 解封包遺失/亂序、HTTP/2 解 head-of-line blocking、HTTP/3 解 TCP-level HOL、TLS 1.3 解 RTT 延遲、WebSocket 解 polling 浪費、SSE 解雙向但簡單需求、gRPC 解 JSON 效能與型別、QUIC 解連線遷移。每個協議都是前代痛點的解法,不是憑空出現

🧠 知識型

F02-A 傳輸層

#主題SlugStage大綱
08TCP 基礎與三次握手08-tcp-basics🌱SYN/SYN-ACK/ACK、狀態機(LISTEN / ESTABLISHED / TIME_WAIT)、Nagle / delayed ack / slow start
09UDP 基礎09-udp-basics🌱無連線、無可靠傳輸、適用場景(DNS / QUIC / 遊戲 / 影音)
10Connection Pool 原理10-connection-pool🌱為什麼要池化、idle connection 管理、keepalive、pool 大小怎麼算

F02-B 應用層協議

#主題SlugStage大綱
11HTTP/1.1 詳細11-http1-1-deep🌱Request / Response line、header、body、chunked transfer、keep-alive、Connection / Upgrade header
12HTTP/2 核心機制12-http2-core🌱Binary framing、stream、multiplexing、HPACK header 壓縮、server push(為何後來被廢)
13HTTP/3 / QUIC13-http3-quic🌱為什麼從 TCP 換到 UDP、connection migration、0-RTT、跟 CDN 整合
14gRPC 深入14-grpc-deep🌱Protobuf、4 種 streaming(unary / server / client / bidi)、HTTP/2 基礎、為什麼不用 REST
15GraphQL vs REST vs gRPC 選型15-api-protocol-selection🌱三者的適用場景、混用策略、Gateway 整合
15-2通訊協議選型(微服務)⛔️ micro-service/58-communication-protocols🌿跨系列

F02-C 基礎設施協議

#主題SlugStage大綱
16DNS 運作機制⛔️ infra/01-network-dns🌿跨系列
17TLS 基礎⛔️ infra/02-reverse-proxy-tls🌿跨系列
18TLS 1.3 深入18-tls-1-3-deep🌱Handshake 簡化、Forward Secrecy、cipher suite 選擇、mTLS 用途
19HTTPS 從頭到尾19-https-end-to-end🌱ClientHello → Certificate → Key Exchange → Application Data;SNI、OCSP stapling

F02-D Real-time 通訊

#主題SlugStage大綱
20WebSocket 深入⛔️ fundamentals/websocket / micro-service/26-websocket-sse🌿跨系列
21Server-Sent Events21-sse🌱HTTP 基礎單向推送、reconnect、跟 WebSocket tradeoff、AI chat streaming 為什麼愛用 SSE
22WebTransport(HTTP/3 based)22-webtransport🌱下一代 real-time;WebSocket + UDP datagram 合體;狀態:2026 各瀏覽器支援度
23Long Polling 跟它的坑23-long-polling🌱為什麼還有場景要用(老瀏覽器、proxy 限制)、實作陷阱

F02-E 訊息協議

#主題SlugStage大綱
24AMQP(RabbitMQ 用)24-amqp🌱Exchange / Queue / Binding、routing key、ack 機制
25MQTT(IoT 場景)25-mqtt🌱Publish / Subscribe、QoS 0/1/2、retained message、跟 AMQP 定位差異
26Kafka Protocol26-kafka-protocol🌱Log-based、partition / offset、跟 RabbitMQ 心智模型差異

🔧 小實作注意事項

#主題SlugStage大綱
27用 Wireshark 看 TCP handshake27-wireshark-tcp🌱實際抓包看 SYN → SYN-ACK → ACK、retransmission、TIME_WAIT
28用 curl / httpie 診斷 HTTP28-curl-http-debug🌱-v 看 header、--http2--http3-k 看 TLS chain
29openssl 看 TLS handshake29-openssl-tls-debug🌱openssl s_client -connect、檢查 cert chain、OCSP stapling
30connection pool 設定常見坑30-connection-pool-pitfalls🌱pool 太小 vs 太大、idle timeout 沒對齊、server 端 keepalive 跟 client 不一致

💣 Anti-pattern

#主題SlugStage大綱
31網路 Anti-patterns31-network-antipatterns🌱每個 request 開新 TCP connection(沒用 pool)、硬上 WebSocket 解可以 SSE 的問題、DNS TTL 訂 0 或訂 1 週、gRPC bidirectional streaming 濫用做簡單 CRUD、忽略 TIME_WAIT 沒調 tcp_tw_reuse

🧰 對應檢查工具

#主題SlugStage大綱
32網路診斷工具32-network-tools🌱Wireshark、tcpdump、mtr / traceroute、dig、openssl、curl/httpie、k6(壓測)、wrk2

📎 補充

#主題SlugStage大綱
S01為什麼 TCP 的 TIME_WAIT 存在s01-tcp-time-wait🌱防止 old packet 誤認、怎麼調(tcp_tw_reuse / tcp_tw_recycle 的坑)
S02HTTP Cache 完整指南s02-http-cache🌱Cache-Control / ETag / Last-Modified / Vary / CDN behaviour
S03CORS 從頭到尾s03-cors🌱Preflight、credential、simple request、為什麼後端工程師一定要懂

章節進度統計

  • 知識主題:32 + 3 補充 = 35 項
  • 🌿 growing:2(跨系列)
  • 🌱 seed:33

跨系列連結

  • infra/01-network-dnsinfra/02-reverse-proxy-tls(已有)
  • backend/api-design/ B09(協議選型)
  • backend/stress-testing/ B19(HTTP keep-alive / connection pool 壓測)
  • frontend/browser/ CH4(前端的 Request flow 視角)
  • micro-service/26-websocket-sse(WebSocket vs SSE 實戰)