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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

U + 0041 через U + 005A (A-Z), U + 0061 через U + 007A (a-z), свернутые друг с другом, U + 0030 через U + 0039 (0-9) и U + 002D (-). [edit: и U + 002E (.) конечно; правила для меток позволяют другим, с точками между метками, иногда это очевидные бит, которые легче всего забыть]

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

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

Ответ 3

"Имя" (сеть, хост, шлюз или доменное имя) представляет собой текстовую строку длиной до 24 символов, взятую из алфавита (AZ), цифры (0-9), знак минус (-) и период (.). Обратите внимание, что периоды разрешены только тогда, когда они служат для разграничения компонентов имен доменных имен. (См. RFC-921, "Расписание внедрения системы доменных имен", для фона). Никакие пустые или пробельные символы не разрешены как часть имени. Никакого различия между верхним и нижним регистром. Первый символ должен быть альфа-символом. Последний символ не должен быть знаком минус или периодом. Хост, который выполняет функцию GATEWAY, должен иметь "-GATEWAY" или "-GW" как часть своего имени. Хосты, которые не являются интернет-шлюзами, не должны использовать "-GATEWAY" и "-GW" как часть своих имен. Хост, который является TAC, должен иметь "-TAC" в качестве последней части имени своего хоста, если это хост DoD. Не допускаются имена или псевдонимы одного символа.

Это указано в http://support.microsoft.com/kb/149044