TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 24 READS

20년 전 iChat 화상통화를 되살리다: LLM으로 복원한 SNATMAP 프로토콜

20년 전 iChat 화상통화를 되살리다: LLM으로 복원한 SNATMAP 프로토콜
SOURCE IMAGE · HACKER NEWS

오래된 하드웨어와 소프트웨어를 다시 작동시키는 '레트로 컴퓨팅'은 취미의 영역처럼 보이지만, 그 과정에는 현역 엔지니어에게도 유효한 교훈이 담겨 있다. 시스템 엔지니어 Chris Jones가 공개한 이번 사례는 2000년대 중반 애플 iChat의 음성·화상 통화를 인터넷 너머로 다시 연결해낸 기록이다. 단순한 향수가 아니라, 패킷 캡처와 역공학, 그리고 LLM의 도움으로 사라진 프로토콜을 재구성해낸 실전 디버깅 과정이라는 점에서 읽을 가치가 있다.

iChat AV가 특별했던 이유

애플은 2003년 6월 WWDC에서 G5 프로세서, OS X 10.3 팬서와 함께 'iChat AV'를 발표했다. 전용 웹캠 'iSight'도 함께 내놓았다. 당시 소비자용 화상 회의 시장은 마이크로소프트의 MSN 메신저, 야후 메신저, AOL의 AIM이 주도하고 있었는데, 저자는 이 분야만큼은 애플이 실제로 앞서 있었다고 회고한다. 중요한 기술적 사실 하나는, Leopard 버전의 iChat이 XMPP(Jabber) 서버를 통해 동작한다는 점이다. 즉 메시징 자체는 표준 프로토콜 위에 있었지만, 음성·영상 연결을 성사시키는 데는 애플 고유의 보조 서버가 필요했다.

그 보조 서버가 바로 SNATMAP이다. iChat은 통화를 걸기 전 configuration.apple.com에서 설정 파일을 받고, SNATMAP 서버와 통신해 NAT 뒤에 있는 두 단말이 서로의 실제 주소와 포트를 알아내도록 돕는다. 문제는 애플이 이 서버를 더 이상 운영하지 않는다는 데 있었다. 설정 파일을 제공하던 https URL은 아직 응답했지만, 정작 SNATMAP 서버가 침묵하면서 통화는 '연결 시도' 단계에서 번번이 실패했다.

실패와 재도전

저자와 친구(글에서 'Methodius'로 지칭)는 2023년 초 첫 시도에 나섰다. 각자 jabb.im에 계정을 만들고 Leopard에서 음성 통화를 걸었지만 연결은 되지 않았다. OS X에 기본 내장된 tcpdump로 트래픽을 들여다보고, iChat을 터미널에서 디버그 모드로 실행해 로그를 확인했다. 이 디버그 모드는 거의 문서화되지 않은 기능이어서, 저자는 자신의 기록을 참고용으로 남겨두는 의미도 있다고 밝혔다. 그럼에도 SNATMAP 서버가 어떻게 동작하고 iChat이 어떤 응답을 기대하는지 알 길이 없어 2023년의 도전은 실패로 끝났다.

돌파구는 2026년 여름에 열렸다. 두 사람은 이전에 확보해 둔 네트워크 캡처를 LLM에 입력해 iChat의 화상 회의 프레임워크를 역공학했고, SNATMAP 서버로 보내는 요청과 기대 응답의 형태를 파악해 프로토콜 명세 파일을 만들어냈다. 주목할 점은 저자가 바이너리를 디컴파일하거나 어셈블리를 읽을 능력은 없었다는 사실이다. 대신 LLM이 생성한 명세를 바탕으로, 서버를 한 번도 직접 작성해 본 적 없던 그가 Python 3로 간단한 UDP 서버를 구현했다. 사라진 프로토콜을 복원하는 데 LLM이 '명세 생성기' 역할을 하고, 사람이 그 명세를 읽고 구현하는 분업 구조가 인상적이다.

실험실에 '인터넷'을 짓다

재현에서 까다로운 부분은 NAT 환경의 검증이었다. 저자는 별도의 ISP 회선 두 개가 없었기에, Proxmox(KVM) 호스트 위에 OpenWrt 라우터 VM 두 대를 띄워 각각 사설 LAN을 만들고 그 사이의 평면 네트워크를 '인터넷'처럼 다뤘다. 두 대의 맥은 USB 네트워크 어댑터로 물리적으로 연결해 각 NAT 뒤에 배치했고, '인터넷' 쪽 Debian VM에는 ejabberd(Jabber), lighttpd(웹), SNATMAP 서버를 올렸다. 이렇게 랩 안에 축소된 인터넷을 구성한 덕분에 혼자서도 빠르게 테스트하고 반복할 수 있었다.

직접 써보려는 사람을 위한 조건도 비교적 명확하다. 핵심은 라우터가 포트를 보존하는 NAT(port-preserving NAT)를 수행해야 한다는 점으로, 대부분의 가정용 공유기는 이를 만족한다. 다만 pfSense나 OPNsense 같은 BSD 기반 라우터를 쓴다면 아웃바운드 NAT 설정에서 소스 포트 보존 옵션을 켜야 한다. 사용자는 양쪽 맥의 /etc/hosts에 configuration.apple.com을 지정하고 자체 서버에서 snatmap.txt를 서빙하거나, 저자가 유지 중인 서버를 그대로 쓰면 된다. 검증은 Leopard와 Snow Leopard에서 이뤄졌고, 비교적 최신 웹캠인 로지텍 C920으로도 영상 통화가 확인됐다.

실무적으로 이 사례가 주는 함의는 분명하다. 클라우드 의존형 서비스는 벤더가 백엔드를 내리는 순간 멀쩡한 클라이언트도 무력화된다는 점, 그리고 그 공백을 메우려면 결국 와이어 상의 동작을 캡처하고 명세로 환원하는 역량이 필요하다는 점이다. 포트 보존이라는 전제가 깔려 있는 만큼 모든 네트워크에서 동작을 보장하긴 어렵고, 테스트 범위도 Leopard·Snow Leopard에 한정된다는 한계는 분명하다. 그럼에도 끊긴 프로토콜을 캡처·역공학·재구현의 단계로 되살려낸 이 기록은, 레거시 시스템을 다뤄야 하는 엔지니어에게 하나의 재현 가능한 방법론으로 남는다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://blog.pipetogrep.org/2026/09/11/resurrecting-ichat-au...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...