Notação decimal sem ponto estranho do endereço IP… Como funciona?

88

Hoje cedo eu pensei que tinha uma URL na minha área de transferência, mas na verdade eu tinha quatro inteiros de nove dígitos copiados de uma planilha, que eram números de identificação de um sistema proprietário. Completamente não relacionado à tarefa em mãos. Eu colei no Firefox e fiquei surpreso ao descobrir que ele realmente carregou uma página. Já vi anotações decimais sem ponto de endereços de IPv4 antes, mas esse número longo é muito, muito maior.

714687644714805209715128610715964400 (coloque um HTTP: // na frente)

Como isso funciona? Todo o decimal - > Conversores IPv4 que eu encontrei na Internet todos consideram uma entrada inválida. Se eu pegar o endereço IPv4 que ele realmente carrega e executar os mesmos cálculos para convertê-lo em decimal sem ponto, recebo um número bem menor.

Eu li que o ping pode aceitar dwords e fazer alguma conversão, mas não pode converter isso número para um endereço IP. O IPv6 está fora de questão, já que este host não possui conectividade IPv6.

Que tipo de loucura é essa? Estou perplexo comigo e com meus colegas de trabalho.

Edit: está novamente online agora.

    
por beeks 02.04.2014 / 03:38

1 resposta

93

Essa é uma pergunta bastante interessante e demorei um pouco para descobrir. A resposta curta é que os últimos 32 bits do número são 3660944368 (em decimal, que pode ser encontrado em 714687644714805209715128610715964400 mod 2^32 )

Este é o valor decimal do endereço IPv4 218.53.147.240 , que pode ser encontrado convertendo-o para base-256 3660944368 = 218*(256^3)+53*(256^2)+147*(256)+240 análogo a escrever um número em decimal (base-10) . Por exemplo, 234 = 2*10^2+ 3*10 + 4 .

Como aponta @chritohnide, cada seção de endereços IPv4 pontilhados é chamada de octeto, pois representa 8 dígitos binários. Também é importante notar que os vários formatos de endereços IPv4 (como o decimal pontuado ou o decimal puro) são apenas maneiras diferentes de representar o número binário de 32 bits para o benefício out.

Como os endereços IPv4 são números de 32 bits, somente os últimos 32 bits do número são usados para resolver o endereço. Por que isso é verdade não é tão óbvio. Como outros apontaram, o número completo parece bastante semelhante a um endereço IPv6 em decimal, mas não é um endereço válido.

Olhando para a especificação de Teredo (veja 4. Teredo Addresses ) , o Cliente IPv4 ocupa os últimos 32 bits do endereço IPv6, mas o prefixo do número não corresponde à especificação Teredo (veja também wikipedia ).

    
por 02.04.2014 / 07:37