Eu tenho um sistema de segurança e a configuração de rede permite apenas um endereço IP de três dígitos. Não posso configurá-lo para 192.168.2.100
, em vez disso, tenho que usá-lo 192.168.002.100
.
Esses dois endereços IP são diferentes? Preciso definir a LAN do meu roteador para que tudo 192.168.xxx.xxx
funcione corretamente? Não consigo encontrar nenhuma informação sólida sobre isso.
networking
ip
Brock Vond
fonte
fonte
192.168.2.100
, mas ela reclama), sugiro que você tenha uma palavra com o fornecedor (quão confiável é o sistema de segurança se a validação de entrada for é tão ruim?)0
s, mas eu já encontrei alguns aplicativos que não suportam um endereço IP que não tinha três dígitos em cada octeto.192.168.002.100
é assim que sua ferramenta representa0xc0a80264
/3232236132
/192.168.2.100
, então é a mesma coisa.Respostas:
Depende da ferramenta.
Para a maioria dos propósitos, os dois serão os mesmos, mas nem sempre.
Por exemplo, se você usar um número de 3 dígitos começando com zero (ou um de dois dígitos começando com zero, graças a Dietrich-Epp), o ping assumirá que os números são octais.
fonte
inet_addr()
Supondo que todo o software que você está usando esteja usando ponto decimal e sub-rede corretamente, sim, eles são os mesmos.
192.168.0.1, por exemplo, é apenas a notação decimal decimal amigável do valor binário ponto 11000000.10101000.00000000.00000001.
Se você digitar como 192.168.0.1 ou 192.168.000.001, ambos são iguais a 11000000.10101000.00000000.00000001
fonte
C0A80001
3232235521
Depende das ferramentas ou funções que qualquer programa usa para analisar o endereço fornecido. A Microsoft e o Linux, assim como outros sistemas operacionais, usam uma rotina compatível com POSIX
inet_addr()
para analisar endereços.Como tal, seu sistema específico pode exigir notação decimal de três dígitos para cada octeto, mas isso não é universal e deve-se tomar cuidado para garantir que o endereço IP correto seja inserido.
Obviamente, apenas números válidos para cada tipo funcionarão. Fora do intervalo, os números Octal, Hex ou Decimal também falharão ou causarão problemas. Octal 088, Hex 0xGG ou Decimal 280 são exemplos inválidos.
fonte
Como Lightness Races em Orbit e outros apontaram,
A
INET(3)
página do manual descreveinet_addr
einet_aton
, as funções padrão usadas para converter a "notação de números e pontos IPv4 em formato binário". DizPortanto, tecnicamente, NÃO , um endereço IP com zeros à esquerda não é (sempre) o mesmo que um sem zeros à esquerda. No seu caso, no entanto,
192.168.2.100
e192.168.002.100
são idênticos, porque002 == 2
.Qualquer interface do usuário que exija que cada componente tenha exatamente três caracteres de comprimento, com zeros à esquerda incorretamente necessários, está quebrada.
fonte
Algumas implementações consideram octetos com zeros à esquerda como decimais, enquanto outras implementações consideram octal. Contanto que o octeto esteja no intervalo de 0 a 7, isso não faz diferença. Assim, por exemplo, seria
192.168.002.100
interpretado como192.168.2.100
nas duas implementações.Mas se você digitar um endereço,
192.168.010.100
ele poderá ser interpretado como uma192.168.10.100
ou192.168.8.100
dependendo da implementação. Também não é improvável que existam implementações, o que consideraria zeros iniciais um erro de sintaxe. Além disso, há cenários em que o software pode insistir em que você precise usar a representação canônica por um motivo ou outro. Por todos esses motivos, recomendo evitar zeros à esquerda ao escrever um endereço IP.Se você escrever um software que precise analisar um endereço IP, recomendo aceitar zeros à esquerda, mas emita um aviso para um local apropriado quando isso acontecer.
Ligeiramente relacionadas, existem implementações que permitem que você tenha menos de quatro componentes na notação pontilhada. Quando há menos de quatro componentes, o último componente possui mais de 8 bits e os componentes anteriores possuem exatamente 8 bits. Por exemplo,
192.168.612
seria realmente uma maneira válida de escrever192.168.2.100
. Mas, novamente, usar essa notação não é recomendado.fonte
Apenas uma pequena dica: em alguns casos, é importante usar zero prefixos nos endereços IP. Um exemplo é o Apache .htaccess negar regras.
Se você usar algo como
O Apache é tão estúpido que também bloqueará o acesso dos seguintes IPs:
111.22.33.22
11.22.33.221
211.22.33.221
e, em geral, qualquer endereço IP que inclua 11.22.33.22
Portanto, apenas para ter certeza de que você não bloqueará nenhum IP que não pretendia bloquear, use:
para garantir que o Apache bloqueie o acesso apenas a partir do endereço IP 11.22.33.22.
fonte
tenha cuidado com isso. ele deve ser o mesmo, mas é NÃO !
Eu não consegui encontrar uma explicação para isso, mas eu posso dizer claramente que no Windows e endereços IP Linux com e sem zeros à esquerda NÃO são os mesmos! talvez isso tenha a ver com a conversão de outros formatos, como hexadecimal ou binário.
da minha experiência com windows e linux, não é dependente de ferramenta, mas os dependend parece porque estou executando em algum problema usando ips como 10.08.03.100:
linux / debian7 / 8: mesmos resultados com as ferramentas "ping" e "snmpget"
windows7 / 8/10: mesmos resultados com as ferramentas "ping" e "telnet"
(desculpe, eu não tenho um windows em inglês na mão, o erro informa que o host não foi encontrado)
fonte
Os dois endereços IP são diferentes.
Contudo:
Se isso soa confuso, é porque não há um padrão que governe a maneira como os endereços IP devem ser escritos; portanto, diferentes programadores em diferentes pontos da história e em diferentes plataformas tiveram idéias diferentes sobre o que deveria ser feito.
Os endereços IP são realmente binários e as pessoas tendem a usar uma notação decimal pontilhada para representar endereços IP. O software pode aceitar várias bases numéricas (ou seja, decimal, octal, hex) e interpretar as coisas de várias maneiras, com base em como você a escreve. Como você escreve, pode dizer ao software em que base está escrevendo.
Eu aconselho você: não use zeros à esquerda se quiser usar notação decimal pontilhada. Alguns softwares consideram que uma bandeira significa que você está inserindo um número octal. Se você deseja inserir um número decimal, não obterá os resultados esperados.
Fiz uma pergunta semelhante e obtive boas respostas; portanto, se você quiser ler as RFCs, há boas informações a serem obtidas lá.
fonte
Deve funcionar de qualquer maneira. Você pode até executar ping com números de três dígitos e o computador entenderá o endereço IP.
Edit : Windows irá lê-lo como octal, isso só funciona para Linux.
fonte
O zero inicial não tem sentido. Os octetos são (base-10) 0-255 números, não seqüências de caracteres.
Como não sei exatamente o que você está perguntando (ou que você sabe que pergunta perguntar :)): Dito isso, o IP # deve estar na mesma sub-rede que sua rede. Se você escolher 11.12.13.14 em uma sub-máscara de 192.168.0.0, esse dispositivo não poderá conversar ou usar essa sub-rede.
fonte
inet_addr
e as centenas de milhares de ferramentas que dependem dele para a análise de endereço levam um 0 inicial para significar que o byte é fornecido na notação de base 8. Isso dificilmente é "sem sentido".