Czy jednuliterowe nazwy hostów są prawidłowe?

14

RFC-952 (ostatnie zdanie punktu 1 w Założeniach) zabrania nazw hostów jednoznakowych, a ja miałem doświadczenia ( ponad 7 lat temu lato 2002 r.), W których niektóre usługi odmawiałyby pracy z nazwami hostów jednoznakowych (ponieważ takie nazwy były niezgodny ze standardami), ale w ciągu ostatnich kilku lat widziałem wiele jednoznakowych nazw hostów. Czy jednoznakowe nazwy hostów są teraz prawidłowe? (Jeśli tak, jakie jest właściwe odniesienie do walidacji?)

edycja (w celu skonsolidowania niektórych informacji z odpowiedzi): różne aspekty DNS wydają się być zdefiniowane w kilku RFC, w tym 1035 , 1123 i 2181 . Z RFC-2181 sekcja 11 :

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.

Z RFC-1123 sekcja 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].

Z RFC-1123 sekcja 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.

I wreszcie, jak pierwotnie wspomniano, z 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.

To z podążania za tym łańcuchem początkowo powiedziałem, że RFC-952 zabrania jednoznacznych nazw hostów.

Izaak
źródło

Odpowiedzi:

2

Istnieje różnica między „ważnym” a „działa”. Jest całkiem możliwe, że nazwy hostów nie zostaną uznane za prawidłowe, jeśli są pojedynczymi znakami (mój wcześniejszy post nie jest w stanie wytrzymać). Jednak wiele systemów na to pozwala. Jeden z głównych systemów, system AD / DNS firmy Microsoft, ma starszą przyczynę zezwalania na nazwy pojedynczych znaków.

Nazwy old-school NetBIOS mogą mieć długość od 1 do 15 znaków. Ta specyfikacja została opracowana niezależnie od RFC952, jest oparta na innym pliku o nazwie lmhosts, więc działa. Problem pojawił się, gdy Microsoft zrezygnował z NetBEUI (właściwie NBF, NetBIOS Frame Protocol) na TCP / IP (właściwie NBT), a Microsoft musiał pozwolić na rozpoznawanie nazw w sieciach TCP / IP. MS zdecydowało się zachować rozdzielczość stylu NetBIOS na serwerach WINS, omijając potrzebę hostów zgodnych z RFC952.

Potem przyszła Active Directory i jej zależności DNS. Dynamiczny DNS był regułą, więc klienci musieli zarejestrować swoją nazwę komputera (pierwsze 15 znaków to także nazwa NetBIOS) w domenie DNS. Ponieważ MS zezwala na rejestrację w DNS jednoznakowych nazw NetBIOS, spowodowało to konflikt z RFC952. Postanowili zakodować swoje systemy, aby na to pozwolić, ponieważ emulowało to, jak zawsze działało w dniach WINS.

BIND DNS dopuszcza także nazwy hostów jednoznakowych. Ale RFC2181 niemal całkowicie stwierdza, że ​​aplikacje muszą sprawdzać własne dane, a nie DNS. Co pozostawia nam dużą populację urządzeń i oprogramowania, dla których nazwy hostów jednoznakowych są w porządku, i kilka wartości odstających, które są ściśle zgodne z RFC952, które na to nie pozwalają.

sysadmin1138
źródło
There is a difference between 'valid' and 'it works'. Ostatecznie uważam, że jest to najbardziej rozsądna odpowiedź, chociaż bardzo doceniłem całą wygenerowaną dyskusję. Doszedłem do wniosku, że jednoznakowe nazwy hostów są nadal technicznie niepoprawne, ale w tym momencie działają prawie ogólnie. (Podobnie podkreślenia są zabronione, ale w większości działają).
Isaac
11

Można by pomyśleć, że są one prawidłowe, ponieważ wszystkie główne serwery nazw są hostami jednoliterowymi (a.root-servers.net), a specyfikacja DNS nie tworzy dla nich konkretnego wyjątku. RFC, o którym mowa, dotyczy konkretnie formatu pliku hosta, a nie DNS. DNS został zdefiniowany w późniejszym RFC ( RFC 1035 go uruchamia). RFC 1123 (1989) wyraźnie to stwierdza.

 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.

Tak więc jednuliterowe nazwy hostów są prawidłowe w systemach opartych na DNS i istniały od czasu wynalezienia spamu. Systemy niezgodne z RFC i mogą być wyśmiewane. Chyba że w ogóle nie używają DNS i używają tylko plików hostów, w takim razie szkoda jest lepszym wyborem.

sysadmin1138
źródło
Ok, przeczytałem to w RFC-1123, ale zinterpretowałem to tak, że mają zastosowanie specyfikacje, które czytam w RFC-952, z wyjątkiem tego, że cyfra jest również dopuszczalna jako pierwszy znak (jak zacytowałeś, nie zmienia zakaz nazw jednoznakowych). Jeśli chodzi o serwery root, w pewnym momencie powiedziano mi, że stanowią one pewien wyjątek od reguły.
Izaak
2

Ponieważ nazwy hostów istniały, zanim ktokolwiek pomyślał o napisaniu na ich temat RFC, nie widzę powodu, dla którego nazwy hostów jednoznakowych powinny nagle stać się „nielegalne”. Ten konkretny RFC stracił mnie, kiedy to stwierdził

Ten dokument RFC jest oficjalną specyfikacją

ponieważ RFC NIE jest standardem. Nawet nie blisko.

Pomimo powyższego należy zauważyć, że przedmiotowa RFC została stworzona w celu zastosowania jej do stosunkowo niewielkiej grupy, a mianowicie Departamentu Obrony (prawdopodobnie USA).

John Gardeniers
źródło
RFC z samej definicji nie jest standardem. „Prośba o komentarze” nikomu nie krzyczy „standard”. Ciekawe, że udało im się to we własnych dokumentach.
Mark Henderson
1
en.wikipedia.org/wiki/Domain_name_system#Internet_standards zawiera listę wielu specyfikacji RFC, które „definiują” protokół DNS. RFC-1123 (jak wspomniano przez sysadmin1138) jest jednym z wymienionych i odnosi się do RFC-952. Z mojego doświadczenia wynika, że ​​chociaż RFC są żądaniami, stają się definicjami po ich zaakceptowaniu.
Izaak
@Farseeker, nie mówię, że tak jest w tym przypadku, ale zawsze jestem zaskoczony ludźmi, z których większość powinna wiedzieć lepiej, którzy cytują RFC tak, jakby były ostatecznym autorytetem w danym temacie. Jestem prawie pewien, że jest gdzieś w tym RFC. ;)
John Gardeniers
1
Niektóre RFC są w rzeczywistości standardami - RFC razem 1034 i 1035, na przykład, zawierają STD0013. Powód, dla którego nazywają się „Prośbami o komentarze”, jest historyczny i w gruncie rzeczy miał do czynienia z grupą niskiej klasy postgrad w późnych latach 60., którzy nie chcieli odhaczyć swoich przełożonych (słyszałem to osobiście prosto z autor RFC 1).
Alnitak,
2
@John Sugeruję przeczytanie RFC 2026. „Specyfikacja, która osiąga stan Standard, ma przypisany numer w serii STD, zachowując swój numer RFC”. Piszę dokumenty IETF do mojej codziennej pracy.
Alnitak
1

Myślę, że obecne nazwy hostów są bardziej zależne od specyfikacji DNS, ponieważ DNS jest tym, czego większość ludzi będzie używać w sieci lub w Internecie. Powiedział, że przychodzą na myśl trzy RFC (1034 - koncepcje, 1035 - implementacja i 2181 - wyjaśnienia na temat DNS).

Sekcja 3 RFC 1034 mówi:

Przestrzeń nazw domen to struktura drzewiasta. Każdy węzeł i liść na drzewie odpowiada zestawowi zasobów (który może być pusty). System domen nie rozróżnia zastosowań wewnętrznych węzłów i liści, a ta notatka używa terminu „węzeł” w odniesieniu do obu.

Każdy węzeł ma etykietę o długości od zera do 63 oktetów. Węzły Brother mogą nie mieć tej samej etykiety, chociaż tę samą etykietę można zastosować dla węzłów, które nie są braćmi. Jedna etykieta jest zarezerwowana, czyli etykieta zerowa (tj. Zero długości) używana dla katalogu głównego.

W sekcji 11 RFC 2181 wyjaśniono nazwy wszystkich węzłów adresu:

Sam DNS nakłada tylko jedno ograniczenie na poszczególne etykiety
, których można użyć do identyfikacji rekordów zasobów. To jedno ograniczenie
dotyczy długości etykiety i pełnej nazwy. Długość dowolnej etykiety jest ograniczona do 1–63 oktetów. Pełna nazwa domeny jest ograniczona do 255 oktetów (w tym separatorów)

Tak więc, w świetle specyfikacji DNS, możesz mieć a.domain.tld

rdzeń rdzeniowy
źródło
Z następnego akapitu w sekcji 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. Zasadniczo, ponieważ a.domain.tld jest poprawny w DNS, nie czyni go prawidłową nazwą hosta. Koniec sekcji 11 odwołuje się do sekcji 6.1.3.5 RFC-1123, która cytuje sekcję 2.1 o sobie i RFC-952, jak omówiono w odpowiedzi sysadmin1138.
Izaak
Cytat na końcu sekcji 6.1.3.5 mówi o mniejszych ograniczeniach w konwencji nazewnictwa zdefiniowanej w 952. Również 952 definiuje tabelę hosta DOD i nie jestem do końca przekonany, że jest ona bardziej odpowiednia niż specyfikacje DNS.
coredump
Myślę, że liberalizacja ograniczeń wspomniana na końcu 6.1.3.5 odnosi się tylko do dopuszczenia, aby pierwszy znak był liczbą - jest to jedyna modyfikacja wspomniana w sekcji 2.1 tego samego RFC (do której sekcji 6.1. 3.5 odnosi się). W tej sekcji 2.1 znajduje się odniesienie do definicji z RFC-952 jako definicji legalnej nazwy hosta.
Izaak
Sprawdź także RFC 920 i 921, które traktują migrację ze starej DARPA do nazw domen.
coredump
1

Jak ustaliłeś, RFC 1123 nie jest całkowicie jasne w tej kwestii długości.

Sekcja 2.1 mówi:

Oprogramowanie hosta MUSI obsługiwać nazwy hostów o długości do 63 znaków i POWINIEN obsługiwać nazwy hostów o długości do 255 znaków

Ponieważ ten tekst skutecznie całkowicie zastępuje tekst z RFC 952, należy również uznać, że każda długość do 255 znaków jest dozwolona.

Niestety w 1989 r. Internet Draughty nie otrzymały tak rygorystycznej recenzji, jak teraz, więc dwuznaczność prawdopodobnie nie została zauważona.

Alnitak
źródło
1
Ale 2.1 mówi również: 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. czy nie jest uzasadnione interpretowanie tego w ten sposób, że twój cytat nie zastępuje całkowicie tekstu z RFC-952?
Izaak
Mówi to, ale to wyraźnie źle. RFC 1123 również wyraźnie zmienia dopuszczalną długość nazwy hosta.
Alnitak