¿Por qué esta URL con puntos anteriores excesivos se resuelve en una dirección IP?

31

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

Que, cuando se coloca en Chrome, obtiene una vista previa de la URL http://69.172.200.235/, que redirige (por código de respuesta del servidor externo 3XX) a www.test.com, pero eso está fuera del alcance de lo que estoy tratando de averiguar.

¿Cómo se resuelve una URL tan extraña como la anterior en una dirección IP? ¿Es esta una regla de formato?

Shadowjonathan
fuente
2
Tenga en cuenta que la misma URL sin los puntos también funciona en Chrome: http://1168951531. Pero eso plantea la pregunta, ¿por qué Chrome ignora los puntos?
wjandrea
66
@wjandrea Supongo que Chrome los interpreta como subdominios y en realidad no los ignora. Puede verificar eso al ver el encabezado del host de la solicitud que envía Chrome.
Christoph
1
Es un poco tangente, pero las direcciones de Gmail le permiten agregar tantos puntos como desee, sin causar problemas, y también un + con el texto que desee. Por [email protected]lo tanto , también recibirá el correo enviado [email protected]ao [email protected], y un beneficio es dar diferentes correos electrónicos a diferentes sitios para ver quién lo coloca en las listas de correo no deseado, o establecer reglas para manejar el correo entrante de diferentes maneras dependiendo de la dirección "Para". ( Más ) O, [email protected] ahora es kylesmom + is.a.big.fa ...
ashleedawg
Por lo que vale, la combinación de Firefox y calamar no permite esto; Firefox pasa los puntos literalmente y errores de calamar porque es un formato de URL no válido. Entonces, ¿esto parece un error de Chrome, o posiblemente la especificación con respecto a los dominios vacíos es ambigua?
Paul Gear

Respuestas:

44

Chrome está interpretando el número 1168951531 como un número decimal, que cuando se representa en hexadecimal es 45ACC8EB. 45ACC8EB en hexadecimal es lo mismo que el decimal punteado 69.172.200.235, cuando toma cada par de dígitos hexadecimales como un número decimal.

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

Respuesta corta: es la representación decimal pura de la misma dirección IP.

Steven Davies
fuente
44
Firefox también hace la interpretación (sin los puntos), pero no Edge.
JAB
11
El código fuente típico para resolver un nombre de host es verificar primero si es una dirección IP (por ejemplo, con inet_addr()) y, si no, pasarlo a una función como gethostname()esa que interroga a los servidores DNS (y lee el hostsarchivo). Pasar una representación decimal de la dirección IP, como se explica en la respuesta anterior, es perfectamente legal en la mayoría de las implementaciones. Puedo escribir ping 1168951531un terminal, y en realidad hace ping a la dirección deseada. Se vuelve más extraño con todos los puntos en el frente, pero posiblemente Chrome los esté eliminando antes de intentar la resolución.
Ale
1
Vale la pena señalar que tanto Chrome como Firefox aceptan la URL sin puntos. ( http://1168951531)
Stevoisiak
3

Esta es una representación larga de una dirección ipv4 de la ip 69.172.200.235. Que se asigna al dominio www.test.com.

Gothrek
fuente
44
¿Puedes explicar qué es una "representación larga"?
Philipp
2
La otra respuesta lo explica mejor, pero todavía se reduce a lo mismo.
Gothrek
99
Probablemente debería ser " longrepresentación"
n0rd