it-swarm.com.de

Ist es gültig, dass ein Hostname mit einer Ziffer beginnt?

Ist es gültig, dass ein Hostname mit einer Ziffer beginnt? z.B. 8server

Aus dem Lesen von RFC 112 geht hervor, dass dies ein gültiger Hostname ist. Mir ist 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, dass InternetDomainName.isValid("8server"); in der Google Guava-Bibliothek ( Javadoc ) die Eingabe ablehnt. Ich habe auch eine spezielle Frage in der Gruppe Guava Discuss gepostet.

45
Mark

RFC 1123 lockert eine Einschränkung von RFC 952, die ein Erbe des durch DNS ersetzten Hostname Server Protocol (beschrieben in RFC 95 ) angibt. Ein vollständig numerischer Hostname wäre also für diese RFCs gültig.

In RFC 1123 selbst werden die Konsequenzen für das Parsen von IP- und Hostnamen erläutert:

Wenn eine Punkt-Dezimalzahl ohne solche identifizierenden Trennzeichen eingegeben werden kann, muss eine vollständige syntaktische Überprüfung durchgeführt werden, da ein Segment von einem Host-Domänennamen jetzt mit einer Ziffer beginnen darf und könnte rechtlich vollständig numerisch sein (siehe Abschnitt 6.1.2.4). Ein gültiger Hostname kann jedoch niemals die Punkt-Dezimal-Form #. #. #. # Haben, da mindestens die Komponentenbezeichnung der höchsten Ebene alphabetisch ist.

In den Richtlinien RFC 1178 wurde jedoch angegeben, dass aufgrund von Implementierungsproblemen ein gültiger Hostname ausgewählt werden soll. Viele dieser Implementierungen erkennen numerische Hostnamen nicht gut und versuchen, sie so zu analysieren, als wären sie IPs, bis sie unabhängig vom Speicherort mindestens ein nicht numerisches Zeichen enthalten.

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

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

Update Wie in den Kommentaren gefordert, Klarstellung für den Satz: Ein gültiger Hostname kann jedoch niemals die Punkt-Dezimal-Form # haben. # . #. #, da mindestens die Komponentenbezeichnung der höchsten Ebene alphabetisch ist. Dies bedeutet, dass der Domänenname der obersten Ebene alphabetisch sein muss, sodass der vollständig qualifizierte Hostname niemals mit einer IPv4-Adresse verwechselt werden kann. Diese Idee wurde durch RFC 3696 für DNS geklärt und in nicht rein numerisch geändert. Beachten Sie den kleinen Unterschied.

33
Xavier Lucas

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

In diesem Fall sollte beim Aufruf von isValid () der vollständige Domänenname im Parameter übergeben werden: InternetDomainName.isValid("8server.com");

13

Ja. RFC 1123 erlaubt dies eindeutig und hier ein Beispiel:

http://9292.nl/

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

9