Protocol Deep Dive — Network Protocol Layer-by-Layer Analysis
| Item | Details |
|---|---|
| Period | 2026.05 ~ (in progress) |
| Type | Personal learning project |
| Language | Go |
| GitHub | 315-protocol-deep-dive |
Project Overview#
A project to implement the inner workings of network protocols directly in code, and compare differences across layers through benchmarks. Questions like “why is gRPC faster?” and “how different are TCP and UDP in practice?” are answered through direct measurement.
Protocols Compared#
| Layer | Protocol | Key Characteristics |
|---|---|---|
| L3 | ICMP | No handshake, raw ICMP header, TTL |
| L4 | TCP | 3-way handshake, ordered delivery, flow control |
| L4 | UDP | Connectionless, unordered, packet loss possible |
| L7 | HTTP/1.1 | Text headers, 1 request per connection vs keep-alive |
| L7 | HTTP/2 | TLS+ALPN, multiplexing, HPACK header compression |
| L7 | gRPC | Protobuf over HTTP/2, Unary/ServerStream/Bidi |
| L7 | gRPC-Web | gRPC from the browser via HTTP/1.1 proxy |
Structure#
├── l3/icmp/ ICMP ping
├── l4/tcp/ TCP echo server/client
├── l4/udp/ UDP echo server/client
├── l7/http1/ HTTP/1.1 server/client
├── l7/http2/ HTTP/2+TLS server/client
├── l7/grpc/ gRPC server/client + proto
├── l7/grpcweb/ gRPC-Web proxy + browser demo
├── benchmark/ Full protocol benchmark suite
├── dashboard/ Chart.js web dashboard
└── cmd/ CLI entrypoints
Each protocol is implemented as a server/client pair, benchmarked with the same payload to compare latency, throughput, and overhead.
Progress#
- Server/client implementation for each L3–L7 protocol
- Benchmark runner
- Chart.js web dashboard
- Benchmark result analysis and writeup
- Per-protocol packet capture (tcpdump/Wireshark) analysis
- NLB vs ALB comparison (EKS environment)