Почему этот URL с предшествующими точками преобразуется в IP-адрес?


31

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

Который при вводе в chrome просматривает URL http://69.172.200.235/, который перенаправляет (по коду ответа внешнего сервера 3XX) www.test.com, но это выходит за рамки того, что я пытаюсь выяснить.

Как такой странный URL, как указано выше, разрешается в IP-адрес? Это правило форматирования?


2
Обратите внимание , что тот же URL без точек и работает в Chrome: http://1168951531. Но возникает вопрос: почему Chrome игнорирует точки?
wjandrea

6
@wjandrea Я предполагаю, что Chrome интерпретирует их как поддомен и фактически не игнорирует их. Вы можете проверить это, просмотрев Host-заголовок запроса, который отправляет chrome.
Кристоф

1
Немного касательно, но адреса Gmail позволяют добавлять столько точек, сколько вы хотите, не вызывая проблем, а также + с любым текстом после него, который вы хотите. Так же abcd@gmail.comбудет получать почту, отправленную на a.b.c.d@gmail.comили abcd+junkmail@gmail.com- и выгода будет давать разные электронные письма разным сайтам, чтобы видеть, кто помещает вас в списки спама, или устанавливать правила для обработки входящей почты различными способами в зависимости от адреса «Кому». ( Подробнее ) Или kylesmom@gmail.com теперь является kylesmom + is.a.big.fa ...
ashleedawg

Что бы это ни стоило, комбинация Firefox и squid не позволяет этого; Firefox дословно пропускает точки и ошибки squid, потому что это неверный формат URL. Так что это похоже на ошибку Chrome, или, может быть, спецификации пустых доменов неоднозначны?
Пол Гир

Ответы:


44

Chrome интерпретирует число 1168951531 как десятичное число, которое при представлении в шестнадцатеричном формате равно 45ACC8EB. 45ACC8EB в шестнадцатеричном формате - это то же самое, что десятичный пунктир 69.172.200.235, когда вы принимаете каждую пару шестнадцатеричных цифр за одно десятичное число.

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

Краткий ответ: это чисто десятичное представление одного и того же IP-адреса.


4
Firefox делает интерпретацию тоже (без точек), но не Edge.
JAB

11
Типичный исходный код для разрешения имени хоста состоит в том, чтобы сначала проверить, является ли он IP-адресом (например, с помощью inet_addr()), а если нет, передать его такой функции, gethostname()которая опрашивает DNS-серверы (и читает hostsфайл). Передача десятичного представления IP-адреса, как объяснено в ответе выше, совершенно законна в большинстве реализаций. Я могу набрать ping 1168951531в терминале, и он фактически пингует намеченный адрес. Страннее становится все точки впереди, но, возможно, Chrome удаляет их перед попыткой разрешения.
Ale

1
Стоит отметить, что и Chrome, и Firefox принимают URL без точек. ( http://1168951531)
Stevoisiak

3

Это длинное представление ipv4-адреса ip 69.172.200.235. Который сопоставляется с доменом www.test.com.


4
Можете ли вы объяснить, что такое «длинное представление»?
Филипп

2
Это лучше объяснить другим ответом, но все же сводится к тому же самому.
Готрек

9
Если , вероятно , будет « longпредставление»
n0rd
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.