도메인 기초

IDN(국제화된 도메인 이름)

중국어, 아랍어, 키릴 문자 등의 비ASCII 문자를 포함한 도메인 이름으로, 기본 언어 웹 주소를 활성화합니다.
← 용어집으로 돌아가기

IDN이란?

IDN(국제화된 도메인 이름)은 원래 DNS 사양에서 사용한 전통적인 ASCII 집합에 포함되지 않는 문자를 담은 도메인 이름입니다. IDN을 사용하면 중국어(中文.com), 아랍어(مثال.com), 키릴 문자(пример.com) 등 다양한 고유 문자 체계로 도메인 이름을 만들 수 있습니다.

IDN이 중요한 이유

기존 DNS는 영어 사용자를 전제로 설계되어 도메인 이름을 다음과 같이 제한했습니다.

  • 영문자 a-z(대소문자 구분 없음)
  • 숫자 0-9
  • 하이픈(맨 앞이나 맨 끝에는 사용할 수 없음)

이 제한은 라틴 알파벳을 사용하지 않는 수십억 명의 사람을 인터넷에서 배제했습니다. IDN은 다음과 같은 방식으로 인터넷 접근성을 높입니다.

  • 모국어 주소: 사용자가 자신의 언어로 URL을 입력할 수 있습니다.
  • 브랜드 보호: 기업이 여러 문자 체계로 이름을 확보할 수 있습니다.
  • 문화적 접근성: 인터넷 참여의 장벽을 낮춥니다.

IDN 작동 방식: Punycode 연결

DNS 인프라는 ASCII만 이해하므로 IDN은 Punycode라는 인코딩 시스템을 사용합니다. IDN을 등록하거나 접속할 때의 흐름은 다음과 같습니다.

1. 사용자 입력: 中文.com (중국어로 "중국")

2. 브라우저 인코딩: xn--fiq228c.com (Punycode 표현)

3. DNS 확인: 표준 ASCII 조회

4. 브라우저 표시: 中文.com (원래 형식)

"xn--" 접두사는 Punycode로 인코딩된 문자열을 나타냅니다. 이 변환은 사용자에게 투명하게 이루어집니다.

Punycode 예시

다음 표는 원래 IDN과 DNS에서 사용하는 Punycode 표현을 비교합니다.

IDN 도메인 원문Punycode 인코딩 결과
münchen.de (독일어 도메인 이름)xn--mnchen-3ya.de
中文.com (중국어 도메인 이름)xn--fiq228c.com
правда.рф (러시아어 도메인 이름)xn--80aafi6cg.xn--p1ai

TLD별 IDN 지원

IDN 지원 여부는 TLD마다 다릅니다.

완전 지원

대부분의 최신 gTLD와 많은 ccTLD가 IDN을 지원합니다.

  • .com, .net, .org (Verisign)
  • .de (독일어 문자)
  • .jp (일본어)
  • .cn (중국어)

국제화된 TLD

일부 TLD 자체가 IDN입니다.

  • .рф (러시아, 키릴 문자)
  • .中国 (중국)
  • .भारत (인도, 데바나가리 문자)
  • .السعودية (사우디아라비아, 아랍 문자)

제한적 지원 또는 미지원

일부 TLD는 IDN을 제한하거나 전혀 지원하지 않습니다. 대상 TLD의 IDN 지원 여부를 항상 확인하세요.

보안 고려사항: 동형문자 공격

IDN은 동형문자 공격이라는 보안 위험을 만들 수 있습니다. 서로 다른 문자 체계의 시각적으로 유사한 문자를 이용해 사기성 도메인을 만드는 공격입니다.

apple.com   (legitimate - Latin letters)

аpple.com (attack - Cyrillic 'а' looks like Latin 'a')

동형문자 공격 방어

브라우저 동작: 최신 브라우저는 의심스러운 IDN을 유니코드 대신 Punycode로 표시하여 공격 가능성을 드러냅니다. 레지스트리 정책: 일부 레지스트리는 하나의 도메인에서 조합할 수 있는 문자 집합을 제한합니다. 도메인 모니터링: DomScan의 타이포스쿼팅 탐지와 같은 도구로 브랜드를 노리는 등록 동형문자 변형을 찾을 수 있습니다.

IDN 지원 구현

도메인 도구를 만드는 개발자는 다음을 구현할 수 있습니다.

유효성 검사

// Check if domain contains non-ASCII

function isIDN(domain) {

return /[^\x00-\x7F]/.test(domain);

}

변환

// Convert to Punycode for DNS queries

const punycode = require('punycode/');

const ascii = punycode.toASCII('中文.com'); // xn--fiq228c.com

const unicode = punycode.toUnicode('xn--fiq228c.com'); // 中文.com

RDAP 질의

대부분의 RDAP 서버는 두 형식을 모두 허용합니다.

# Both work

curl "https://rdap.verisign.com/com/v1/domain/xn--fiq228c.com"

curl "https://rdap.verisign.com/com/v1/domain/中文.com"

모범 사례

IDN을 다룰 때는 다음을 따르세요.

1. 내부적으로는 항상 Punycode 형식을 저장하고 처리합니다.

2. 사용자에게는 유니코드 형식을 표시합니다.

3. 보안 기능에 동형문자 탐지를 구현합니다.

4. 등록 전에 TLD별 IDN 정책을 확인합니다.

이 지식을 활용하세요

DomScan의 API를 사용하여 도메인 가용성, 상태 등을 확인하세요.