TCP 뇌절 시리즈: 로드맵
뇌절의 첫 시리즈 주제는 TCP입니다. 다만 “뇌절”이라고 해서 처음부터 커널 코드나 RFC로 들어가지는 않습니다.
이 시리즈는 기본 → 심화 → 뇌절 3단계로 이어집니다. 순서대로 읽으면 중간에 끊기는 곳 없이 이해할 수 있도록, 각 글은 바로 앞 글에서 다룬 내용을 전제로 삼고 다음 글로 넘어갈 다리를 명시적으로 놓습니다.
- 기본: 누구나 알아야 할, 그리고 알면 충분한 TCP. “TCP를 쓰는 사람” 레벨.
- 심화: 기본편에서 “그냥 그렇다”고 넘어간 것들을 RFC 원문과 Linux 커널 코드로 검증. “TCP를 다루는 엔지니어” 레벨.
- 뇌절: 이론을 손으로 직접 재현. 패킷을 직접 만들고, 상태머신을 직접 구현하고, 혼잡제어를 직접 시뮬레이션. 그리고 여기서부터는 사실 몰라도 되는 것들까지 재미로 계속 팝니다.
마지막 단계 이름이 시리즈 이름과 같은 건 우연이 아닙니다.
확정 연재 (19편)
매주 하나씩, 아래 순서로 발행합니다.
기본 — TCP를 쓰는 사람이면 충분한 레벨
- TCP란 무엇인가
- 포트와 소켓 — 연결을 식별하는 방법
- 연결 수립 — 3-way handshake
- 데이터 전송과 흐름제어
- 신뢰성 보장 — ACK와 재전송
- 혼잡제어, 큰 그림
- 연결 종료 — 4-way handshake와 TIME_WAIT
심화 — 기본편의 “왜”를 스펙과 커널 코드로 검증
- RFC 793 vs RFC 9293, 뭐가 왜 바뀌었나
- TCP 헤더 32비트 완전분해
- 시퀀스 넘버 wraparound과 PAWS (RFC 1323)
- Linux TCP 상태머신, 소스로 따라가기
- 소켓 버퍼·재전송 큐·RTO 계산의 실제 구현
- 혼잡제어: Reno vs Cubic vs BBR 커널 코드 비교
- strace로 소켓 syscall 흐름 추적하기
- NIC 오프로딩(TSO/GRO)과 epoll 내부 구현
뇌절 — 직접 만들어서 확인
- Wireshark로 핸드셰이크 패킷 뜯어서 RFC와 대조하기
- Raw socket으로 TCP 패킷 직접 만들기
- 미니 TCP 상태머신 직접 구현하고 실제 커널과 비교
- 혼잡제어 알고리즘을 시뮬레이션 코드로 구현해 처리량 비교
번외 뇌절 (내킬 때만)
19편까지 다 읽고 나면 사실 TCP를 이해하는 데 더 필요한 건 없습니다. 그래도 재미로 계속 팝니다. 매주 연재 약속은 없고, 필받을 때 하나씩 추가합니다.
- 물리 계층: 케이블 위의 전압 파형, Manchester encoding, PHY 칩 동작
- 수학적 증명: AIMD 공정성 증명(Chiu & Jain, 1989), RTO 공식(Jacobson/Karels, 1988) 유도
- 역사 고고학: Cerf & Kahn 1974년 원논문, OSI vs TCP/IP 표준 전쟁, BSD Sockets 역사
- 형식 검증: TCP 상태머신을 TLA+/Alloy로 명세하고 모델체커로 검증
- 대안 우주와 비교: QUIC은 TCP의 어떤 문제를 다시 설계했나
- 하드웨어에 굽기: FPGA로 미니 TCP/IP 오프로드 엔진 구현
이 로드맵은 진행하면서 계속 업데이트합니다.