IDN
До 2003 года доменные имена могли состоять только из латиницы, чисел от 0 до 9 и тире. Такие меры объясняются тем, что Domain Name System или Система Именования Доменов построена на англоязычной клавиатуре и не особо подходила для такого глобального проекта, как Интернет.
Чтобы исправить эту ситуацию была введена система под названием Internationalizing Domain Names или Интернационализированные Доменные Имена. Целью этого механизма было определить стандартизированный перевод из юникода в ASCII (американский стандартный код обмена информацией), чтобы символы всех известных миру алфавитов могли отображаться в интернет-доменах.
Как это работает?
Большая часть инфраструктуры Интернет поддерживается только лишь набором символов ASCII. Чтобы убедиться, что эти интернационализированные имена можно обработать, каждый IDN, доступный в юникоде, может быть преобразован в строку ACE, которая основывается на американском стандартном коде обмена информацией. Следуя этому, URL-ы с использованием значка ударения или умлаутов отображаются должным образом. А сервер, в свою очередь, продолжает обрабатывать адрес как ASCII-совместимый. Эти процессы описаны в памятках IDNA2003 и IDNA2008. Перевод из юникода в ASCII происходит на стороне клиента и основывается на стандартизированных процессах кодирования Punycode.
Различия между IDN2003 и IDNA
Исходный процесс 2003 года подразумевает нормализацию интернационализированных URL-ов до процесса кодирования Punycode с использованием метода nameprep. Этот метод менял заглавные буквы на строчные, удалял непечатные символы и приводил эквивалентные символы к единой форме. Nameprep был удален из этого процесса с приходом IDNA2008. Теперь IDNA не указывает никакой нормализации, а вместо этого он рекомендует алгоритм, который преобразовывает заглавные буквы в строчные.