Pourquoi cette URL avec des points précédents excessifs se résout-elle en une adresse IP?

31

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

Qui, une fois mis en chrome, prévisualise vers l'URL http://69.172.200.235/, qui redirige (par le code de réponse du serveur externe 3XX) vers www.test.com, mais cela sort du cadre de ce que j'essaie de comprendre.

Comment une URL aussi bizarre comme ci-dessus se résout-elle en une adresse IP? S'agit-il d'une règle de formatage?

Shadowjonathan
la source
2
Notez que la même URL sans les points fonctionne aussi dans Chrome: http://1168951531. Mais cela soulève la question, pourquoi Chrome ignore-t-il les points?
wjandrea
6
@wjandrea Je suppose que Chrome les interprète comme des sous-domaines et ne les ignore pas réellement. Vous pouvez le vérifier en affichant l'en-tête de l'hôte de la demande envoyée par Chrome.
Christoph
1
Un peu tangente, mais les adresses Gmail vous permettent d'ajouter autant de points que vous le souhaitez, sans causer de problèmes, et également un + avec le texte que vous souhaitez après. Ainsi, vous [email protected]recevrez également du courrier envoyé à [email protected]ou [email protected]- et un avantage est de donner différents e-mails à différents sites pour voir qui vous met sur les listes de spam, ou de configurer des règles pour gérer le courrier entrant de différentes manières en fonction de l'adresse "À". ( Plus ) Ou, [email protected] est maintenant kylesmom + is.a.big.fa ...
ashleedawg
Pour ce que ça vaut, la combinaison de Firefox et de calmar ne le permet pas; Firefox passe les points par le mot et les erreurs de calmar car c'est un format d'URL invalide. Cela ressemble donc à un bug de Chrome, ou peut-être que la spécification concernant les domaines vides est ambiguë?
Paul Gear

Réponses:

44

Chrome interprète le nombre 1168951531 comme un nombre décimal qui, lorsqu'il est représenté en hexadécimal, est 45ACC8EB. 45ACC8EB en hexadécimal est identique à la décimale en pointillé 69.172.200.235, lorsque vous prenez chaque paire de chiffres hexadécimaux comme un nombre décimal.

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

Réponse courte: c'est la représentation décimale pure de la même adresse IP.

Steven Davies
la source
4
Firefox fait aussi l'interprétation (sans les points), mais pas Edge.
JAB
11
Le code source typique pour résoudre un nom d'hôte est de vérifier d'abord s'il s'agit d'une adresse IP (par exemple avec inet_addr()) et sinon, de la transmettre à une fonction comme gethostname()celle qui interroge les serveurs DNS (et lit le hostsfichier). Passer une représentation décimale de l'adresse IP, comme expliqué dans la réponse ci-dessus, est parfaitement légal dans la plupart des implémentations. Je peux taper ping 1168951531dans un terminal, et il envoie en fait un ping à l'adresse prévue. Cela devient plus bizarre avec tous les points devant, mais peut-être que Chrome les supprime avant de tenter la résolution.
Ale
1
Il convient de noter que Chrome et Firefox acceptent l'URL sans points. ( http://1168951531)
Stevoisiak
3

Il s'agit d'une longue représentation d'une adresse ipv4 de l'ip 69.172.200.235. Qui correspond au domaine www.test.com.

Gothrek
la source
4
Pouvez-vous expliquer ce qu'est une "longue représentation"?
Philipp
2
C'est mieux expliqué par l'autre réponse, mais cela revient toujours à la même chose.
Gothrek
9
Devrait probablement être une " longreprésentation"
n0rd