Чи дійсно ім'я хоста починати з цифри?


45

Чи дійсно ім'я хоста починати з цифри? напр8server

Зчитавши RFC 1123 , видно, що це дійсне ім'я хоста. Однак мені не зрозуміло, чи може ім'я хоста починатися з цифри лише тоді, коли є суфікс, наприклад8server.com

Походження цього питання полягає InternetDomainName.isValid("8server");в тому, що в бібліотеці Google Guava ( Javadoc ) відхиляються дані. Я також розмістив конкретне запитання щодо групи Guava Discuss .


2
Як своєрідний доказ на прикладі вони існують: 7dayshop.com
Holloway

3
Як щодо імені хоста лише для цифр? 88888888.cn
小 太郎

7
4chan.com- дійсне (і добре відоме) ім'я хоста, що починається з числа.
IQAndreas

3
Як ви можете забути 9gag.com ? : D
ADTC

8
@IQAndreas, 4chan.org - достатньо вагомий привід зробити його недійсним . (Просто жартую анонімного, не шкода мені.)
Пол Руан

Відповіді:


33

RFC 1123 знімає обмеження RFC 952, яке вказує на спадщину протоколу сервера Hostname (описаного в RFC 953 ), заміненого DNS. Таким чином, повністю числове ім'я хоста було б дійсним для цих RFC.

Сам RFC 1123 обговорює наслідки, коли мова йде про IP-розбір та розбір імені хоста:

Якщо точково-десяткове число можна вводити без таких ідентифікаційних розмежувачів, то слід провести повну синтаксичну перевірку, тому що сегмент доменного доменного імені тепер дозволено починати з цифри і юридично може бути цілком числовим (див. Розділ 6.1. 2.4). Однак дійсне ім’я хоста ніколи не може мати пунктирно-десяткової форми #. #. #. #, Оскільки принаймні мітка компонента найвищого рівня буде алфавітною.

Однак у керівництві RFC 1178 було передбачено вибір дійсного імені хоста через проблеми з реалізацією. Багато з цих реалізацій не розпізнають числові імена хостів і намагаються їх розібрати, як якщо б вони були IP-адресами, поки вони не містять принаймні одного нечислового символу незалежно від місця розташування.

Крім того, ви виявите, що реалізація не завжди враховує інші оригінальні обмеження RFC 952, дозволяючи, наприклад, імені хоста закінчуватися знаком мінус або крапкою.

DNS зберіг ці оригінальні характеристики для імен хостів та додав підтримку підкреслення ( RFC 2782 ).

Оновлення Як вимагається в коментарях, уточнення щодо речення: Однак дійсне ім'я хоста ніколи не може мати пунктирно-десяткової форми # . Це означає, що доменне ім’я верхнього рівня має бути в алфавітному порядку , тому повноцінне ім'я хоста ніколи не можна плутати з IPv4 адресою. Ця ідея була роз'яснена RFC 3696 для DNS і була змінена на не всі числові . Зверніть увагу на незначну різницю.


7
Майте на увазі, що реалізація, яка не могла обробляти цифри в іменах, що датуються 1980-ми; RFC тисяча сто сімдесят вісім був опублікований в 1990 році все , що не може впоратися з цим в даний час є просто глючить.
Майкл Хемптон

@MichaelHampton Ви були б здивовані тим, скільки реалізацій досі не шанують ці RFC. Починаючи з обробки файлів хостів Linux.
Ксав'є Лукас

11
Ха-ха, ні, я б не. Навряд чи день проходить, що я не маю приводу бити якогось розробника над головою RFC.
Майкл Хемптон

2
@Michael Hampton: Ви б не повірили лайно, яке я бачу часом від чортів. Пару тижнів тому у мене був той, хто зробив веб-сторінку з конфігурацією мережі в ip-камері, щоб користувач міг ввести ім'я хоста для камери. Він не робив жодної перевірки на введення користувачем вільного формату. Користувач бета-тесту ввів "Кімната 1.10", і камера радісно надсилає це як ідентифікатор клієнта DHCP. Можу запевнити, що серверам Microsoft DHCP і DNS це не подобається. Добре, що я помітив до цього, що потрапив у виробництво. Я можу лише здригнутися від думки, що іноді потрапляє до замовника ...
Тонні

13

Спочатку ім'я хоста не могло починатися з цифри або підкреслення ( RFC 952 ), але нова специфікація RFC 1123, як ви вже згадували, дозволяє це.

Щодо виклику до isValid (), у цьому випадку повне доменне ім’я має бути передано в параметрі: InternetDomainName.isValid("8server.com");


Чи потрібно дійсно повне доменне ім’я передати методу isValid? Зрештою InternetDomainName.isValid("server");повертається правдою.
Марк

@ Марк ОК, відповідь я оновив відповідно
Селін Ауссурд

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.