RDAP가 WHOIS를 대체하고 있다 (아주 천천히)

WHOIS는 파싱 불가능한 텍스트를 돌려주는 1982년 프로토콜이다. RDAP는 2015년에 그 모든 걸 고쳤다. 그런데 업계를 움직인 건 더 나은 엔지니어링이 아니라 2025년의 계약 마감일이었다.

2025년 1월 28일, WHOIS는 공식적으로 죽었다. 어느 정도는. 사람들이 실제로 신경 쓰는 도메인 — .com, .net, .org, 그 밖의 일반 최상위 도메인(gTLD) — 에 대해 ICANN은 레지스트리와 등록대행자에게 WHOIS를 운영할 의무를 아예 없앴다.

그런데도 WHOIS는 여전히 어디에나 있다. 터미널엔 아직 명령어가 있고, 등록대행자 웹사이트엔 아직 입력창이 있으며, 보안 업계 도구의 절반은 아직 43번 포트로 접속한다. 공식적으로 폐기된 프로토콜이 앞으로 몇 년은 더 숨 쉴 것이다. 모두가 조용히 의존하지만 아무도 생각하기 싫어하는 인프라를 교체하려 할 때 늘 벌어지는 일이다.

이건 대체재가 실제로 쓰이기 10년 전에 이미 준비돼 있었다는 이야기다.

WHOIS는 생각보다 오래됐다

WHOIS는 지금도 매일 쓰이는 가장 오래된 애플리케이션 프로토콜 중 하나다. 시작은 1982년 발표된 RFC 812의 NICNAME이었다 — ARPANET의 모든 사람을 담은 디렉터리가 딱 하나였고, 단일 서버에 “이 사람 누구야?”라고 물으면 답이 나오던 시절이다. 1985년 RFC 954로, 그리고 마침내 2004년 RFC 3912로 갱신됐다.

2004년에 규정된 프로토콜 전체는 이렇다: 43번 포트로 TCP 연결을 열고, CRLF로 끝나는 텍스트 질의를 보내고, 서버가 연결을 닫을 때까지 텍스트를 읽는다. 그게 끝이다. RFC 3912는 실질 내용이 두 페이지 남짓인데, 그 일부를 이 프로토콜에는 언어를 지정할 방법도, 인증도, 요청이나 응답의 정의된 형식도 없다고 인정하는 데 쓴다.

마지막 부분이 사람 하루를 망친다. 스키마가 없다. 레지스트리마다 자기만의 레이아웃을 발명했다. 만료일 라벨이 누구에게 묻느냐에 따라 “Registry Expiry Date”일 수도, “Expiration Date”일 수도, “expire”일 수도, “paid-till”일 수도 있다. 날짜 형식은 열두 가지다. 어떤 서버는 다른 서버로 안내하고, 당신이 그 리퍼럴을 알아채서 직접 따라가길 기대한다. WHOIS를 파싱하는 코드를 짜 본 적이 있다면, 정규식 더미와 기도를 함께 짜 봤을 것이고, 레지스트리가 라벨 하나 바꾸는 순간 그게 깨지는 걸 지켜봤을 것이다.

WHOIS는 오래된 인프라가 보통 그렇듯 40년간 작동했다: 형편없이, 그러나 보편적으로, 그리고 모두가 이미 그걸 참는 비용을 치른 채로.

RDAP는 그 문제를 하나하나 다 고쳤다

RDAP(Registration Data Access Protocol)는 2015년에 앉아서 “WHOIS는 원래 어땠어야 했나?”라고 물었을 때 나올 법한 설계다.

HTTP다. https://rdap.example/domain/example.com 같은 URL로 RESTful 요청을 보내면 JSON이 돌아온다. 응답엔 실제 필드가 있다 — registration, expiration 같은 타입이 붙은 항목이 각각 ISO 8601 타임스탬프와 함께 담긴 events 배열, 자유 텍스트 대신 통제된 어휘를 쓰는 status 배열, 등록대행자와 연락처를 위한 구조화된 엔티티. 정규식과 기도가 아니라 JSON.parse와 스키마로 파싱된다.

리퍼럴 문제도 해결한다. IANA가 모든 TLD와 IP 블록을 권한 있는 RDAP 서버로 매핑하는 부트스트랩 레지스트리를 공개하므로, 클라이언트는 추측 없이 어디에 물어야 할지 알아낸다. 1982년 영어 전용 프로토콜은 불가능했던 국제화를 지원한다. 그리고 HTTP 위에 있으니 TLS, 표준 상태 코드, 캐싱, 그리고 결정적으로 차등 접근 — 익명 요청자보다 인증된 요청자에게 더 많은 데이터를 주는 능력 — 을 물려받는다. 이 마지막 능력은 GDPR이 레지스트리에 개인정보 기본 은닉을 강제하자 엄청나게 중요해졌다. RDAP는 계층적 공개가 되지만 WHOIS는 안 된다.

규격은 2015년 RFC 7480~7484로 나왔다. 2021년 6월엔 가장 중요한 둘이 정식 인터넷 표준으로 승격돼 RFC 9082(질의 형식)와 RFC 9083(JSON 응답)이 됐다. 엔지니어링의 어떤 잣대로 봐도 논쟁은 끝났다. RDAP는 중요한 모든 축에서 더 낫다.

그런데 왜 10년이 걸렸나

더 낫다는 것만으론 충분하지 않기 때문이다. 언제나 그렇다.

WHOIS는 모든 기술적 우위를 이기는 단 하나의 속성을 가졌다: 이미 어디서나 작동했고, 모두가 이미 그걸 다루는 고통을 흡수했다. 등록대행자엔 WHOIS 서버가 있었다. 도구엔 WHOIS 파서가 있었다. 정규식 더미는 이미 짜여 대체로 디버깅까지 끝나 있었다. RDAP로 옮기는 건 개별 운영자 책상에서 보면 딱히 불이 난 것도 아닌 문제를 고치자고 실제 작업을 하는 일이었다. 합리적인 반응이 나왔고, 그 반응은 “나중에”였다.

이건 DNSSEC 채택률을 20% 아래로 붙잡아 두고 IPv6를 영원히 “5년 후”로 미루는 것과 똑같은 관성이다. 더 나은 프로토콜은 스스로 배포되지 않는다. 누군가 돈을 쓰고 위험을 떠안으며 이주해야 하는데, “옛것이 못생겼지만 돌아간다”는 대단히 안정적인 균형이다. 내버려 두면 수십 년은 간다.

결국 업계를 움직인 건 우아함이 아니었다. 계약이었다. ICANN의 2023년 레지스트리·등록대행자 계약 개정은 확고한 마감일을 걸었다: 개정 효력 발생 18개월 뒤, WHOIS(43번 포트와 웹 버전) 운영 의무가 종료되고 RDAP가 gTLD 등록 정보의 필수·권한 소스가 된다. 그 마감일이 2025년 1월 28일이었다. 8년간 RDAP에 어깨를 으쓱하던 레지스트리들이 갑자기 준수 기한을 갖게 됐고, 준수 기한은 인프라 팀이 진심으로 존중하는 유일한 마감이다.

”천천히”에 많은 게 걸려 있다

지금도 전환은 부분적이다. ICANN 의무는 일반 TLD를 다룬다. 국가 코드 TLD는 다루지 않는다 — .uk, .de, .kr 등은 자체 정책으로 운영되고, 그중 상당수는 RDAP는 그림자도 없이 WHOIS를 여전히 주 인터페이스로 제공한다. 그래서 이 일을 진지하게 하는 사람의 클라이언트 측 현실은 이렇다: RDAP를 먼저 시도하고, WHOIS로 폴백하고, 완전히 다른 두 응답 형태를 쓸 만한 무언가로 정규화한다. 옛 프로토콜은 교체됐다기보다 강등됐다.

프로토콜 전환은 실제로 이렇게 굴러간다. 딸깍 넘어가는 스위치가 아니라, 새것이 한 관할에선 필수, 다른 곳에선 선택, 또 다른 곳에선 부재인 채로 옛것은 너무 많은 게 아직 의존하기에 완전히 죽길 거부하는 긴 중첩 구간이다. WHOIS는 제 장례식이 끝난 뒤로도 몇 년은 43번 포트에서 질의에 답할 것이다.

교훈은 RDAP가 이겼다는 게 아니다. 어떻게 이겼는가다: 10년간 명백히 우월했기 때문이 아니라 — 실제로 그랬지만 — 마침내 의무가 됐기 때문이다. 프로토콜을 만드는 사람에겐 이게 불편한 대목이다. 기술적 우수함은 표준을 얻어 준다. 채택을 얻어 주진 않는다. 그건 마감일만이 한다.

토론 참여

← 블로그로 돌아가기