Protocol in Code · Learning Paths

23 トラックを、公開順ではなく目的で読む。

Protocol in Code は 23 トラック / 151 セッションあります。誰も公開順に全部読む必要はありません。 このページはトラックをジャンルで束ね、さらに「初心者」「Web エンジニア」「インフラ」「セキュリティ」「SRE」の 5 つの目的別ルートを示します。 入門コース Protocol Lab(手を動かす hands-on コース)との対応表も最後に置いています。

English: The course has 23 tracks / 151 sessions. Nobody should read them in publication order. This page groups tracks by genre, then gives 5 goal-based roadmaps, plus a cross-reference table to Protocol Lab, the hands-on beginner sibling course.

Genres

9 ジャンルに束ねた 23 トラック

どのジャンルから読んでも、最後は総括トラック Same Shape(コース全体で繰り返された 5 つの構造のまとめ)で締めるのが推奨です。

基礎 Foundations

Packet Parser

Bytes、offset、bit mask — wire 上の何かを読む出発点。

経路制御 Routing

BGP → OSPF → RIP → RPKI

router がどう経路を決めるか: policy、link state、distance vector、origin trust。

L2とローカル The Local Segment

ARP → STP → IGMP

IP の手前で起きること: resolution、loop、そして 1 本の wire 上の multicast。

トランスポート Transport

TCP → TCP2 → QoS

信頼性のある配送、それを運用するコスト、トラフィックの pacing。

名前と信頼 Names & Trust

DNS → DNSSEC → TLS

名前で見つけること、そしてその答えを信じてよいかを決めること。

Webの配管 The Web Path

HTTP/QUIC → LB

parse された request から multiplex された stream、backend 選択まで。

アドレスと到達性 Addresses & Reachability

DHCP → NAT → ICE → ICMP

address を得ること、共有すること、NAT を越えること、エラーを読むこと。

時刻と生死 Time & Liveness

NTP → HA (VRRP+BFD)

今何時かを合わせること、そして沈黙から死を推論すること。

総括 Finale

Same Shape

コース全体で密かに繰り返されていた 5 つの code 構造。

Roadmaps by goal

目的別の 5 ルート

1. 初めてネットワークを学ぶ Complete beginner

この講座からではなく、まず Protocol Lab から始めます。Protocol Lab は hands-on-first — 2 台の router を動かし、パケットを capture し、protocol が code として読まれる前にまず挙動を見ます。

  1. Protocol Lab Lab 01–12(BGP → RPKI → DNS → TCP → TLS → HTTP → QUIC → end-to-end)
  2. この講座に戻る: Packet Parser(5)— byte レベルの土台
  3. DNS(8)— 一番親しみやすいトラック: loop、cache、失敗の型
  4. TCP(11)— state machine、timer、recovery
  5. Same Shape(5)— ここまでで繰り返し構造を一通り見ている

2. Web エンジニア Web engineer

日々 API を呼んでいる人向け。fetch() とサーバーの間で起きているすべてを説明できるようになるルートです。

DNS (8) → TCP (11) → TLS (9) → HTTP/QUIC (10) → LB (6) → TCP2 (6) → Same Shape (5) — 合計 55 sessions。

このルートを終えると、遅い request を resolution、handshake、HoL blocking、LB の選択、TIME_WAIT の滞留まで end-to-end で説明できます。

3. インフラ・ネットワークエンジニア Infra / network engineer

ルーター室のルート。

Packet Parser (5) → ARP (4) → DHCP (6) → ICMP (5) → BGP (15) → OSPF (12) → RIP (6) → RPKI (5) → STP (5) → HA (4) → Same Shape (5) — 合計 72 sessions。

Protocol Lab の各プロトコルの containerlab 演習と自然に組み合わせられます。

4. セキュリティ志向 Security-minded

信頼の連鎖と、それが壊れる場所を辿るルート。

Packet Parser (5) → TLS (9) → DNSSEC (5) → RPKI (5) → ARP(4、認証のない cache)→ NAT (6) → ICE (5) → Same Shape (5) — 合計 44 sessions。

繰り返し出てくるテーマ: 何が署名されていて、何が単に信じられているだけで、どの第 3 の状態(NOT_FOUND / INSECURE / STALE)がシステムを正直に保っているか。

5. SRE・運用 SRE / operations

本番環境がなぜそう振る舞うのかを説明するルート。

TCP (11) → TCP2 (6) → LB (6) → QoS (5) → NTP (4) → HA (4) → ICMP (5) → NAT (6) → IGMP (4) → Same Shape (5) — 合計 56 sessions。

繰り返し出てくるテーマ: あらゆる時間スケールでの timeout、budget、そして「沈黙は失敗を意味する」という前提。

Protocol Lab ↔ Protocol in Code

2 つのコースは独立しているが、韻を踏んでいる

Lab で動かして面白かったプロトコルは、対応するトラックでコードとして読めます。逆にトラックを読んだ後に Lab を動かすと、理解を実パケットで裏取りできます。

ThemeProtocol Lab (hands-on)Protocol in Code (read the logic)
BGPLabs 01–03, 31 (anycast)bgp (15)
RPKILab 04rpki (5)
DNSLabs 05–06, 13–14, 41–42dns (8), dnssec (5)
TCPLabs 07–08, 30 (congestion), 37 (MSS)tcp (11), tcp2 (6)
TLSLabs 09, 15 (mTLS), 17 (DANE)tls (9)
HTTP / QUICLabs 10–11, 27http-quic (10)
DHCPLab 22dhcp (6)
ARP / NDLabs 23–24arp (4)
NATLabs 20, 40nat (6), ice (5)
OSPFLab 34ospf (12)
BFD / failoverLab 35ha (4)
Load balancingLabs 32–33, 41lb (6)
QoSLab 28qos (5)
MulticastLab 29igmp (4)
Traceroute / ICMPLabs 19, 25 (PMTUD)icmp (5)
Packet reading(tcpdump throughout)parser (5)
Spanning tree— (course gap: no Lab yet)stp (5)
Time sync— (course gap: no Lab yet)ntp (4)
Distance vector— (contrast track)rip (6)

表の中で Lab が未整備なテーマ(STP、NTP)は、今後の Protocol Lab 追加候補です。

How to read any single track

どのトラックも、同じリズムで進みます

  1. module doc の Core Question を読む。
  2. そこで指定されている source file(30〜200 行、意図的に短い)を読む。
  3. walkthrough を実行する: PYTHONPATH=src python3 examples/<track>/session_NN_walkthrough.py
  4. Failure Questions に、記憶ではなく source を見ながら答える。
  5. トラックの締めである「Build the toy X loop」capstone セッションで終える。