가장 우아한 TCP 홀 펀칭 알고리즘 — Aul Ma의 연구 시설
TCP hole punching은 NAT 라우터 뒤에 있는 두 컴퓨터를 연결하는 기술로, 양쪽이 서로의 WAN IP와 외부 포트, 그리고 동시 연결 타이밍을 알아야 작동합니다.
이 글에서는 복잡한 인프라 없이도 동기화된 시간 기반의 결정론적 알고리즘을 통해 메타데이터를 유도하고, 이를 바탕으로 양측이 동일한 포트 목록을 생성하는 방식을 제안합니다.
또한, TCP hole punching에 필수적인 비차단 소켓과 소켓 옵션 설정을 설명하며, 타이밍에 민감한 프로토콜 특성상 비동기 네트워킹 대신 select 기반 폴링 방식을 권장합니다.
마지막으로, 여러 연결 중 하나를 선택하는 리더-팔로워 모델과 단일 문자 전송을 통한 연결 확정 방법을 소개하여, 인프라 없이도 테스트 가능한 간단한 TCP hole punching 구현체를 제공합니다.