Gültige Zeichen eines Hostnamens?

85

Was sind die gültigen Zeichen eines Hostnamens? Dies wäre so etwas wie ein vernetzter Computer oder eine Webdomäne.

Um es in einen Zusammenhang zu bringen, schreibe ich ein PC-Spiel, das eine Verbindung zu einem Remote-Server herstellt. Ich habe also ein Feld für den Hostnamen und ein Feld für den Port. Natürlich ist der Port eine Zahl im kurzen Bereich, aber ich muss wissen, was alle möglichen Hostnamenzeichen sind (und jedes andere Muster, das erforderlich sein könnte - muss ein Hostname mit einem Buchstaben beginnen?).

Beispiele für Hostnamen sind localhostoder google.com.

Ricket
quelle
2
Der Linux- Befehl sethostname akzeptiert alle Bytes.
OrangeDog

Antworten:

91

Kasse dieses Wiki , insbesondere den Abschnitt Einschränkungen für gültige Hostnamen

Hostnamen bestehen aus einer Reihe von mit Punkten verketteten Beschriftungen, ebenso wie alle Domänennamen. Beispielsweise ist "en.wikipedia.org" ein Hostname. Jedes Etikett muss zwischen 1 und 63 Zeichen lang sein, und der gesamte Hostname (einschließlich der Begrenzungspunkte, jedoch nicht eines nachgestellten Punkts) darf maximal 253 ASCII-Zeichen enthalten.

Die Internetstandards (Requests for Comments) für Protokolle schreiben vor, dass Komponenten-Hostnamen-Labels nur die ASCII-Buchstaben 'a' bis 'z' (ohne Berücksichtigung der Groß- und Kleinschreibung), die Ziffern '0' bis '9' und den Bindestrich enthalten dürfen ('-'). Die ursprüngliche Spezifikation von Hostnamen in RFC 952 sah vor , dass Beschriftungen nicht mit einer Ziffer oder einem Bindestrich beginnen dürfen und nicht mit einem Bindestrich enden dürfen. Eine nachfolgende Spezifikation ( RFC 1123 ) erlaubte jedoch, dass Hostnamenbezeichnungen mit Ziffern beginnen. Andere Symbole, Satzzeichen oder Leerzeichen sind nicht zulässig.

Aaron Hathaway
quelle
6
Stellen Sie sicher, dass Sie sich darüber im Klaren sind, ob Sie nach einem Hostnamen oder einem vollqualifizierten Domainnamen suchen oder nach einem.
Kevin Gross
Stellen Sie außerdem klar, ob Sie nach strengen DNS-Interoperabilitätsanforderungen suchen oder nicht. Insbesondere verbietet DNS Unterstriche in Hostnamen-Labels, während viele Betriebssysteme sie für die lokale Verwendung zulassen. DNS-Server sind in der Regel nachsichtig, und der DNS erfordert derzeit in der Praxis Unterstriche bei einigen Datensatztypen, z. B. TXT-Datensätzen (für DKIM usw.), nur nicht für Hostnamenbezeichnungen.
Tripleee
26

Dies hängt davon ab, ob Sie IDNs vor oder nach dem IDN- toASCIIAlgorithmus verarbeiten ( dh sehen Sie den Domainnamen παράδειγμα.δοκιμήauf Griechisch oder als xn--hxajbheg2az3al.xn--jxalpdlp?).

Im letzteren Fall - wenn Sie IDNs über den Punycode verarbeiten - gelten die alten RFC 1123-Regeln:

U + 0041 bis U + 005A (AZ), U + 0061 bis U + 007A (az) Gehäuse gefaltet, U + 0030 bis U + 0039 (0-9) und U + 002D (-).

und U + 002E (.) natürlich; Die Regeln für Beschriftungen erlauben die anderen mit Punkten zwischen den Beschriftungen.

Wenn Sie es in IDN-Form sehen, sind die zulässigen Zeichen sehr unterschiedlich. Unter http://unicode.org/reports/tr36/idn-chars.html finden Sie eine praktische Übersicht aller gültigen Zeichen.

Möglicherweise wird Ihr Netzwerkcode mit dem Punycode umgehen, aber Ihr Anzeigecode (oder sogar nur das Übergeben von Zeichenfolgen an und von anderen Ebenen) mit der besser lesbaren Form, da niemand einen Server auf dem السعودية ausführt. Die Domain möchte, dass ihr Server als eingeschaltet aufgeführt wird .xn--mgberp4a5d4ar.

Jon Hanna
quelle
1
Wow, ich habe noch nie IDN und Ponycode gesehen! Zur Zeit plane ich nur Englischunterstützung, da es nur ein Lieblingsprojekt von mir ist, aber ich habe definitiv etwas aus Ihrer Antwort gelernt!
Ricket
2
Das Tolle an der Funktionsweise von Punycode ist, dass unter einem bestimmten Level (dem, auf dem Sie das Netzwerk betreiben) alles ASCII ist. Es ist so ziemlich eine Möglichkeit, so zu tun, als könne nur ein ASCII-Techniker mit anderem Text arbeiten (einschließlich einiger englischer Wörter, die zuvor nicht erlaubt waren). Sie geben dem ganzen Wort nicht nur einen Upgrade-Pfad, sondern auch einen: Erstellen Sie ihn so, wie es RFC 1123 sagt. Wenn Sie später die IDN-Unterstützung hinzufügen, bleibt der Netzwerkcode unverändert, und Sie fügen zusätzlich die Unterstützung für RFC 3490 hinzu (Bibliotheken sind auch in vielen Sprachen verfügbar).
Jon Hanna
2
@Ricket weiß nicht, ob Tippfehler oder ob Sie über den Namen ("Ponycode") gescherzt haben. Ich nenne sie persönlich "punyshed".
Camilo Martin
4

Ein "Name" (Netz-, Host-, Gateway- oder Domänenname) ist eine Textzeichenfolge mit bis zu 24 Zeichen aus dem Alphabet (AZ), den Ziffern (0-9), dem Minuszeichen (-) und dem Punkt (.). Beachten Sie, dass Punkte nur zulässig sind, wenn sie dazu dienen, Komponenten von "Domänenstilnamen" abzugrenzen. (Hintergrundinformationen finden Sie in RFC-921, "Implementierungszeitplan für Domain Name System"). Als Teil eines Namens sind keine Leerzeichen oder Leerzeichen zulässig. Es wird nicht zwischen Groß- und Kleinschreibung unterschieden. Das erste Zeichen muss ein Alpha-Zeichen sein. Das letzte Zeichen darf kein Minuszeichen oder Punkt sein. Ein Host, der als GATEWAY dient, sollte "-GATEWAY" oder "-GW" als Teil seines Namens haben. Hosts, die nicht als Internet-Gateways dienen, sollten "-GATEWAY" und "-GW" nicht als Teil ihres Namens verwenden. Ein Host, der eine TAC ist, sollte "

Dies finden Sie unter http://support.microsoft.com/kb/149044

Vivek
quelle
Dies wird wörtlich aus RFC 952 [ tools.ietf.org/html/rfc952] zitiert . Es ist irreführend - Hostnamen können wie oben angegeben 1 bis 63 Zeichen lang sein.
Craig S. Anderson
Der Link ist leider defekt.
Eugene Mayevskis Rückruf
0

Wenn Sie eine Domain registrieren und die Kündigung (ex .com) nicht IDN ist, wie Aaron Hathaway sagte: Hostnamen bestehen aus einer Reihe von mit Punkten verketteten Labels, ebenso wie alle Domainnamen. Zum Beispiel en.wikipedia.orgist ein Hostname. Jedes Etikett muss zwischen 1 und 63 Zeichen lang sein, und der gesamte Hostname (einschließlich der Begrenzungspunkte, jedoch nicht eines nachgestellten Punkts) darf maximal 253 ASCII-Zeichen enthalten.

Die Internet - Standards (Requests for Comments) für Protokolle Mandat , dass Komponente Host - Namen Etiketten nur die ASCII - Buchstaben enthalten , adurch z(in Groß- und Kleinschreibung), die Ziffern 0durch 9, und den Bindestrich -. Die ursprüngliche Spezifikation von Hostnamen in RFC 952 sah vor, dass Beschriftungen nicht mit einer Ziffer oder einem Bindestrich beginnen dürfen und nicht mit einem Bindestrich enden dürfen. Eine nachfolgende Spezifikation (RFC 1123) erlaubte jedoch, dass Hostnamenbezeichnungen mit Ziffern beginnen. Andere Symbole, Satzzeichen oder Leerzeichen sind nicht zulässig.

Später, Spanien mit ihm ist .es, .com.es, .org.es, .nom,es, .gob.esund .edu.esIDN TLDs eingeführt, wenn Ihr TLD eines ist .esoder andere , dass dies unterstützt, kann jedes Zeichen verwendet werden, aber man kann nicht Alphabete wie Latein, Griechisch oder Cyril in einem Hostnamen verbinden, und dass es die Dinge respektiert, die am Anfang oder am Ende nicht gehen können.

Wenn Sie nicht registrierte tlds nur für lokale Netzwerke verwenden, z. B. mit lokalem DNS oder mit Hosts-Dateien, können Sie sie alle als IDN behandeln.

Denken Sie daran, dass einige Programme nicht gut funktionieren könnten, insbesondere alte, veraltete und unpopuläre.

Javier CasdeDie
quelle