뇌절의 첫 시리즈 주제는 TCP입니다. 다만 “뇌절”이라고 해서 처음부터 커널 코드나 RFC로 들어가지는 않습니다.

이 시리즈는 기본 → 심화 → 뇌절 3단계로 이어집니다. 순서대로 읽으면 중간에 끊기는 곳 없이 이해할 수 있도록, 각 글은 바로 앞 글에서 다룬 내용을 전제로 삼고 다음 글로 넘어갈 다리를 명시적으로 놓습니다.

  • 기본: 누구나 알아야 할, 그리고 알면 충분한 TCP. “TCP를 쓰는 사람” 레벨.
  • 심화: 기본편에서 “그냥 그렇다”고 넘어간 것들을 RFC 원문과 Linux 커널 코드로 검증. “TCP를 다루는 엔지니어” 레벨.
  • 뇌절: 이론을 손으로 직접 재현. 패킷을 직접 만들고, 상태머신을 직접 구현하고, 혼잡제어를 직접 시뮬레이션. 그리고 여기서부터는 사실 몰라도 되는 것들까지 재미로 계속 팝니다.

마지막 단계 이름이 시리즈 이름과 같은 건 우연이 아닙니다.

확정 연재 (19편)

매주 하나씩, 아래 순서로 발행합니다.

기본 — TCP를 쓰는 사람이면 충분한 레벨

  1. TCP란 무엇인가
  2. 포트와 소켓 — 연결을 식별하는 방법
  3. 연결 수립 — 3-way handshake
  4. 데이터 전송과 흐름제어
  5. 신뢰성 보장 — ACK와 재전송
  6. 혼잡제어, 큰 그림
  7. 연결 종료 — 4-way handshake와 TIME_WAIT

심화 — 기본편의 “왜”를 스펙과 커널 코드로 검증

  1. RFC 793 vs RFC 9293, 뭐가 왜 바뀌었나
  2. TCP 헤더 32비트 완전분해
  3. 시퀀스 넘버 wraparound과 PAWS (RFC 1323)
  4. Linux TCP 상태머신, 소스로 따라가기
  5. 소켓 버퍼·재전송 큐·RTO 계산의 실제 구현
  6. 혼잡제어: Reno vs Cubic vs BBR 커널 코드 비교
  7. strace로 소켓 syscall 흐름 추적하기
  8. NIC 오프로딩(TSO/GRO)과 epoll 내부 구현

뇌절 — 직접 만들어서 확인

  1. Wireshark로 핸드셰이크 패킷 뜯어서 RFC와 대조하기
  2. Raw socket으로 TCP 패킷 직접 만들기
  3. 미니 TCP 상태머신 직접 구현하고 실제 커널과 비교
  4. 혼잡제어 알고리즘을 시뮬레이션 코드로 구현해 처리량 비교

번외 뇌절 (내킬 때만)

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 오프로드 엔진 구현

이 로드맵은 진행하면서 계속 업데이트합니다.