Caratteri validi di un nome host?


86

Quali sono i caratteri validi di un nome host? Sarebbe qualcosa come un computer in rete o un dominio web.

Per metterlo nel contesto, sto scrivendo un gioco per PC che si connette a un server remoto; quindi ho un campo per il nome host e un campo per la porta. Ovviamente la porta è un numero nella gamma corta, ma ho bisogno di sapere quali sono tutti i possibili caratteri del nome host (e qualsiasi altro modello che potrebbe essere richiesto - un nome host deve iniziare con una lettera?).

Esempi di nome host includono localhosto google.com.


2
Il comando linux sethostname accetterà qualsiasi byte.
OrangeDog

Risposte:


92

Controlla questo wiki , in particolare la sezione Restrizioni sui nomi host validi

I nomi host sono composti da serie di etichette concatenate con punti, come tutti i nomi di dominio. Ad esempio, "en.wikipedia.org" è un nome host. Ogni etichetta deve avere una lunghezza compresa tra 1 e 63 caratteri e l'intero nome host (inclusi i punti di delimitazione ma non un punto finale) ha un massimo di 253 caratteri ASCII.

Gli standard Internet (Richieste di commenti) per i protocolli impongono che le etichette dei nomi host dei componenti possano contenere solo le lettere ASCII dalla "a" alla "z" (senza distinzione tra maiuscole e minuscole), le cifre da "0" a "9" e il trattino ('-'). La specifica originale dei nomi host nella RFC 952 imponeva che le etichette non potessero iniziare con una cifra o con un trattino e non dovevano terminare con un trattino. Tuttavia, una specifica successiva ( RFC 1123 ) ha consentito alle etichette del nome host di iniziare con cifre. Non sono consentiti altri simboli, caratteri di punteggiatura o spazi bianchi.


6
Assicurati di essere chiaro se stai cercando un nome host o un nome di dominio completo o entrambi.
Kevin Gross il

Inoltre, sii chiaro se stai cercando o meno requisiti di interoperabilità DNS rigorosi. In particolare, il DNS proibisce i trattini bassi nelle etichette dei nomi host, mentre molti sistemi operativi li consentono per l'uso locale. I server DNS tendono ad essere indulgenti e il DNS ora in pratica richiede caratteri di sottolineatura in alcuni tipi di record, come i record TXT (per DKIM ecc.), Ma non per le etichette dei nomi host.
tripleee

26

Dipende dal fatto che tu elabori gli IDN prima o dopo l' toASCIIalgoritmo IDN (cioè, vedi il nome di dominio παράδειγμα.δοκιμήin greco o come xn--hxajbheg2az3al.xn--jxalpdlp?).

In quest'ultimo caso, in cui gestisci gli IDN tramite il punycode, si applicano le vecchie regole RFC 1123:

Da U + 0041 a U + 005A (AZ), da U + 0061 a U + 007A (az) piegati l'uno nell'altro, da U + 0030 a U + 0039 (0-9) e U + 002D (-).

e U + 002E (.) ovviamente; le regole per le etichette consentono le altre, con punti tra le etichette.

Se lo vedi in formato IDN, i caratteri consentiti sono molto vari, vedi http://unicode.org/reports/tr36/idn-chars.html per un pratico grafico di tutti i caratteri validi.

È probabile che il tuo codice di rete gestisca il codice punico, ma il tuo codice di visualizzazione (o anche solo il passaggio di stringhe da e verso altri livelli) con la forma più leggibile dall'uomo poiché nessuno esegue un server su السعودية. dominio desidera vedere il proprio server elencato come attivo .xn--mgberp4a5d4ar.


1
Wow, non ho mai nemmeno visto IDN e Ponycode! In questo momento sto pianificando solo per il supporto in inglese, poiché è solo un mio progetto preferito, ma ho sicuramente imparato qualcosa dalla tua risposta!
Ricket

2
La cosa grandiosa del modo in cui funziona punycode è che al di sotto di un certo livello (quello in cui fai il networking) è tutto ASCII. È praticamente un modo per fingere che una tecnologia solo ASCII possa funzionare con altro testo (comprese alcune parole inglesi precedentemente non consentite). Oltre a dare all'intera parola un percorso di aggiornamento, ne dà anche uno: costruiscilo per fare come dice RFC 1123, e se in seguito aggiungi il supporto IDN il codice di rete rimane lo stesso e aggiungi il supporto per RFC 3490 in cima (le biblioteche sono disponibili in molte lingue per aiutare anche).
Jon Hanna

2
@Ricket non so se errore di battitura o se hai scherzato sul nome ("ponycode"). Io li chiamo "punyshed", personalmente.
Camilo Martin

4

Un "nome" (Net, Host, Gateway o Domain name) è una stringa di testo composta da un massimo di 24 caratteri estratti dall'alfabeto (AZ), cifre (0-9), segno meno (-) e punto (.). Tieni presente che i punti sono consentiti solo quando servono a delimitare componenti di "nomi di stile di dominio". (Vedere RFC-921, "Pianificazione dell'implementazione del Domain Name System", per lo sfondo). Non sono consentiti caratteri vuoti o spazi come parte di un nome. Non viene fatta alcuna distinzione tra lettere maiuscole e minuscole. Il primo carattere deve essere un carattere alfabetico. L'ultimo carattere non deve essere un segno meno o un punto. Un host che funge da GATEWAY dovrebbe avere "-GATEWAY" o "-GW" come parte del suo nome. Gli host che non fungono da gateway Internet non devono utilizzare "-GATEWAY" e "-GW" come parte dei loro nomi. Un host che è un TAC dovrebbe avere "

Viene fornito in http://support.microsoft.com/kb/149044


Questo è citato testualmente da RFC 952 [ tools.ietf.org/html/rfc952] . È fuorviante: i nomi host possono contenere da 1 a 63 caratteri, come indicato sopra.
Craig S. Anderson

Il collegamento è rotto, purtroppo.
Callback di Eugene Mayevski il

0

Se stai registrando un dominio e la terminazione (es .com) non è IDN, come ha detto Aaron Hathaway : I nomi host sono composti da serie di etichette concatenate con punti, come lo sono tutti i nomi di dominio. Ad esempio, en.wikipedia.orgè un nome host. Ogni etichetta deve avere una lunghezza compresa tra 1 e 63 caratteri e l'intero nome host (inclusi i punti di delimitazione ma non un punto finale) ha un massimo di 253 caratteri ASCII.

Gli standard Internet (Requests for Comments) per i protocolli mandato che le etichette hostname componenti possono contenere solo i caratteri ASCII aattraverso z(in maniera case-insensitive), le cifre 0attraverso 9, e il trattino -. La specifica originale dei nomi host nella RFC 952 imponeva che le etichette non potessero iniziare con una cifra o con un trattino e non dovevano terminare con un trattino. Tuttavia, una specifica successiva (RFC 1123) ha consentito che le etichette dei nomi host iniziassero con cifre. Non sono consentiti altri simboli, caratteri di punteggiatura o spazi bianchi.

Più tardi, la Spagna con la sua .es, .com.es, .org.es, .nom,es, .gob.ese .edu.esha introdotto TLD IDN, se il tld è uno dei .eso di qualsiasi altro che lo supporta, può essere utilizzato qualsiasi carattere, ma non è possibile combinare gli alfabeti come il latino, greco o di Cirillo in un hostname, e che rispetti le cose che non possono andare all'inizio o alla fine.

Se stai usando tld non registrati, solo per reti locali, come con DNS locale o con file host, puoi trattarli tutti come IDN.

Tieni presente che alcuni programmi potrebbero non funzionare bene, specialmente quelli vecchi, obsoleti e impopolari.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.