Чи дійсні однобуквені імена хостів?


14

RFC-952 (останнє речення пункту 1 під Припущеннями) забороняє односимвольні імена хостів, і я мав досвід ( більше 7 років тому влітку 2002 року), коли деякі служби відмовилися працювати з односимвольними іменами хостів (тому що такі назви були не відповідає стандартам), але я бачив ряд однозначних імен хостів, які використовувались протягом останніх кількох років. Чи дійсні односимвольні імена хостів зараз? (Якщо так, то яка правильна посилання на перевірку?)

редагувати (щоб консолідувати деяку інформацію з відповідей): різні аспекти DNS, здається, визначені у кількох RFC, включаючи 1035 , 1123 та 2181 . З розділу 11 RFC-2181 :

Note however, that the various applications that make use of DNS data
can have restrictions imposed on what particular values are
acceptable in their environment.  For example, that any binary label
can have an MX record does not imply that any binary name can be used
as the host part of an e-mail address.
[ ... ]
See also [RFC1123] section 6.1.3.5.

З розділу RFC-1123 6.1.3.5 :

The DNS defines domain name syntax very generally -- a
string of labels each containing up to 63 8-bit octets,
separated by dots, and with a maximum total of 255
octets.  Particular applications of the DNS are
permitted to further constrain the syntax of the domain
names they use, although the DNS deployment has led to
some applications allowing more general names.  In
particular, Section 2.1 of this document liberalizes
slightly the syntax of a legal Internet host name that
was defined in RFC-952 [DNS:4].

Із RFC-1123 розділу 2.1 :

The syntax of a legal Internet host name was specified in RFC-952
[DNS:4].  One aspect of host name syntax is hereby changed: the
restriction on the first character is relaxed to allow either a
letter or a digit.  Host software MUST support this more liberal
syntax.

І нарешті, як спочатку згадувалося, від RFC-952 :

1. A "name" (Net, Host, Gateway, or Domain name) is a text string up
to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus
sign (-), and period (.).  Note that periods are only allowed when
they serve to delimit components of "domain style names". (See
RFC-921, "Domain Name System Implementation Schedule", for
background).  No blank or space characters are permitted as part of a
name. No distinction is made between upper and lower case.  The first
character must be an alpha character.  The last character must not be
a minus sign or period.
[ ... ]
Single character names or nicknames are not allowed.

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

Відповіді:


2

Існує різниця між "дійсним" і "працює". Цілком можливо, що імена хостів не вважаються дійсними, якщо вони є окремими символами (моя попередня публікація не протистояла). Однак досить багато систем це дозволяють. Одна з основних систем, система AD / DNS Microsoft, має застарілі підстави для дозволу імен одного символу.

Старі шкільні імена NetBIOS можуть мати довжину від 1 до 15 символів. Ця специфікація була розроблена незалежно від RFC952, вона заснована на іншому файлі під назвою lmhosts, тому він працює. Проблема виникла, коли Microsoft переїхала з NetBEUI (насправді NBF, NetBIOS Frame Protocol) і перейшла на TCP / IP (власне NBT), і Microsoft повинна була дозволити іменування дозволу через мережі TCP / IP. MS обирають підтримувати роздільну здатність стилю NetBIOS на серверах WINS, минаючи потребу в хостах, сумісних з RFC952.

Потім з'явився Active Directory та його залежність від DNS. Динамічний DNS був правилом, тому клієнтам довелося зареєструвати своє ComputerName (перші 15 символів якого також є їх ім'ям NetBIOS) у домені DNS. Оскільки MS дозволяє односимвольним іменам NetBIOS реєструватись у DNS, це призвело до конфлікту з RFC952. Вони вирішили кодувати свої системи, щоб дозволити це, оскільки це наслідувало те, як це завжди працювало в часи WINS.

BIND DNS також дозволяє одноіменні імена хостів. Але RFC2181 в значній мірі стверджує, що програмам потрібно перевіряти власні дані, а не DNS. Це залишає нам велику кількість пристроїв і програмного забезпечення, для яких одноіменні імена хостів є просто чудовими, а також декілька ексклюзивів, які є чіткими для RFC952, які цього не дозволяють.


There is a difference between 'valid' and 'it works'. Зрештою, я думаю, що це найрозумніша відповідь, хоча я дуже вдячний за всю дискусію. Я зробив би висновок, що одноіменні імена хостів все ще є технічно недійсними, але на даний момент працюють досить універсально. (Так само, підкреслення заборонено, але працюйте здебільшого.)
Ісаак

11

Ви можете подумати, що вони дійсні, оскільки всі кореневі сервери імен є хостами з однієї літери (a.root-servers.net), і специфікація DNS не створює для них конкретного винятку. Розглянута RFC розроблена спеціально для формату файлів хосту, а не DNS. DNS був визначений в більш пізньому RFC ( RFC 1035 запускає його). RFC 1123 (1989) чітко заявляє про це.

 The syntax of a legal Internet host name was specified in RFC-952
 [DNS:4].  One aspect of host name syntax is hereby changed: the
 restriction on the first character is relaxed to allow either a
 letter or a digit.  Host software MUST support this more liberal
 syntax.

Отже, однобуквені імена хостів є дійсними в системах на базі DNS і були з тих пір, поки не було винайдено спам. Системи, які не відповідають стандартам RFC, і з них можуть глузувати. Якщо вони взагалі не використовують DNS і не використовують лише файли хостів, тоді шкода є кращим вибором.


Гаразд, я читав це в RFC-1123, але я інтерпретував це так, що застосовуються характеристики, які я читаю в RFC-952, за винятком того, що цифра також дозволена як перший символ (як ви цитували, вона не змінює значення заборона однозначних імен). Щодо кореневих серверів, мені якось сказали, що вони є якимось особливим винятком із правила.
Ісаак

2

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

Цей RFC є офіційною специфікацією

тому що RFC НЕ є стандартом. Навіть близько не.

Незважаючи на вищевикладене, слід зазначити, що розглянутий РФС був створений для відновлення відносно невеликої групи, а саме до Міністерства оборони (імовірно, США).


RFC за самим визначенням не є стандартом. "Запит на коментарі" нікому не кричить "стандарт". Цікаво, що вони розійшлися з цим у власних документах.
Марк Хендерсон

1
en.wikipedia.org/wiki/Domain_name_system#Internet_standards перелічено багато RFC, які "визначають" протокол DNS. RFC-1123 (як згадує sysadmin1138) є серед перелічених, і в ньому посилається RFC-952. З мого досвіду, хоча RFC - це запити, вони стають визначеннями, коли їх приймають.
Ісаак

@Farseeker, я не кажу, що це так і є, але я завжди дивуюсь людям, більшість тих, хто повинен знати краще, які цитують RFC так, ніби вони є остаточним авторитетом у будь-якій конкретній темі. Я впевнений, що десь є RFC про це. ;)
Джон Гарденєр

1
Деякі RFC насправді є стандартами - RFC 1034 та 1035 разом, наприклад, містять STD0013. Причина, яку вони називають "Запити на коментарі", є історичною, і по суті, це стосується купи низькосортних постградівців наприкінці 60-х, які не бажають відзначати своїх начальників (я чув це особисто від прямо автор RFC 1).
Альнітак

2
@John Я пропоную прочитати RFC 2026. "Специфікації, яка досягає статусу" Стандарт ", присвоюється номер у серії STD, зберігаючи свій номер RFC". Я пишу документи IETF для своєї денної роботи.
Альнітак

1

Я думаю, що поточні імена хостів більше залежать від специфікацій DNS, оскільки DNS - це те, що більшість людей використовуватиме всередині мережі або в Інтернеті. Сказав, що на думку приходять три RFC (1034 - концепції, 1035 - реалізація та 2181 - роз'яснення щодо DNS).

Розділ 3 RFC 1034 говорить:

Простір доменних імен - це структура дерева. Кожен вузол і лист на дереві відповідає набору ресурсів (який може бути порожнім). Доменна система не робить різниці між використанням внутрішніх вузлів та листків, і ця примітка використовує термін "вузол" для позначення обох.

Кожен вузол має мітку, яка дорівнює нулю до 63 октетів. Вузли братів можуть не мати однакової мітки, хоча та сама мітка може використовуватися і для вузлів, які не є братами. Одна мітка зарезервована, і це нульова (тобто нульова довжина) мітка, що використовується для кореня.

І в розділі 11 RFC 2181 ми маємо пояснення щодо іменування кожного вузла адреси:

Сам DNS встановлює лише одне обмеження на конкретні мітки,
які можна використовувати для ідентифікації записів ресурсів. Це одне обмеження
стосується довжини етикетки та повного найменування. Довжина будь-якої однієї мітки обмежена від 1 до 63 октетів. Повне доменне ім’я обмежено 255 октетами (включаючи роздільники)

Отже, у світлі специфікацій DNS ви можете мати a.domain.tld


З наступного абзацу розділу 11 RFC-2181: Note however, that the various applications that make use of DNS data can have restrictions imposed on what particular values are acceptable in their environment. For example, that any binary label can have an MX record does not imply that any binary name can be used as the host part of an e-mail address. В основному, оскільки a.domain.tld дійсний у DNS, це не робить його дійсним іменем хоста. Кінець розділу 11 посилається на розділ 6.1.3.5 RFC-1123, де цитується сам розділ 2.1 та RFC-952, про що йдеться у відповіді sysadmin1138.
Ісаак

Цитування в кінці розділу 6.1.3.5 говорить про менші обмеження в конвенції про іменування, визначені на 952. Також 952 визначає таблицю хоста DOD, і я не зовсім впевнений, що це більш актуально, ніж специфікації DNS.
coredump

Я думаю, що лібералізація обмежень, згаданих наприкінці 6.1.3.5, стосується лише дозволу першого символу бути числом - це єдина модифікація, згадана в розділі 2.1 тієї ж RFC (що є розділом, до якого 6.1. 3.5 посилань). Саме в цьому розділі 2.1 посилання на визначення RFC-952 посилається на визначення легального імені хоста.
Ісаак

Також перевірте RFC 920 та 921, що трактує перехід зі старої DARPA на доменні імена.
coredump

1

Як ви визначили, RFC 1123 не є цілком зрозумілим у цьому питанні.

У розділі 2.1 сказано:

Хост-програмне забезпечення ОБОВ'ЯЗКОВО обробляє імена хостів до 63 символів і ДОЛЖНІ обробляти імена хостів до 255 символів

Оскільки цей текст фактично повністю перекриває текст із RFC 952, слід також вважати, що будь-яка довжина до 255 символів є законною.

На жаль, ще в 1989 р. Інтернет-чернетки не отримали неймовірно ретельного огляду, який вони отримують зараз, тому двозначність, ймовірно, просто не помічена.


1
Але 2.1 також говорить: The syntax of a legal Internet host name was specified in RFC-952 [DNS:4]. One aspect of host name syntax is hereby changed: the restriction on the first character is relaxed to allow either a letter or a digit. Чи не розумно це трактувати, щоб означати, що ваша цитата не повністю перекриває текст із RFC-952?
Ісаак

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