Дивне бездоганне десяткове позначення IP-адреси… Як це працює?


89

Раніше сьогодні я думав, що у своєму буфері обміну є URL-адреса, але я фактично мав чотири 9-значні цілі числа, скопійовані з електронної таблиці, які були ідентифікаційними номерами з власницької системи. Зовсім не пов'язаний із завданням, що знаходиться під рукою. Я вставив його у Firefox і з подивом виявив, що він фактично завантажив сторінку. Раніше я бачив беззаперечні десяткові позначення IPv4- адрес, але це довге число - це щось набагато, значно більше.

714687644714805209715128610715964400 (наклейте HTTP: // спереду)

Як це працює? Усі десяткові -> IPv4 перетворювачі, які я знайшов в Інтернеті, усі вважають це недійсним входом. Якщо я візьму IPv4-адресу, яку вона фактично завантажує, і виконую ті самі обчислення, щоб перетворити її в бездетні десятки, я отримаю значно меншу кількість.

Я читав, що ping може приймати dwords і робити певну конверсію, але він не може перетворити це число в IP-адресу. IPv6 не підлягає сумніву, оскільки цей хост не має підключення IPv6.

Що це за божевілля? Це натрапило на мене і на моїх колег.

Редагувати: Зараз він знову в мережі.



2
Ви справді впевнені, що це не IPv6-адреса? Оскільки це число розбивається на 8 цифр у базі 65536; Адреси IPv6 мають 8 цифр у базовій частині 65536. Представлені у шістнадцятковій версії, як зазвичай для IPv6, це 89: a4d2: 471b: 45ef: 77ed: c70f: da35: 93f0.
Крістіан

2
@Christian Його пояснення щодо джерела кількості джейв з фактичним показаним числом, яке має 36 цифр (кожен ідентифікатор - 9 цифр або 714xxxxxx, або 715xxxxxx). На комп’ютері навіть немає IPv6, і число, прийняте як адресу IPv4, справді повертає веб-сторінку. Числа від ~ 5E33 до ~ 3E38 мають 8 цифр в базі 65536, я думаю, що це просто збіг обставин, що його падіння в цьому діапазоні (плюс будь-яке менше число також було б дійсною IPv6 адресою)
Тім С.

1
@beeks Добре, це вже не спрацювало, коли я спробував це вчора, але враховуючи, що це незахищений маршрутизатор, можливо, це не так дивно. Так ви кажете, що в основному ви вводите випадкове число у свій адресний рядок? Або яку електронну таблицю ви мали там, яка містить дивно закодовані IP-адреси незахищених маршрутизаторів? ;)
Крістіан

1
@Christian, LOL. Вони були унікальними ідентифікаторами повідомлень у системі відповідності. Цілком дивний шанс, що я вставив їх в адресний рядок, і це спрацювало. Б'юсь об заклад, що зі мною більше ніколи не повториться :)
beks

Відповіді:


93

Це досить цікаве запитання, і я зайняв трохи часу, щоб розібратися. Коротка відповідь - останні 32-бітні числа 3660944368 (у десятковій кількості, які можна знайти 714687644714805209715128610715964400 mod 2^32)

Це десяткове значення адреси IPv4 218.53.147.240 , яке можна знайти, перетворивши його в базове-256, 3660944368 = 218*(256^3)+53*(256^2)+147*(256)+240аналогічне виписуванню числа в десяткові (базове-10). Наприклад 234 = 2*10^2+ 3*10 + 4.

Як вказує @chritohnide, кожен розділ пунктирних IPv4-адрес називається октетом, оскільки він представляє 8 двійкових цифр. Варто також зазначити, що різні формати адрес IPv4 (наприклад, пунктирний чистий чистий десятковий) - це лише різні способи представлення 32-бітного двійкового числа для вигоди.

Оскільки адреси IPv4 - це 32-бітні числа, то для вирішення адреси використовуються лише останні 32-бітні числа. Чому це правда, не так очевидно. Як зазначали інші, повне число виглядає разюче схожою на адресу IPv6 у десятковій формі, але не є дійсною адресою.

Дивлячись на специфікацію Teredo (див. 4. Адреси Teredo ), клієнт IPv4 займає останні 32-бітні адреси IPv6, але префікс номера не відповідає специфікації Teredo (Також див. Wikipedia ).


12
Гарна відповідь. Також може бути корисним згадати, що кожен розділ пунктирної адреси IPv4 називається октетом, оскільки це десятковий подання 8-бітного двійкового числа (4 октети = 4 х 8 біт = 32 біта адреси IPv4) і що десяткове версія насправді лише на нашу користь.
chritohnide

4
Ви впевнені, що це не десяткове позначення IPv6? Він успішно перетворюється на0089:a4d2:471b:45ef:77ed:c70f:da35:93f0
Ізката

5
@Izkata: Навряд чи тому, що ця адреса знаходитиметься у нерозподіленій та зарезервованій частині адресного простору IPv6.
Геннінг Макгольм

3
Цифра (в ASCII), ймовірно, буде просто запущена через одну з рядків C stdlib до int функцій для перетворення в 32-бітну ipv4 адресу. У більшості реалізацій C stdlib ці перетворення автоматично виконують модуль 2 ^ <потрібний цілий розмір>. Результатом у цьому випадку є саме спостережувана поведінка.
Тонні

3
Варто зазначити, що це, мабуть, вигадка URL-аналізатора Firefox. Здається, визнається, що це число, а не URL, і намагається проаналізувати його як 32-бітну невідрегульовану IP-адресу (отримане розроблене ціле число закінчується 32-бітним модулем, і він насправді не робить перевірки помилок на вході ). Наприклад, Chrome не проявляє такої поведінки. Насправді, можливо, варто повідомити про це як про тривіальну помилку у Firefox.
Джейсон C
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.