Допустимо ли имя хоста начинаться с цифры? например8server
Из чтения RFC 1123 может показаться, что это действительное имя хоста. Однако мне не ясно, может ли имя хоста начинаться с цифры только при наличии суффикса, например8server.com
Происхождение этого вопроса заключается в том, что InternetDomainName.isValid("8server");
в библиотеке Google Guava ( Javadoc ) отклоняется ввод. Я также опубликовал конкретный вопрос в группе обсуждения гуавы .
4chan.com
является допустимым (и общеизвестным) именем хоста, начинающимся с цифры.Ответы:
RFC 1123 ослабляет ограничение RFC 952, которое определяет устаревший протокол сервера имени хоста (описанный в RFC 953 ), замененный DNS. Таким образом, полное числовое имя хоста будет действительным для этих RFC.
Сам RFC 1123 обсуждает последствия, когда речь заходит об IP по сравнению с анализом имени хоста:
Однако в рекомендациях RFC 1178 было указано, как выбрать правильное имя хоста из-за проблем с реализацией. Многие из этих реализаций плохо распознают числовые имена хостов и пытаются проанализировать их, как если бы они были IP-адресами, пока они не содержат хотя бы один нечисловой символ независимо от местоположения.
Кроме того, вы обнаружите, что реализации не всегда соблюдают другие исходные ограничения RFC 952, позволяя, например, имени хоста заканчиваться знаком минус или точкой.
DNS сохранил эти оригинальные спецификации для имен хостов и добавил поддержку подчеркивания ( RFC 2782 ).
Обновление В соответствии с просьбой в комментариях пояснение к предложению: Однако действительное имя хоста никогда не может иметь точечно-десятичную форму #. #. #. #, Так как по крайней мере метка компонента самого высокого уровня будет буквенной . Это означает, что доменное имя верхнего уровня должно быть буквенным , поэтому полное имя хоста никогда не следует путать с IPv4-адресом. Эта идея была разъяснена RFC 3696 для DNS и заменена на нечисловую . Обратите внимание на небольшую разницу.
источник
Первоначально имя хоста не могло начинаться с цифры или подчеркивания ( RFC 952 ), но новая спецификация RFC 1123, как вы упомянули, позволяет это.
Что касается вызова isValid (), в этом случае полное доменное имя должно быть передано в параметре:
InternetDomainName.isValid("8server.com");
источник
InternetDomainName.isValid("server");
возвращается истина.Да. RFC 1123 явно позволяет это, и вот пример:
http://9292.nl/
Это планировщик маршрута для голландского общественного транспорта.
источник