Технические трудности
Технические трудности
Введение многоязычных доменов связано с целым рядом технических трудностей. Основная из них состоит в том, что система DNS может работать только с символами из набора ASCII.
Что такое ASCII? Это стандартный набор символов, включающий в том числе и буквы латинского алфавита, введенный еще до появления Интернета и DNS. Символы ASCII представлены в виде числовых кодов, а таблицы соответствия кодов и символов как раз и являются предметом этого стандарта.
На страницах этой книги я стараюсь избегать излишне техничных моментов, свойственных работе DNS, и опускаю многие подробности преобразования данных, которые осуществляются в Сети при обработке адресов. Однако в случае с многоязычными доменными именами нам придется взглянуть на эти преобразования чуть подробнее, чтобы понять основные свойства новых алфавитов DNS. Впрочем, ничего сложного в нужных для понимания алгоритмах нет.
Итак, когда создавалась DNS, использование ASCII представлялось очень логичным, ведь этот стандарт тогда лежал в основе компьютерной обработки символов, позволяя разным компьютерам и разному программному обеспечению одинаковым образом представлять символьную информацию. Надо заметить, что DNS использует далеко не все символы таблиц ASCII. Напротив, к использованию разрешены только 26 букв алфавита, 10 цифр и знак дефиса. То есть и так достаточно узкий набор ASCII, не включавший, например, букв кириллицы, сузили еще больше, выбрав небольшое подмножество символов.
Итак, стандартная современная система DNS использует «урезанный» набор ASCII-символов. Из чего состоит DNS? Из множества компьютеров-серверов, на которых работает специальное программное обеспечение, реализующее всю функциональность преобразования имен (преобразование, напомним, происходит между символьными строками и числовыми IP-адресами). Количество важных серверов DNS, работающих в Интернете, исчисляется десятками тысяч. А управляют этими серверами самые разные компании и администраторы, не имеющие «центрального начальства» и вообще находящиеся в разных странах мира.
Введение в таблицы преобразований новых символов и изменение алгоритмов преобразования – это самые радикальные изменения в программном обеспечении DNS, какие только можно представить. Понятно, что осуществить подобное на практике в глобальном масштабе просто невозможно. Дело в том, что любая попытка произвести «апгрейд» распределенной компьютерной системы мирового масштаба, включающей тысячи разных компьютеров и не оснащенной центральным управлением, имеет один наиболее вероятный исход – крах глобальной системы адресации Интернета.
Нужно уточнить, что сперва для реализации многоязычных доменов было предложено несколько разных технологий. Некоторые из них подразумевали использование «альтернативной» системы доменных имен или предлагали другие подобные решения сомнительной ценности. После изучения вариантов и возможностей их реализации ICANN рекомендовала применить технологию, которая позволит с минимальными рисками поэтапно ввести в употребление доменные имена, допускающие максимально широкий набор символов самых разных алфавитов.
Подобный результат вряд ли нужен пользователям Сети – им требуются лишь многоязычные домены разных уровней. Именно поэтому для введения многоязычия в систему адресации разработали технологию, позволяющую реализовать новую функциональность поверх действующей и отлаженной годами системы DNS.
Суть технологии доменного многоязычия, рекомендованной ICANN, заключается в дополнительном преобразовании имен (например, на компьютере пользователя) до отправки запроса в DNS. В результате доменное имя с символами национального алфавита «перекодируется» в формат, допустимый для обычной обработки в DNS. То есть имя оказывается состоящим только из символов ASCII, разрешенных в «классической» DNS (а именно из букв латиницы, цифр и дефисов).
Другими словами, в рамках технологии многоязычных доменов старая и проверенная глобальная DNS остается нетронутой – она как бы и не «видит» новых алфавитных символов. Это освобождает интернет-сообщество от крайне рискованных усилий по «апгрейду» DNS.
Как же работают многоязычные имена? Введенное пользователем доменное имя на национальном языке преобразуется браузером по стандартному алгоритму в последовательность допустимых к использованию в DNS ASCII-символов. Эта последовательность начинается со специального префикса, позволяющего программам отличать многоязычные адреса. При этом с точки зрения старых программ, работающих с доменными именами, и с точки зрения DNS, строка символов, полученная в результате преобразования, будет являться обычным именем домена. То есть старые программы, созданные до появления «технологий многоязычия», также сумеют обрабатывать новые адреса, правда, при этом они не смогут правильно отобразить представление имени в национальном алфавите.
Простой пример: русскоязычный адрес руцентр. рф будет преобразован в ASCII-строку xn-e1aqhcjdv.xn-p1ai, где xn- – префикс, обозначающий, в данном случае, «нелатинское» доменное имя, а e1aqhcjdv (вполне себе абракадабра) представляет собой закодированную особенным образом последовательность букв кириллицы руцентр, p1ai – .рф.
Итак, самое важное, что нужно понимать: технически многоязычные доменные имена вводятся на другом «уровне абстракции», поверх DNS. При этом необходимые преобразования символов осуществляются не в DNS, а на компьютере пользователя Интернета (или на сервере, не участвующем в DNS, если такое преобразование требуется серверу) специальным программным обеспечением, а DNS передается результат преобразования, состоящий только из ASCII-символов.
Префикс xn-, обозначающий многоязычные доменные имена, согласно предложению ICANN, администраторы доменов верхнего уровня могут зарезервировать, если они пока не хотят допускать регистрацию и использование многоязычных доменов в своих «зонах ответственности». Дело в том, что регистрация имени, начинающегося с префикса xn-, может оказаться технически эквивалентной регистрации того или иного доменного имени в многоязычном представлении.
Преобразование символов в описанной технологии, которая называется Punycode, происходит с использованием наиболее прогрессивной и универсальной современной кодировки символов – Unicode. Таблицы Unicode включают все мыслимые символы самых разнообразных алфавитов и используемых «при письме» знаковых систем, сколько-нибудь распространенных в мире.
Punycode для преобразования имен доменов полностью поддерживается современными браузерами. То есть пользователям этих браузеров (подавляющему большинству пользователей Сети) не нужно прибегать к помощи дополнительных плагинов, чтобы получить поддержку многоязычных доменных имен. А если вспомнить, что технология многоязычия устроена не требующим перенастройки DNS образом, то окажется, что у администраторов существующих доменов нет технических препятствий для введения многоязычных доменных имен.
Предположим, администратор домена test.ru решил ввести внутри своей «зоны ответственности» доменные имена на русском языке. Оказывается, что для добавления в DNS доменного имени привет. test.ru администратору достаточно внести в управляющие таблицы сервера имен домен xn-b1agh1afp.test. ru. Это доменное имя состоит только из допустимых в DNS символов и поэтому будет доступно и для современных, и для старых программных систем. Отличие лишь в том, что пользователи современных интернет-браузеров смогут обращаться к ресурсу под именем привет. test.ru. При этом администратору домена test. ru не придется получать разрешение на введение кириллических имен в своем домене у «вышестоящих» организаций.
Такая особенность управления доменным пространством вместе с появлением в 2010 году многоязычных доменов верхнего уровня дала неожиданный эффект в плане безопасности, позволяя фишерам (мошенникам, выманивающим различные пользовательские конфиденциальные и персональные данные) конструировать адреса, имитирующие многоязычные домены. Подробнее об этом – в разделе, посвященном безопасности DNS.
Данный текст является ознакомительным фрагментом.