Коротко об IP

· 27 мин чтения

IP-адрес – это уникальный сетевой адрес узла в локальной сети, построенной на основе стека протоколов TCP/IP. IP-адрес представляет собой серию из 32 двоичных бит (единиц и нулей). Так как человек невосприимчив к большому однородному ряду чисел, такому как этот 11100010101000100010101110011110, было решено разделить ряд на четыре 8-битных байта и получилось следующая последовательность: 11100010.10100010.00101011.10011110. Это не сильно облегчило понимание IP-адреса, поэтому данная последовательность переводится в привычную последовательность из четырех чисел в десятичной системе счисления, то есть 11100010.10100010.00101011.10011110 → 226.162.43.158.

4 разряда также называются октетами. Данный IP-адрес определяется протоколом IPv4. По такой схеме адресации можно создать более 4 миллиардов IP-адресов. Максимальное возможное число в каждом из октетов – 255 (так как в двоичной системе это 8 единиц), а минимальным – 0 соответственно.

IP-адреса делятся на 5 классов:

  • класс A: 1.0.0.0 – 127.0.0.0 (маска 255.0.0.0);
  • класс B: 128.0.0.0 – 191.255.0.0 (маска 255.255.0.0);
  • класс C: 192.0.0.0 – 223.255.255.0 (маска 255.255.255.0);
  • класс D: 224.0.0.0 – 239.255.255.255 (маска 255.255.255.255);
  • класс E: 240.0.0.0 – 247.255.255.255 (маска 255.255.255.255).

A, B и C – это классы коммерческой адресации. D – для многоадресных рассылок, а класс E – для экспериментов.

Бесклассовая междоменная маршрутизация (CIRD) – это метод распределения IP-адресов для IP-маршрутизации. Рабочая группа по проектированию Интернет (IETF) представила CIRD в 1993 году, чтобы заменить предыдущую классовую сетевую архитектуру адресации в Интернет. Его целью было замедлить рост таблиц маршрутизации на маршрутизаторах в Интернет и помочь замедлить быстрое исчерпание IPv4-адресов.

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

В то время как при классовой структуре сети для IPv4 размер сетевого префикса составлял одну или несколько 8-битных групп, в результате чего образовывались блоки адресов классов A, B или C, в адресном пространстве CIRD интернет-провайдерам (ISP) и конечным пользователям выделяются адреса с любой границей битов. Однако в IPv6 идентификатор интерфейса по умолчанию имеет фиксированный размер 64 бита, и конечным пользователям никогда не выделяются подсети меньше размера.

CIRD основан на маскировке подсетей переменной длины (VLSM), при которой сетевые префиксы имеют переменную длину (в отличие от префиксов фиксированный длины в предыдущей классовой адресации). Основное преимущество этого подхода заключается в том, что он позволяет более точно контролировать размеры подсетей, выделяемых организациям, и тем самым замедляется исчерпание IPv4-адресов из-за выделения подсетей большего размера, чем необходимо. CIRD породил новый способ записи IP-адресов, известный как нотация CIRD, в которой после IP-адреса указывается префикс, обозначающий количество единиц в IP-адресе. Примерами нотации CIRD является адреса 192.168.0.0/24 для IPv4 и 2001:db8::/32 для IPv6. Блоки адресов с непрерывными префиксами могут быть объединены в суперсети (суммаризация сетей), что сокращает количество записей в глобальной таблице маршрутизации.

Также IP-адреса подразделяются на “цвета” – белые и серые (или публичные и частные). Публичным IP-адресом называется IP-адрес, который маршрутизируется в Интернет. Адреса, используемые в локальных сетях, относятся к частным. Частные IP-адреса не маршрутизируются в Интернет.

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

Касаемо выдачи публичны IP-адресов. Допустим, Вы молодой сетевой инженер и хотите дать доступ к своему серверу пользователям в Интернет. Для этого Вам необходимо получить публичный IP-адрес. Чтобы его получить, Вы обращаетесь к своему интернет-провайдеру, и он выдает Вам публичный IP-адрес. Но из рукава интернет-провайдер взять публичный IP-адрес, поэтому он обращается к локальному Интернет-регистратору (Local Internet Registry, LIR), который выдает пачку IP-адресов Вашему интернет-провайдеру, а провайдер, в свою очередь, из этой пачки выдает Вам один из адресов. По аналогии с интернет-провайдером, LIR не может выдать пачку публичных IP-адресов из ниоткуда, поэтому он обращается к региональному Интернет-регистратору (Regional Internet Registry, RIR). Разумеется, RIR тоже обращается к вышестоящей организации за диапазоном IP-адресов – международной некоммерческой организации IANA (Internet Assigned Numbers Authority). Контролирует действия организации IANA компания ICANN (Internet Corporation for Assigned Names and Numbers). Такая иерархия организаций необходима для того, чтобы не было путаницы в публичных IP-адресах.

Вы → Интернет-провайдер (ISP) → LIR → RIR → IANA → ICANN.

Для создания локальных вычислительных сетей (Local Area Network, LAN) используются частные IP-адреса. Для работы с ними необходимо понимать, какие являются частными, а какие – нет. В таблице ниже приведены частные IP-адреса, которые обычно используют для создания локальных сетей.

Класс Адрес сети Маска подсети Диапазон адресов
A 10.0.0.0 255.0.0.0 10.0.0.0 – 10.255.255.255
B 172.16.0.0 – 172.31.0.0 255.240.0.0 172.16.0.0 – 172.16.31.255.255
C 192.168.0.0 255.255.0.0 192.168.0.0 – 192.168.255.255

Технически можно использовать любые IP-адреса в локальной сети, включая даже те, что зарезервированы в Интернет (например, 8.8.8.8 или 1.1.1.1). Однако это крайней не рекомендуется делать. Лучше использовать официально зарезервированные для локальных сетей диапазоны (приведены в таблице выше).

Маска подсети

Из таблице также можно подметить 3-й столбец – маску подсети. Маска подсети – это битовая маска, определяющая, какая часть IP-адреса относится к адресу сети, а какая – к самому узлу в сети.

IP-адрес = сеть + узел.

У всех IP-адресов есть две части: сеть и узел. Сеть – это часть IP-адреса, которая едина для всей (или сегмента) локальной сети. Как следствие, все IP-адреса узлов в конкретной сети содержат именно этот номер сети.

Узел является изменяющейся частью IP-адреса, поскольку каждое устройство должно иметь уникальный адрес в пределах локальной (или сегмента) сети.

Пример. В локальной сети находится 10 компьютеров, каждый из которых имеет выход в Интернет. Для того, чтобы отправить или получить данные в/из Интернет, они должны обладать IP-адресами. К примеру, в локальной сети используется сеть 192.168.0/24. Каждый компьютер будет иметь IP-адрес из этого диапазона:

  • 192.168.0.10 (PC-1);
  • 192.168.0.11 (PC-2);
  • …
  • 192.168.0.19 (PC-10).

В примере выше идентификатор сети – 192.168.0, а идентификатор узла – .1 и т. д. Размер диапазона, который может использоваться для идентификации узлов, задан префиксом – /24.

Маску подсети принято записывать двумя способами: как префикс или в десятичном виде. Например, маска частной подсети A выглядит в десятичной записи как 255.0.0.0, однако не всегда удобно использовать десятичную запись. Легче записать маску как префикс, то есть /8.

Ниже представлены изображения со всеми возможными масками подсети и структурой IP-адреса.

Используя это изображение, можно легко понять, сколько может быть в сети узлов, где у одного из компьютеров этой локальной сети IP-адрес – 172.16.13.98/24.

  • 172.16.13.0 – адрес сети;
  • 255.255.255.0 – маска подсети;
  • 172.16.13.1 – адрес первого узла в сети;
  • 172.16.13.254 – адрес последнего узла в сети;
  • 172.16.13.255 – широковещательный IP-адрес;
  • 172.16.14.0 – адрес следующей сети.

Итого в сети 172.16.13.0/24 может быть максимально 254 узла. Адрес сети и широковещательный IP-адрес являются зарезервированными адресами, поэтому не могут быть назначены конечным узлам.

Если взять этот же IP-адрес, но изменить префикс (маску подсети) на /16, то получится следующее:

  • 172.16.0.0 – адрес сети;
  • 255.255.0.0 – маска подсети;
  • 172.16.0.1 – адрес первого узла в сети;
  • 172.16.255.254 – адрес последнего узла в сети;
  • 172.16.255.255 – широковещательный IP-адрес;
  • 172.17.0.0 – адрес следующей сети.

Итого в сети 172.16.0.0/16 может быть максимально 65 534 узла.

Автоматическая частная IP-адресация (APIPA) – это механизм, который позволяет автоматически получить IP-адрес, если по какой-то причине DHCP-сервер не доступен.

Чтобы получить IPv4-адрес, узел случайным образом выбирает адрес в диапазоне от 169.254.1.0 до 169.254.255.255 (включительно) с маской подсети 255.255.0.0. Затем узел отправляет пакет ARP с запросом MAC-адреса, соответствующего случайно сгенерированному IPv4-адресу. Если этот адрес используется другим устройством, узел генерирует другой случайны адрес и повторяет попытку.