Por que esse URL com excesso de pontos anteriores resolve para um endereço IP?

31

http://.................1168951531

O qual, quando colocado no chrome, é visualizado no URL http://69.172.200.235/, que o redireciona (pelo código de resposta do servidor externo 3XX) www.test.com, mas está fora do escopo do que estou tentando descobrir.

Como um URL tão estranho como o acima é resolvido para um endereço IP? Esta é uma regra de formatação?

Shadowjonathan
fonte
2
Note-se que o mesmo URL sem os pontos também funciona no Chrome: http://1168951531. Mas isso levanta a questão: por que o Chrome ignora os pontos?
Wjandrea
6
@wjandrea Eu acho que o Chrome os interpreta como subdomínios e, na verdade, não os ignora. Você pode verificar isso visualizando o cabeçalho do host da solicitação que o chrome envia.
Christoph
11
Um pouco tangente, mas os endereços do Gmail permitem que você adicione quantos pontos quiser, sem causar problemas, e também um + com o texto que desejar. Por isso [email protected], também receberá e-mails enviados para [email protected]ou [email protected]- e um benefício é enviar e-mails diferentes para sites diferentes para ver quem está colocando você nas listas de spam ou definir regras para lidar com e-mails recebidos de maneiras diferentes, dependendo do endereço "Para". ( Mais ) Ou, [email protected] é agora kylesmom + is.a.big.fa ...
ashleedawg
Pelo que vale a pena, a combinação do Firefox e do squid não permite isso; O Firefox passa os pontos literalmente e com erros de lula porque é um formato de URL inválido. Portanto, isso parece um bug do Chrome, ou possivelmente a especificação relativa a domínios vazios é ambígua?
Paul Engrenagem

Respostas:

44

O Chrome está interpretando o número 1168951531 como um número decimal que, quando representado em hexadecimal, é 45ACC8EB. 45ACC8EB em hexadecimal é o mesmo que o decimal pontilhado 69.172.200.235, quando você usa cada par de dígitos hexadecimais como um número decimal.

45 -> 69
AC -> 172
C8 -> 200
EB -> 235

Resposta curta: é a representação decimal pura do mesmo endereço IP.

Steven Davies
fonte
4
O Firefox faz a interpretação também (sem os pontos), mas não o Edge.
JAB
11
O código-fonte típico para resolver um nome de host é primeiro verificar se é um endereço IP (por exemplo, com inet_addr()) e, se não, passá-lo para uma função como a gethostname()que interroga os servidores DNS (e lê o hostsarquivo). Passar uma representação decimal do endereço IP, conforme explicado na resposta acima, é perfeitamente legal na maioria das implementações. Eu posso digitar ping 1168951531um terminal e ele realmente envia o endereço pretendido. Torna-se mais estranho com todos os pontos à frente, mas possivelmente o Chrome os está removendo antes de tentar a resolução.
Ale
11
Vale ressaltar que o Chrome e o Firefox aceitam o URL sem pontos. ( http://1168951531)
Stevoisiak
3

Esta é uma representação longa de um endereço ipv4 do ip 69.172.200.235. Que mapeia para o domínio www.test.com.

Gothrek
fonte
4
Você pode explicar o que é uma "representação longa"?
Philipp
2
É melhor explicado pela outra resposta, mas ainda se resume à mesma coisa.
Gothrek
9
Provavelmente deve ser " longrepresentação"
n0rd