처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.08.01 39

교과서로만 보던 TCP 혼잡 제어, 브라우저에서 직접 실험한다 — Go를 WASM으로 컴파일한 시뮬레이터

Hacker News 원문 보기

TCP 혼잡 제어를 책으로 공부하면 슬로 스타트, 혼잡 회피, 빠른 재전송 같은 용어와 수식만 잔뜩 나오는데, 솔직히 머리에 잘 안 남잖아요. 이번에 소개할 프로젝트는 이걸 눈으로 직접 보게 해주는 물건이에요. Go로 작성한 TCP 시뮬레이터를 WebAssembly(WASM)로 컴파일해서, 브라우저 안에서 혼잡 윈도우가 실시간으로 변하는 걸 그래프로 보여주는 인터랙티브 시뮬레이터거든요. 시뮬레이션 중에는 서버와 통신할 필요 없이 전부 브라우저에서 돌아가요.

잠깐 배경 설명부터요. TCP 혼잡 제어가 뭐냐면, 네트워크가 막히지 않도록 데이터를 보내는 쪽이 스스로 전송 속도를 조절하는 메커니즘이에요. 고속도로가 밀리면 진입로에서 차량 진입을 조절하는 것과 비슷하죠. 핵심 변수가 혼잡 윈도우(cwnd)인데, "확인 응답(ACK)을 받기 전에 한 번에 보낼 수 있는 데이터 양"이에요. 처음에는 조심스럽게 시작해서 빠르게 늘리다가(슬로 스타트), 어느 임계값부터는 천천히 늘리고(혼잡 회피), 패킷 유실이 감지되면 확 줄이는 식으로 동작해요. TCP 송신자의 상태 머신 전체 — 슬로 스타트, 혼잡 회피, 빠른 재전송, 빠른 회복 — 가 이 시뮬레이터 안에 구현돼 있어요.

뭘 만져볼 수 있나요

혼잡 제어 알고리즘을 Reno, CUBIC, BBR(단순화 모델) 중에서 고를 수 있어요. 링크 대역폭, 왕복 지연 시간(RTT), 병목 지점의 버퍼 크기, 무작위 패킷 손실률을 조절할 수 있고, 버퍼가 가득 차서 패킷이 버려지는 테일 드롭 방식의 손실도 재현돼요. 여러 개의 플로우가 하나의 병목 링크를 나눠 쓰는 상황도 만들 수 있고요.

그러면 화면에는 cwnd, ssthresh(슬로 스타트 임계값), 전송 중인 바이트, 측정된 RTT, 플로우별 처리량이 실시간 차트로 그려져요. 교과서 그림으로만 보던 Reno의 톱니 모양 곡선, CUBIC의 3차 함수 성장 곡선, BBR의 대역폭 탐색 동작을 직접 볼 수 있는 거죠. 여러 플로우가 공정한 몫으로 수렴하는지(혹은 못 하는지)도 관찰할 수 있어요. 특히 버퍼가 차오르면서 RTT가 점점 늘어나는 버퍼블로트 현상이 보이는 게 백미인데요. 버퍼블로트가 뭐냐면, 중간 장비의 버퍼가 너무 커서 패킷이 버려지는 대신 긴 줄을 서게 되고, 그 결과 지연 시간이 치솟는 현상이에요. 집에서 대용량 업로드를 걸면 화상회의가 끊기는 바로 그 현상의 원인이죠.

구현도 흥미로워요

내부는 Go로 작성된 이산 사건 시뮬레이터(discrete-event simulator)예요. "패킷 도착", "타이머 만료" 같은 사건을 시간 순서대로 처리하는 방식이죠. 이걸 WASM으로 컴파일했는데 gzip 기준 약 2MB이고, HTML 캔버스에 60fps로 렌더링해요. 시드를 고정한 결정적 실행을 지원해서 같은 실험을 그대로 재현할 수 있다는 점도 교육 도구로서 잘 만든 부분이에요. 제작자 말로는 WASM을 배우려고 시작한 주말 프로젝트가 교육용 도구로 발전했다고 하고, 소스는 깃허브에 공개돼 있어요.

맥락을 보태자면, 지금 리눅스의 기본 혼잡 제어 알고리즘이 CUBIC이고, 구글이 만든 BBR은 유튜브 등 구글 서비스에 실제 적용되면서 '손실 기반'이 아닌 '대역폭 추정 기반'이라는 다른 철학을 보여줬어요. 이 셋을 같은 조건에 놓고 나란히 비교해볼 수 있다는 게 이 시뮬레이터의 재미 포인트예요. "RFC 5681을 읽으면 수식을 얻지만, 버퍼가 넘칠 때 cwnd가 무너지는 걸 지켜보면 직관을 얻는다"는 제작자의 말이 딱 맞죠.

한국 개발자에게도 쓸모가 커요. "서버 업로드가 왜 이렇게 느리지?", "RTT가 왜 갑자기 튀지?" 같은 실무 질문의 배경 지식이 바로 이거거든요. 신입 교육 자료나 네트워크 스터디에 바로 쓰기 좋고, Go 코드를 WASM으로 빌드해서 브라우저 시각화 도구를 만드는 패턴 자체도 사이드 프로젝트에 참고할 만해요.

한 줄 정리: 수식으로만 배우던 TCP 혼잡 제어를 브라우저에서 직접 실험하며 직관을 얻을 수 있는 도구예요. 여러분은 Reno, CUBIC, BBR 중 어떤 알고리즘을 실무에서 의식해본 적 있나요? 버퍼블로트로 고생한 경험도 궁금해요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.