Главная » Хабрахабр » [Перевод] Составляем карту всего Интернета при помощи кривых Гильберта

[Перевод] Составляем карту всего Интернета при помощи кривых Гильберта

Интернет велик. Очень велик. Вы просто не поверите, насколько умопомрачительно он велик. В смысле, вам может показаться, что диапазон блоков /22, который вы получили как локальный интернет-регистратор (LIR), это очень много — но в масштабах всего Интернета это так, орешки.

Однако, это уже другая история. Конечно, на самом деле, он оказался не настолько уж и велик — не просто же так нам потребовался IPv6.

Это означает, что у вас есть примерно 4,2 миллиарда IP-адресов, с которыми вы можете работать — хотя по правде это не совсем так, поскольку крупные секции недоступны для использования:
Дело в том, что IPv4 (самая широко используемая версия протокола IP) задает лимит адресов, равный 2³².

Диапазон IP

Применение

0.0.0.0/8

Локальная система

10.0.0.0/8

Локальная LAN

127.0.0.0/8

Loopback

169.254.0.0/16

“Link Local”

172.16.0.0/12

Локальная LAN

224.0.0.0/4

Мультивещание (Multicast)

240.0.0.0/4

“Для использования в будущем”

Диапазоны адресов (показанные в виде записи с применением бесклассовой адресации, CIDR) перечисленные выше, для нас «убираются» — а это 588 316 672 адресов, или примерно 13% от всего количества адресов.

Однако, учитывая, что у нас остается 3 706 650 624 адресов, это вроде бы не так уж и много, и находится в идеальной достижимости для отправки пакета каждому из них.

Итак… Это конечно же не первый раз, когда кто-то пытается сделать подобное — в Интернете хватает достаточного количества «фонового шума» (незатребованных пакетов), большинство из них создается системами, которые пытаются взломать другие системы.
image

Здесь мы можем наблюдать, что порт 23 гораздо выше (по логарифмической шкале), чем все остальные порта — и это порт для telnet, который часто используется в незащищенных маршрутизаторах и прочих IoT-устройствах.

Зная об этом, я ускорился и отправил ICMP-пинг каждому хосту в Интернете, чтобы посмотреть, как большая часть Интернета ответит на данный пинг (и покажет мне, есть ли на той стороне подключенный к сети компьютер).

Теперь нам остается лишь найти способ нарисовать эту карту! Днем позже я отправил 3,7 миллиарда пакетов и получил большущий текстовый файл.

Знакомимся с кривыми Гильберта

Проблема с отображением IP-адресов состоит в том, что они являются одномерными, изменяясь в сторону увеличения или уменьшения, а люди не настолько хороши в восприятии большого количества одномерных точек. Поэтому, нам нужно найти способ представить их таким образом, чтобы мы могли заполнить двумерное пространство ими, что также поможет нам получить более полезные графики.

К счастью, математика спешит нам на помощь — на этот раз в виде параметрических кривых Пеано (space filling curves):

image

Для меня все никак не доходило, как можно это использовать, пока я не пронумеровал узлы, сквозь которые проходит кривая.

image

Еще больше времени у меня ушло, прежде чем я догадался, что мы снова можем отобразить эту же анимацию в одном измерении, «распутав» ее:

image

В общем, теперь когда мы разобрались, как работают эти графики, можем применить их к IP-адресам.

К счастью, существуют инструменты, которые позволяют строить подобные графики на основании собранных данных об IP-адресах, поэтому нам остается лишь «скормить» одному из них наши данные и дождаться результата:

cat ping.txt | pcregrep -o1 ': (\d+\.\d+\.\d+\.\d+)' | ./ipv4-heatmap -a ./labels/iana/iana-labels.txt -o out.png

Эта команда отрисует кривую Гильберта при помощи градинта, показываещуго, как много систем находятся онлайн в тех /24

И так, позвольте представить вам — карта IPv4 Интернета по состоянию на 16 апреля 2018 года:

image

Вы можете кликнуть по изображению и открыть несжатую версию в полном разрешении — только учтите, что весит оно 9 Мб.

Используя полученные ботнетом данные, мы можем ясно увидеть некоторые изменения. Последний публичный скан, о котором мне известно, был выполнен в 2012 году ботнетом Carna размером 420 тысяч устройств.

image

0. В 2012 году RIPE еще даже не трогала 185. 0/8, позже это станет диапазоном, который они будут использовать для последних распределений, и будут давать лишь /22 от пространства IP каждому новому члену RIPE. 0. 0. Из-за этого диапазон 185. 0/8 выглядит странно на фоне других диапазонов и в нем нет массовых аллокаций, поэтому он выглядит весьма «подтянутым» на фоне всех остальных. 0.

Ниже мы видим три других различных интернет-регистраторов (RIR), которые потребили свои диапазоны за прошедшие 6 лет: RIPE — не единственные, кто полностью использовали диапазоны за прошедшее время.

image

Данные, полученные мною из этого эксперимента, позволяют вам увидеть, как Интернет «дышит» по мере того, как клиенты выходят в онлайн утром и уходят в оффлайн ночью: В придачу ко всему этому, я также просканировал несколько диапазонов IP в APNIC (Asia-Pacific Network Information Centre) каждые 30 минут в течение 24 часов.

image

Самым интересным в этой «гифке» является то, как выглядит динамический пул IP от ISP, показывающий клиентов, выходящих онлайн на короткий промежуток времени, и затем присоединяющихся и получающих новый IP-адрес (вот почему более активные IP-адреса «переезжают» в течение дня):
image

Ах да, и если вам интересно, как выглядит IPv6 в таком формате и сколько адресов мы уже используем, то вот вам заключительный график:

image


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Переезд в австрийский социализм

Пора восполнить пробел. На Хабре часто пишут про эммиграцию в разные страны, а про Австрию ещё не было. Хальштатт Старался кратко, заранее извиняюсь, что не получилось 🙂 Я попробую описать мой опыт переезда в Австрию (в Вену), а также немного ...

App Store не позвонит. Или как я сделала своё приложение, но оно не попадёт к пользователям

Чуть позже я узнала, что неплохо дополнять код дизайном. Когда-то я думала, что для того, чтобы запустить своё приложение достаточно написать код. Но всё это может быть лишним, если не следовать гайдлайнам. Ещё позже я поняла, что необходимо искать аудиторию ...