È valido che un nome host inizi con una cifra?


45

È valido che un nome host inizi con una cifra? per esempio8server

Dalla lettura di RFC 1123 sembrerebbe che questo sia un nome host valido. Tuttavia, non sono chiaro se un nome host può iniziare solo con una cifra quando è presente un suffisso, ad es8server.com

L'origine di questa domanda è che InternetDomainName.isValid("8server");nella libreria di Google Guava ( Javadoc ) rifiuta l'input. Ho anche pubblicato una domanda specifica sul gruppo Discussione di Guava .


2
Come esempio di prova, esistono: 7dayshop.com
Holloway,

3
Che ne dici di un nome host composto da sole cifre? 88888888.cn
小 太郎

7
4chan.comè un nome host valido (e ben noto) che inizia con un numero.
IQAndreas,

3
Come dimenticare 9gag.com ? : D
ADTC,

8
@IQAndreas, 4chan.org è un motivo sufficiente per renderlo non valido . (Sto solo scherzando anonimo, non farmi del male.)
Paul Ruane,

Risposte:


33

RFC 1123 allenta un vincolo di RFC 952 che specifica un'eredità del protocollo hostname server (descritto in RFC 953 ) sostituito da DNS. Quindi un nome host completamente numerico sarebbe valido per questi RFC.

RFC 1123 stesso discute le conseguenze quando si tratta di IP rispetto all'analisi del nome host:

Se è possibile immettere un numero decimale puntato senza tali delimitatori identificativi, è necessario effettuare un controllo sintattico completo, poiché è ora possibile iniziare un segmento di un nome di dominio host con una cifra e potrebbe essere legalmente interamente numerico (vedere Sezione 6.1. 2.4). Tuttavia, un nome host valido non può mai avere la forma decimale puntata #. #. #. #, Poiché almeno l'etichetta del componente di livello più alto sarà alfabetica.

Tuttavia, nelle linee guida RFC 1178 è stato fornito di scegliere un nome host valido a causa di problemi di implementazione. Molte di queste implementazioni non riconoscono bene i nomi host numerici e provano ad analizzarli come se fossero IP fino a quando contengono almeno un carattere non numerico, indipendentemente dalla posizione.

Inoltre, scoprirai che le implementazioni non rispettano sempre altri vincoli originali di RFC 952, permettendo ad esempio al nome host di terminare con un segno meno o un punto.

DNS ha conservato queste specifiche originali per i nomi host e ha aggiunto il supporto per i caratteri di sottolineatura ( RFC 2782 ).

Aggiornamento Come richiesto nei commenti, chiarimento per la frase: Tuttavia, un nome host valido non può mai avere la forma decimale puntata #. #. #. #, Poiché almeno l'etichetta del componente di livello più alto sarà alfabetica . Ciò significa che il nome di dominio di livello superiore deve essere alfabetico , quindi il nome host completo non può mai essere confuso con un indirizzo IPv4. Questa idea è stata chiarita da RFC 3696 per DNS e modificata in non tutto numerica . Nota la leggera differenza.


7
Tieni presente che le implementazioni che non sono in grado di gestire cifre in nomi risalgono agli anni '80; RFC 1178 è stato pubblicato nel 1990. Tutto ciò che non può gestirlo ora è semplicemente difettoso.
Michael Hampton

@MichaelHampton Si sarebbe sorpreso di come molte implementazioni ancora non onorare questi RFC. A partire dalla gestione dei file degli host Linux.
Xavier Lucas,

11
Haha, no, non lo farei. Passa quasi un giorno che non ho motivo di battere alcuni sviluppatori con un RFC.
Michael Hampton

2
@Michael Hampton: Non crederesti alla merda che vedo dagli sviluppatori a volte. Un paio di settimane fa ne avevo uno che aveva creato una pagina Web di configurazione di rete in una telecamera IP in modo che l'utente potesse inserire il nome host della telecamera. Non ha fatto NESSUNA convalida sull'input dell'utente in formato libero. L'utente del beta-test è entrato in "Room 1.10" e la telecamera l'ha inviato felicemente come identificativo del client DHCP. Posso assicurarti che i server DHCP e DNS di Microsoft non gradiscono. Per fortuna, ho notato che è entrato nella build di produzione. Posso solo rabbrividire al pensiero di ciò che a volte arriva al cliente ...
Tonny,

13

Inizialmente il nome host non poteva iniziare con una cifra o un trattino basso ( RFC 952 ) ma la nuova specifica RFC 1123, come hai detto, lo consente.

Per quanto riguarda la chiamata a isValid (), in questo caso, il nome di dominio completo deve essere passato nel parametro: InternetDomainName.isValid("8server.com");


Un nome di dominio completo deve davvero essere passato al metodo isValid? Dopotutto InternetDomainName.isValid("server");ritorna vero.
Segna il

@Mark OK, ho aggiornato la risposta di conseguenza
Céline Aussourd,

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.