Какой дизайн был здесь? Почему в URL не учитывается регистр?

Например: когда я наберу "gaming.stackexchange.com", я попаду в Arqade.SE. Если я наберу "GaminG.StackExchangE.CoM", он доставит меня туда же.

Я понимаю, что есть некоторые контрпримеры к этому, как некоторые указали ниже.

3 ответа3

8

В разделе 2.3.3 RFC 1035 говорится, что имена DNS нечувствительны к регистру. Это означает, что хост-часть (и только хост-часть) URL-адресов нечувствительна к регистру.

Я не знаю точного мышления, лежащего в основе этого решения, но стандарт был написан в 1987 году, когда системы с ограниченной поддержкой наборов символов в смешанном регистре оставались относительно распространенным явлением.

4

Я могу придумать две причины, при которых они не обязательно связаны с первоначальным решением.

  • простота использования
  • устранение двусмысленности

Представьте себе, что нужно помнить разницу между:

google google google google google (....)

Это довольно непрактично, если Host.com означает нечто совершенно иное, чем host.com. Предполагается, что DNS-имя является меткой, а наличие специальных символов или различие между заглавными и строчными буквами только усложняет это без какой-либо практической цели.

0

Возможные причины:

  • Безопасность: в именах DNS только 37 допустимых символов *. Строчные буквенные символы имеют установленный бит 6, так что библиотека распознавателя или DNS-сервер могут немедленно и относительно просто санировать свои входные данные с помощью AND с двоичным кодом 0100 0000 и выбрасыванием всего, что не является ASCII с 45, 48 по 57 (числа) или с 65 по 90 (буквы). Как только вы столкнетесь с точкой, все готово. Нет необходимости выяснять, что есть, и игнорировать пробелы, разбивать токены или делать какие-либо другие полезные вещи, связанные с переполнением буфера, которые используются при разборе текста. Имея явный лимит 63 (?) символы на именах хостов тоже помогают.

  • DNS в целом массивен и должен работать быстро. Я уверен, что это помогает ускорить индексацию и поиск в базах данных DNS для DNS-имени, содержащего ограниченное количество символов. Вероятно, подобное можно сказать и о размере. Учитывая возможности компьютеров в то время, когда DNS был изобретен, я уверен, что сокращение вещей до "минимума" было сочтено необходимым.

  • Я верю, что примерно в то время, когда DNS был изобретен, на самом деле были компьютеры и терминалы, которые не могли отображать строчные буквы (я думаю, что здесь Apple II, но я уверен, что к некоторым старым мейнфреймам того времени были подключены одинаково старые терминалы).


* Вы видели доменные имена в юникоде раньше? Это интернационализированные доменные имена - расширение, построенное поверх этого. Они действительно состоят из «xn--», а затем строки в кодировке Punycode, использующей стандартный набор символов DNS, и отображаются как Unicode совместимым браузером.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .