É válido que um nome de host comece com um dígito? por exemplo8server
Pela leitura do RFC 1123 , parece que este é um nome de host válido. No entanto, não tenho certeza se um nome de host só pode começar com um dígito quando há um sufixo, por exemplo8server.com
A origem desta questão é que InternetDomainName.isValid("8server");
na biblioteca do Google Guava ( Javadoc ) rejeita a entrada. Também postei uma pergunta específica no grupo Guava Discuss .
O RFC 1123 relaxa uma restrição do RFC 952 que especifica um legado do Hostname Server Protocol (descrito no RFC 953 ) substituído pelo DNS. Portanto, um nome de host totalmente numérico seria válido de acordo com essas RFCs.
O próprio RFC 1123 discute as consequências quando se trata de análise de IP versus nome de host:
No entanto, foi fornecido nas diretrizes RFC 1178 para escolher um nome de host válido devido a problemas de implementação. Muitas dessas implementações não reconhecem bem os nomes de host numéricos e tentam analisá-los como se fossem IPs até que contenham pelo menos um caractere não numérico, independentemente da localização.
Além disso, você descobrirá que as implementações nem sempre respeitam outras restrições originais do RFC 952, permitindo, por exemplo, que o nome do host termine com um sinal de menos ou um ponto.
O DNS preservou essas especificações originais para nomes de host e adicionou suporte para sublinhados ( RFC 2782 ).
Atualização Conforme solicitado nos comentários, esclarecimento para a frase: No entanto, um nome de host válido nunca pode ter a forma decimal com ponto #.#.#.#, pois pelo menos o rótulo do componente de nível mais alto será alfabético . Isso significa que o nome de domínio de nível superior deve ser alfabético , portanto, o nome de host totalmente qualificado nunca pode ser confundido com um endereço IPv4. Essa ideia foi esclarecida pela RFC 3696 para DNS e alterada para não totalmente numérica . Observe a pequena diferença.
Originalmente, o nome do host não poderia começar com um dígito ou sublinhado ( RFC 952 ), mas a nova especificação RFC 1123, como você mencionou, permite isso.
Com relação à chamada para isValid(), neste caso, o nome de domínio completo deve ser passado no parâmetro:
InternetDomainName.isValid("8server.com");
Sim. RFC 1123 claramente permite isso e aqui está um exemplo:
http://9292.nl/
É o planejador de rotas para o transporte público holandês.