Ist es gültig, dass ein Hostname mit einer Ziffer beginnt? z.B8server
Aus dem Lesen von RFC 1123 geht hervor, dass dies ein gültiger Hostname ist. Mir ist jedoch nicht klar, ob ein Hostname nur mit einer Ziffer beginnen kann, wenn es ein Suffix gibt, z8server.com
Der Ursprung dieser Frage ist, dass InternetDomainName.isValid("8server");
in der Google Guava-Bibliothek ( Javadoc ) die Eingabe abgelehnt wird. Ich habe auch eine spezielle Frage zur Guava Discuss- Gruppe gestellt.
4chan.com
ist ein gültiger (und bekannter) Hostname, der mit einer Zahl beginnt.Antworten:
RFC 1123 lockert eine Einschränkung von RFC 952, die ein Erbe des Hostname Server-Protokolls (beschrieben in RFC 953 ) angibt, das durch DNS ersetzt wird. Somit wäre ein vollständig numerischer Hostname gemäß diesen RFCs gültig.
RFC 1123 selbst erörtert die Konsequenzen beim Parsen von IP- und Hostnamen:
In den RFC 1178- Richtlinien wurde jedoch festgelegt, dass aufgrund von Implementierungsproblemen ein gültiger Hostname ausgewählt werden sollte. Viele dieser Implementierungen erkennen numerische Hostnamen nicht gut und versuchen, sie so zu analysieren, als wären sie IPs, bis sie unabhängig vom Standort mindestens ein nicht numerisches Zeichen enthalten.
Außerdem werden Sie feststellen, dass Implementierungen andere ursprüngliche Einschränkungen von RFC 952 nicht immer berücksichtigen, sodass beispielsweise der Hostname mit einem Minuszeichen oder einem Punkt endet.
DNS behielt diese ursprünglichen Spezifikationen für Hostnamen bei und fügte Unterstützung für Unterstriche hinzu ( RFC 2782 ).
Aktualisieren Wie in den Kommentaren angefordert, Erläuterung des Satzes: 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 von RFC 3696 für DNS geklärt und in nicht rein numerisch geändert . Beachten Sie den kleinen Unterschied.
quelle
Ursprünglich konnte der Hostname nicht mit einer Ziffer oder einem Unterstrich beginnen ( RFC 952 ), aber die neue Spezifikation RFC 1123 erlaubt dies, wie Sie bereits erwähnt haben.
In Bezug auf den Aufruf von isValid () sollte in diesem Fall der vollständige Domänenname im Parameter übergeben werden:
InternetDomainName.isValid("8server.com");
quelle
InternetDomainName.isValid("server");
kehrt wahr zurück.Ja. RFC 1123 erlaubt dies eindeutig und hier ist ein Beispiel:
http://9292.nl/
Es ist der Routenplaner für die niederländischen öffentlichen Verkehrsmittel.
quelle