Допустимые символы имени хоста?

86

Какие допустимые символы в имени хоста? Это может быть что-то вроде сетевого компьютера или веб-домена.

Чтобы поместить это в контекст, я пишу игру для ПК, которая подключается к удаленному серверу; поэтому у меня есть поле для имени хоста и поле для порта. Очевидно, что порт - это число из короткого диапазона, но мне нужно знать, каковы все возможные символы имени хоста (и любой другой шаблон, который может потребоваться - должно ли имя хоста начинаться с буквы?).

Примеры имени хоста включают localhostили google.com.

Рахит
источник
2
Команда linux sethostname принимает любые байты.
OrangeDog

Ответы:

92

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

Имена хостов состоят из серий меток, соединенных точками, как и все доменные имена. Например, «en.wikipedia.org» - это имя хоста. Каждая метка должна иметь длину от 1 до 63 символов, а полное имя хоста (включая разделяющие точки, но не конечную точку) должно содержать максимум 253 символа ASCII.

Стандарты Интернета (запросы на комментарии) для протоколов требуют, чтобы метки имен хостов компонентов могли содержать только буквы ASCII от «a» до «z» (без учета регистра), цифры от «0» до «9» и дефис. ('-'). Исходная спецификация имен хостов в RFC 952 требовала, чтобы метки не могли начинаться с цифры или дефиса и не должны заканчиваться дефисом. Однако последующая спецификация ( RFC 1123 ) разрешила имена хостов начинаться с цифр. Никакие другие символы, знаки препинания или пробелы не допускаются.

Аарон Хэтэуэй
источник
6
Убедитесь, что вы четко понимаете, ищете ли вы имя хоста, полное доменное имя или то и другое.
Кевин Гросс
Кроме того, четко укажите, ищете ли вы строгие требования к совместимости с DNS или нет. В частности, DNS запрещает подчеркивание в метках имен хостов, тогда как многие операционные системы разрешают их локальное использование. DNS-серверы, как правило, снисходительны, и теперь DNS на практике требует подчеркивания в некоторых типах записей, таких как записи TXT (для DKIM и т. Д.), Но не для меток имен хостов.
Tripleee 02
26

Это зависит от того, обрабатываете ли вы IDN до или после toASCIIалгоритма IDN (то есть видите ли вы имя домена παράδειγμα.δοκιμήна греческом языке или как xn--hxajbheg2az3al.xn--jxalpdlp?).

В последнем случае - когда вы обрабатываете IDN через punycode - применяются старые правила RFC 1123:

От U + 0041 до U + 005A (AZ), от U + 0061 до U + 007A (az), сложенные вместе, от U + 0030 до U + 0039 (0-9) и U + 002D (-).

и U + 002E (.), конечно; правила для ярлыков разрешают другие, с точками между ярлыками.

Если вы видите его в форме IDN, допустимые символы сильно различаются, см. Http://unicode.org/reports/tr36/idn-chars.html для удобной таблицы всех допустимых символов.

Скорее всего, ваш сетевой код будет иметь дело с punycode, но ваш код отображения (или даже просто передача строк на другие уровни и из них) в более удобочитаемой форме, поскольку никто не запускает сервер на السعودية. домен хочет, чтобы их сервер был включен .xn--mgberp4a5d4ar.

Джон Ханна
источник
1
Вау, я даже не видел IDN и Ponycode! На данный момент я планирую только поддержку на английском языке, так как это просто мой любимый проект, но я определенно кое-что узнал из вашего ответа!
Ricket
2
Самое замечательное в том, как работает punycode, это то, что ниже определенного уровня (того, на котором вы устанавливаете сеть) все это ASCII. Это в значительной степени способ притвориться, что технология только ASCII может работать с другим текстом (включая некоторые английские слова, ранее запрещенные). Помимо предоставления целого слова пути обновления, он также дает вам его: создайте его, чтобы просто делать, как говорит RFC 1123, и если вы позже добавите поддержку IDN, сетевой код останется прежним, и вы добавите поддержку RFC 3490 сверху (библиотеки доступны на многих языках, чтобы помочь).
Джон Ханна,
2
@Ricket не знаю, была ли опечатка или вы пошутили над названием ("ponycode"). Я лично называю их «наказанными».
Камило Мартин
4

«Имя» (Сеть, Хост, Шлюз или Доменное имя) - это текстовая строка длиной до 24 символов, состоящая из алфавита (AZ), цифр (0–9), знака минус (-) и точки (.). Обратите внимание, что точки разрешены только тогда, когда они служат для разграничения компонентов «доменных имен». (См. RFC-921, «График внедрения системы доменных имен», для получения дополнительной информации). В имени нельзя использовать пробелы или пробелы. Никаких различий между верхним и нижним регистром не делается. Первый символ должен быть альфа-символом. Последний символ не должен быть знаком минус или точкой. Хост, который служит ШЛЮЗОМ, должен иметь "-GATEWAY" или "-GW" как часть своего имени. Хосты, которые не служат в качестве интернет-шлюзов, не должны использовать «-GATEWAY» и «-GW» как часть своих имен. Хост, который является TAC, должен иметь "

Это доступно на http://support.microsoft.com/kb/149044

Вивек
источник
Это дословно цитируется из RFC 952 [ tools.ietf.org/html/rfc952] . Это вводит в заблуждение - имена хостов могут быть длиной от 1 до 63 символов, как указано выше.
Craig S. Anderson
К сожалению, ссылка не работает.
Обратный звонок Евгения Маевского
0

Если вы регистрируете домен и прекращение действия (например .com), это не IDN, как Аарон Хэтэуэй сказал : «Имена хостов состоят из серий меток, соединенных точками, как и все доменные имена. Например, en.wikipedia.orgэто имя хоста. Каждая метка должна иметь длину от 1 до 63 символов, а полное имя хоста (включая разделительные точки, но не конечную точку) должно содержать максимум 253 символа ASCII.

Интернет-стандарты (запросы на комментарии) для протоколов требуют, чтобы метки имен хостов компонентов могли содержать только aсквозные буквы ASCII z(без учета регистра), 0сквозные цифры 9и дефис.- . Исходная спецификация имен хостов в RFC 952 требовала, чтобы метки не могли начинаться с цифры или дефиса и не должны заканчиваться дефисом. Однако последующая спецификация (RFC 1123) разрешила имена хостов начинаться с цифр. Никакие другие символы, знаки препинания или пробелы не допускаются.

Позже, Испания с его .es, .com.es, .org.es, .nom,es, .gob.esи .edu.esвносимой ДВОЙ ИДИ, если ваш TLD является одним из.es или любых других , который поддерживает его, любой символ может быть использован, но вы не можете комбинировать алфавиты как латинские, греческие или Кирилл в одном имени хоста, и что он уважает то, чего нельзя достичь ни в начале, ни в конце.

Если вы используете незарегистрированные TLD только для локальной сети, например, с локальным DNS или с файлами хостов, вы можете рассматривать их все как IDN.

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

Хавьер CasdeDie
источник