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