Zeros iniciais no endereço IPv4; Isso é um não-não por convenção ou padrão?

2

Eu dou aulas em um produto de software que minha empresa faz e acho que os alunos freqüentemente adicionam zeros à esquerda em uma página de configuração para que o software se conecte ao nosso hardware. Zeros à esquerda são problemáticos em nosso software, é assim e por que isso surge.

Eu sempre expliquei que os zeros iniciais eram contra o pensamento "padrão" que foi o que me ensinaram. Como eu estava enviando o relatório de erros para o departamento de engenharia, não consegui encontrar uma fonte autorizada para isso (ou seja, "The Standard"), mas encontrei algumas informações interessantes e relacionadas.

Os zeros iniciais estão ruins por causa da convenção ou vão contra o padrão?

Este foi o mais próximo que encontrei de um padrão para não usar zeros à esquerda, mas é um rascunho expirado de algum tipo:

Representação textual de endereços IPv4 e IPv6

Na seção relevante, diz:

3 Syntax and Semantics

3.1 IPv4 Dotted Octet Format

   A 32-bit IPv4 address is divided into four octets.  Each octet is
   represented numerically in decimal, using the minimum possible number
   of digits (leading zeroes are not used, except in the case of 0
   itself).  The four encoded octets are given most-significant first,
   separated by period characters.

        IPv4address = d8 "." d8 "." d8 "." d8

        d8          = DIGIT               ; 0-9
                    / %x31-39 DIGIT       ; 10-99
                    / "1" 2DIGIT          ; 100-199
                    / "2" %x30-34 DIGIT   ; 200-249
                    / "25" %x30-35        ; 250-255

Também encontrei os seguintes artigos discutindo o fenômeno:

Ping e FTP resolvem o endereço IP com o zero principal como octal

Os zeros iniciais no endereço IP podem resultar em roteamento incorreto

São endereços IP com e sem zeros à esquerda mesmo?

É Existe alguma documentação para omitir zeros na notação ponto-decimal dos endereços IPV4?

    
por YetAnotherRandomUser 17.06.2015 / 18:10

3 respostas

5

Não existe um padrão que exija que um endereço IPv4 seja expresso de uma determinada maneira. Ou seja, o RFC não especifica um e vários formatos estão em uso generalizado. Mais comumente, você verá quatro octetos como números decimais, mas também poderá ver um único número hexadecimal de oito dígitos ou até mesmo um único número decimal usado. Embora os números octal sejam incomuns, muitas implementações aceitam esses também.

Esta é a razão pela qual os zeros iniciais geralmente são evitados; o endereço pode ser ambíguo. '010.010.010.010' pode estar em um intervalo privado, mas também pode ser o famoso servidor DNS do Google em '8.8.8.8'. Os números que começam com um zero inicial e não contêm os dígitos 8 ou 9 são geralmente interpretados como octal.

    
por 17.06.2015 / 19:07
1

Idealmente, não importa, pois quando se divide em binário / hex / whatever, os zeros à esquerda não devem afetar o resultado final.

Exemplo: 192.168.1.1 para binário
192 = 11000000
168 = 10101000
1 = 00000001
1 = 00000001

é exatamente o mesmo que 192.168.001.001
192 = 11000000
168 = 10101000
001 = 00000001
001 = 00000001

Veja uma resposta SU anterior aqui .

    
por 17.06.2015 / 18:42
0

0.0.0.0/8 está reservado para a rede local (ver RFC 6890 ou para um link href="https://en.wikipedia.org/wiki/IPv4#Special-use_addresses"> fácil leitura ).

Assim, qualquer endereço que começa com 0 é válido, mas não é o endereço IP de uma máquina particular.

    
por 17.06.2015 / 18:55