Frage Ist es für einen Hostnamen zulässig, mit einer Ziffer zu beginnen?


Ist es für einen Hostnamen zulässig, mit einer Ziffer zu beginnen? z.B. 8server

Vom Lesen RFC 1123 Es scheint, dass dies ein gültiger Hostname ist. Es ist mir jedoch nicht klar, ob ein Hostname nur mit einer Ziffer beginnen kann, wenn ein Suffix vorhanden ist, z. 8server.com

Der Ursprung dieser Frage ist der InternetDomainName.isValid("8server"); in der Google Guava-Bibliothek (Javadoc) lehnt die Eingabe ab. Ich habe auch eine spezielle Frage zum Thema gestellt Guava Diskutieren Gruppe.


39
2017-10-20 09:24


Ursprung


Als eine Art Beweis mit Beispiel existieren sie: 7dayshop.com - Holloway
Wie wäre es mit einem Nur-Zahlen-Hostnamen? 88888888.cn - 小太郎
4chan.com ist ein gültiger (und bekannter) Hostname, der mit einer Zahl beginnt. - IQAndreas
Wie kannst du es vergessen? 9gag.com? : D - ADTC
@IQAndreas, 4chan.org ist ein guter Grund, es zu schaffen ungültig. (Ich mache nur einen Scherz anonym, tu mir nicht weh.) - Paul Ruane


Antworten:


RFC 1123 lockert eine Einschränkung von RFC 952, die ein Vermächtnis der Hostname Serverprotokoll (beschrieben in RFC 953) ersetzt durch DNS. Daher wäre ein vollständig numerischer Hostname für diese RFCs gültig.

RFC 1123 selbst diskutiert die Konsequenzen, wenn es um IP-versus Hostnamen-Parsing geht:

Wenn eine punktierte Dezimalzahl eingegeben werden kann, ohne diese              Identifizierende Trennzeichen, dann muss eine vollständige syntaktische Prüfung erfolgen              gemacht, weil ein Segment von Ein Host-Domänenname ist jetzt zulässig              um mit einer Ziffer zu beginnen und könnte legal vollständig numerisch sein              (siehe Abschnitt 6.1.2.4). Ein gültiger Hostname kann jedoch niemals              habe die Punkt-Dezimal-Form #. #. #. #, da mindestens die              Das Label der höchsten Ebene wird alphabetisch sein.

Es wurde jedoch in RFC 1178 Richtlinien zur Auswahl eines gültigen Hostnamens aufgrund von Implementierungsproblemen. Viele dieser Implementierungen erkennen numerische Hostnamen nicht gut und versuchen, sie als IPs zu analysieren, bis sie mindestens ein nicht numerisches Zeichen enthalten, unabhängig vom Speicherort.

Außerdem werden Sie feststellen, dass Implementierungen nicht immer andere ursprüngliche Einschränkungen von RFC 952 berücksichtigen, indem beispielsweise der Hostname mit einem Minuszeichen oder einem Punkt endet.

DNS hat diese ursprünglichen Spezifikationen für Hostnamen beibehalten und Unterstützung für Unterstriche hinzugefügt (RFC 2782).

Aktualisieren Wie in den Kommentaren gefordert, Klarstellung für den Satz: Ein gültiger Hostname kann jedoch niemals die Schreibweise mit dem Dezimalpunkt #. #. #. # Haben, da mindestens das Label der höchsten Ebene alphabetisch ist. Dies bedeutet, dass der Top-Level-Domain-Name sein muss alphabetischDaher kann der vollständig qualifizierte Hostname niemals mit einer IPv4-Adresse verwechselt werden. Diese Idee wurde geklärt durch RFC 3696 für DNS und geändert zu nicht all-numerisch. Beachten Sie den kleinen Unterschied.


29
2017-10-20 10:10



Denken Sie daran, dass Implementierungen, die Ziffern in Namen aus den 1980er Jahren nicht umgehen konnten; RFC 1178 wurde 1990 veröffentlicht. Alles, was nicht damit umgehen kann jetzt ist einfach fehlerhaft. - Michael Hampton♦
@MichaelHampton Sie würden überrascht sein, wie viele Implementierungen immer noch beachten Sie diese RFCs nicht. Ausgehend von der Behandlung von Linux-Hosts. - Xavier Lucas
Haha, nein, würde ich nicht. Es vergeht kaum ein Tag, an dem ich nicht Grund haben, einen Entwickler über den Kopf mit einem RFC zu schlagen. - Michael Hampton♦
@Michael Hampton: Du würdest den Scheiß nicht glauben, den ich manchmal von Entwicklern sehe. Vor ein paar Wochen hatte ich eine, die eine Netzwerkkonfigurationswebseite in einer IP-Kamera gemacht hatte, so dass der Benutzer den Hostnamen für die Kamera eingeben konnte. Er hat keine Validierung für die Benutzereingabe im freien Format vorgenommen. Der Beta-Test-Benutzer hat "Raum 1.10" eingegeben und die Kamera sendet das glücklich als DHCP-Client-Kennung. Ich kann Ihnen versichern, dass Microsoft DHCP und DNS-Server das nicht mögen. Gut ist mir aufgefallen, dass das in den Produktionsbau kam. Ich kann nur bei dem Gedanken erschauern, was manchmal beim Kunden ankommt ... - Tonny


Ursprünglich konnte der Hostname nicht mit einer Ziffer oder einem Unterstrich beginnen (RFC 952) aber die neue Spezifikation RFC 1123, wie Sie erwähnt haben, erlaubt es.

Bezüglich des Aufrufs von isValid () sollte in diesem Fall der vollständige Domänenname im Parameter übergeben werden: InternetDomainName.isValid("8server.com");


12
2017-10-20 09:40



Muss wirklich ein vollständiger Domain-Name an die isValid-Methode übergeben werden? Letztendlich InternetDomainName.isValid("server"); gibt wahr zurück. - Mark
@Mark OK, ich habe die Antwort entsprechend aktualisiert - Céline Aussourd


Ja. RFC 1123 erlaubt es eindeutig und hier ist ein Beispiel:

http://9292.nl/

Es ist der Routenplaner für den niederländischen öffentlichen Verkehr.


8
2017-10-20 12:42



Es gibt viel mehr: 9gag.com, 4chan.org, usw.