É válido que um nome de host comece com um dígito?

40

É válido que um nome de host comece com um dígito? por exemplo. 8server

Ao ler RFC 1123 , parece que este é um nome de host válido. No entanto, não estou claro se um nome de host só pode começar com um dígito quando há um sufixo. 8server.com

A origem dessa pergunta é que InternetDomainName.isValid("8server"); na biblioteca do Google Guava ( Javadoc ) rejeita a entrada. Também postei uma pergunta específica no grupo Discussão sobre goiaba .

    
por Mark 20.10.2014 / 09:24

3 respostas

29

O RFC 1123 relaxa uma restrição do RFC 952 que especifica um legado do Hostname Server Protocol (descrito em RFC 953 ) substituído pelo DNS. Portanto, um nome de host totalmente numérico seria válido por esses RFCs.

O próprio RFC 1123 discute as consequências quando se trata de análise de nomes de IP versus host:

If a dotted-decimal number can be entered without such identifying delimiters, then a full syntactic check must be made, because a segment of a host domain name is now allowed to begin with a digit and could legally be entirely numeric (see Section 6.1.2.4). However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be alphabetic.

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 nomes de host numéricos e tentam analisá-los como se fossem IPs até que contivessem pelo menos um caractere não numérico, independentemente da localização.

Além disso, você descobrirá que as implementações nem sempre honram outras restrições originais do RFC 952, permitindo, por exemplo, que o nome do host termine com um sinal de menos ou um ponto final.

O DNS preservou essas especificações originais para nomes de host e adicionou suporte a sublinhados ( RFC 2782 ).

Atualização Conforme solicitado nos comentários, esclarecimento da sentença: No entanto, um nome de host válido nunca pode ter a forma decimal com pontos #. #. #. #, pois pelo menos o rótulo de 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 completo do host nunca pode ser confundido com um endereço IPv4. Essa ideia foi esclarecida por RFC 3696 para DNS e alterada para não totalmente numérica . Observe a ligeira diferença.

    
por 20.10.2014 / 10:10
12

Originalmente, o nome do host não podia começar com um dígito ou sublinhado ( RFC 952 ), mas com a nova especificação RFC 1123, como você mencionou, permite isso.

Com relação à chamada para isValid (), nesse caso, o nome completo do domínio deve ser passado no parâmetro: InternetDomainName.isValid("8server.com");

    
por 20.10.2014 / 09:40
8

Sim. RFC 1123 claramente permite e aqui está um exemplo:

link

É o planejador de rotas para o transporte público holandês.

    
por 20.10.2014 / 12:42