Ранее сегодня я думал, что у меня есть URL в буфере обмена, но на самом деле у меня было четыре 9-значных целых числа, скопированных из электронной таблицы, которые были идентификационными номерами из проприетарной системы. Полностью не связано с поставленной задачей. Я вставил его в Firefox и с удивлением обнаружил, что он действительно загрузил страницу. До этого я видел десятичные записи адресов IPv4 без точек , но это длинное число намного больше.
714687644714805209715128610715964400 (вставьте HTTP: // впереди)
Как это работает? Все преобразователи десятичной дроби -> IPv4, которые я нашел в Интернете, считают это неверным вводом. Если я возьму IPv4-адрес, который он на самом деле загружает, и выполню те же вычисления, чтобы преобразовать его в десятичную точку без точек, я получу значительно меньшее число.
Я читал, что ping может принимать слова и выполнять некоторые преобразования, но он не может преобразовать это число в IP-адрес. Об IPv6 не может быть и речи, поскольку этот хост не имеет возможности подключения по IPv6.
Что это за безумие? Это поставило меня в тупик и моих коллег.
Изменить: он вернулся онлайн сейчас.
Ответы:
Это довольно интересный вопрос, и мне понадобилось немного времени, чтобы разобраться. Краткий ответ: последние 32 бита числа 3660944368 (в десятичном виде, который можно найти с помощью
714687644714805209715128610715964400 mod 2^32
)Это десятичное значение адреса IPv4 218.53.147.240 , которое может быть найдено путем преобразования его в base-256,
3660944368 = 218*(256^3)+53*(256^2)+147*(256)+240
аналогично записи десятичного числа (base-10). Например234 = 2*10^2+ 3*10 + 4
.Как указывает @chritohnide, каждый раздел адресов IPv4 с точками называется октетом, поскольку он представляет 8 двоичных цифр. Стоит также отметить, что различные форматы адресов IPv4 (такие как десятичная точка с точками или чисто десятичное число) - это просто разные способы представления 32-разрядного двоичного числа для нашей выгоды.
Поскольку адреса IPv4 являются 32-разрядными числами, для разрешения адреса используются только последние 32-разрядные числа. Почему это так, не так очевидно. Как уже отмечали другие, полное число выглядит поразительно похожим на IPv6-адрес в десятичном виде, но не является действительным адресом.
Если посмотреть на спецификацию Teredo (см. 4. Адреса Teredo ), IPv4-клиент занимает последние 32 бита адреса IPv6, но префикс номера не соответствует спецификации Teredo (также см. Википедию ).
источник
0089:a4d2:471b:45ef:77ed:c70f:da35:93f0