IP-адресация, маски и подсети: просто о сложном

Сергій Бондаренко

Сегодня мы расскажем о том, как работает сеть на уровне протоколов, и поговорим об IP-адресах. Вы узнаете, как работает TCP/IP-протокол, зачем нужны маски подсети и как ее правильно определить.

Содержание:

Подсети — предназначение
TCP/IP и стек протоколов
IPv6 и IPv4
Перевод IP-адреса в двоичную систему
Маска подсети
Классовая и бесклассовая адресация
Заключение

Подсети — предназначение

Большая корпоративная сеть обычно делится на подсети. Формально подсети ничем не отличаются от сетей. Это удобно с точки зрения администрирования — для каждого отдела системный администратор выделяет свою локальную сеть. При разделении сети на подсети можно использовать различные сетевые архитектуры и различные технологии (в одной будет использоваться Ethernet, в другой — Token Ring, в третьей — WiFi и т.д.). Все эти сети будут коммуницировать между собой.

В локальной сети всегда присутствует так называемый широковещательный трафик, когда от одного хоста данные отсылаются всем хостам данной сети. Использование подсетей дает возможность снизить нагрузку на каналы связи, поскольку при широковещательных запросах маршрутизатор не передает запросы (то есть не гоняет трафик) в соседние сети. 

TCP/IP и стек протоколов

Любой хост (компьютер, подключенный к сети) обладает своим идентификатором — IP-адресом. Он нужен для того, чтобы компьютеры могли обращаться друг к другу, посылая данные на конкретный хост. В быту сетевая модель передачи данных от источника к получателю работает по протоколу TCP/IP.

TCP/IP произошел в результате объединения стандартов транспортного протокола передачи Transmission Control Protocol (TCP) и интернет-протокола (Internet Protocol). Транспортный механизм TCP устанавливает соединение и обеспечивает поток данных, а в случае сбоя (утраты данных) он делает повторный запрос и устраняет дублирование при получении двух копий одного пакета. Благодаря этому обеспечивается целостность данных, а отправитель точно знает, что данные доставлены.

Чтобы узлы в сети работали одновременно, необходима особая организация протоколов, исключающая конфликты или незавершенные операции. Для этого служит так называемый стек протоколов. В случае с TCP/IP стек протокола состоит из четырех уровней:

  • Прикладной уровень (Application Layer). Прикладной уровень определяется собственными протоколами передачи информации, а потому на нем работают почти все приложения: HTTP — для интернета, FTP — для передачи файлов, SSH — безопасное соединение с удаленным хостом, DNS — распределенная система для получения информации о доменных адресах и т.д.
  • Транспортный уровень (Transport Layer). Транспортный уровень нужен для достоверной передачи данных
  • Сетевой уровень (Internet Layer). На сетевом уровне происходит передача информации из одной сети или подсети в другую.
  • Канальный уровень (Network Access Layer). На канальном уровне происходит описание метода передачи пакетов данных, включая кодирование информации — указание последовательности битов в конце и начале пакета данных.

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

IPv6 и IPv4

Первым широко используемым протоколом семейства TCP/IP стал IPv4. Для идентификации сетевых интерфейсов он стал использовать 32-битные адреса по четыре октета (восемь позиций под ноль или единицу). IP-адрес присваивается каждому сетевому интерфейсу сети, каждой сетевой карте любого компьютера. Именно по IP-адресу, прикрепленному к пакету данных, сеть понимает, откуда этот пакет пришел и куда его следует переслать. Использовать длинные адреса с нулями и единицами общим числом 32 штуки — неудобно, поэтому IP-адрес принято записывать в десятичной системе. Выглядит IP-адрес, как четыре числа, разделенные точками, например 192.168.33.34. Каждое число в IP-адресе может принимать значение от 0 до 255. Таким образом, полный диапазон IP-адресации — это адреса от 0.0.0.0 до 255.255.255.255. 

Почему 255 — понять нетрудно. Максимально возможное число в любом октете составляет 11111111, что в переводе из двоичной в десятичную систему и означает 255. При таком подходе адресное пространство всех доступных IP-адресов протокола IPv4 ограничено 4 294 967 296 (232) адресами. Более продвинутая версия протокола IPv6 лишена этого недостатка. Она содержит ряд принципиальных изменений и использует длину адреса в 128 бит. Возникает вполне логичный вопрос — что произойдет, когда в диапазоне адресов IPv4 не останется свободных? А ничего и не произойдет, просто стеки протоколов IPv6 и IPv4 будут использоваться одновременно.

Перевод IP-адреса в двоичную систему

Перевести обычный IP-адрес в октеты несложно. Все, что нам для этого нужно — запомнить, что 20=1,21=2,22=4,23=8,24=16,25=32,26=64,27=128

Тогда берем IP-адрес, скажем, 192.168. 40.75, и начинаем раскладывать, сравнивая с линейкой значений 128 / 64 / 32 / 16 / 8 / 4 / 2 / 1. Первое число — 128, и оно больше 75. 

Значит, первое число в двоичном коде — 0. Второе число — 64, и оно меньше 75, значит, пишем 1 и вычитаем 75 — 64 = 11. Одиннадцать сравниваем с 32, 11 < 32, значит, третье число — 0. Далее идем по тому же алгоритму и смотрим, что 11 < 16, значит, четвертое число тоже 0. Далее, 11 > 8, значит, следующее число — 1. Из 11 вычитаем 8 и сравниваем дальше. 3 < 4 и 3 > 2, значит, следующие две цифры — 0 и 1. И последнее число 1 = 1, значит, ставим 1. Итого получилось 01001011. Остальные числа переводим тем же образом — 40 предстает как 00101000, 168 — 10101000, 192 — 11000000. Весь же IP-адрес будет выглядеть как 11000000.10101000.00101000.01001011. 

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

Теперь, поняв, как выглядит IP-адрес, можно переходить к тому, из каких частей он состоит. Все сетевые интерфейсы в интернете объединены в локальные сети, которые, соединяясь между собой, образуют глобальную сеть. В связи с этим IP-адрес состоит из двух частей: адреса сети (который одинаков для компьютеров одной сети) и адреса самого компьютера в этой сети. Если смотреть на IP-адрес слева направо, то до какой-то цифры идет адрес сети, а потом идет адрес самого хоста. Причем граница перехода между адресом сети и адресом хоста — плавающая. Таким образом, одинаковые по виду IP-адреса могут оказаться адресами разных компьютеров в разных сетях. 

Например, адрес 192.168.7.34 или 11000000.10101000.00000111.00100010 может означать два совершенно разных адреса. Первый это адрес сети 11000000.10101000.00000111 с адресом узла 00100010, а второй — сеть с адресом 11000000.10101000 и адресом хоста 00000111.00100010. Налицо необходимость каким-то образом определить, какие разряды используются для идентификации адреса сети, а какие — для определения адреса узла. В качестве решения данной проблемы была придумана маска подсети. Маска подсети — это не IP-адрес, а инструкция, которая говорит о том, как следует читать IP-адрес. Маска подсети представляет собой число, где слева направо идут единицы до какого-то разряда, а затем в остальных разрядах идут только нули. При наложении маски на IP-адрес граница перехода из единиц в нули и есть граница между адресом сети и адресом хоста. 

Классовая и бесклассовая адресация

На данный момент используется два подхода к решению задачи по присвоению адресов компьютерным сетям — классовая адресация и бесклассовая адресация хостов в сети. Первый способ, который частично устарел, заключается в том, что адресное пространство протокола IP делится на несколько основных классов — A, B, C, а также классы D и E. Каждый из этих классов определяет границу между сетевым префиксом и номером хоста в разных точках 32-разрядного адреса. 

Например, класс А говорит о том, что идентификатор сети прописан в первом октете, а второй, третий и четвертый октет содержат адрес хоста. Для класса B адрес сети использует первые два октета, а адрес узла — вторые два октета. Класс С распределяет разряды IP-адреса таким образом, что первые три октета занимает идентификатор сети, а четвертый октет содержит адрес хоста. Диапазон первого октета для класса А составляет 1–127, для класса B он составляет 128–191, для класса С — 192–223. Классы принято также записывать через слеш, обозначая цифрой после него количество разрядов, отведенное для адреса сети: (…/8), (…/16) и (…/24).

Представьте себе, что проводится телеконференция между хостами, расположенными в разных локальных сетях — один узел в Праге, другой в Лиссабоне, третий в Париже и так далее. В передаваемом пакете присутствует адрес хоста получателя и адрес отправителя. Из этого следует, что при передаче данных, скажем, из узла в Лиссабоне, всем остальным участникам телеконференции, должны быть переданы пакеты таким числом, чтобы охватить всех получателей. Это заняло бы весь трафик, произошла бы перегрузка канала связи.

Поэтому для таких случаев был выделен диапазон адресов для групповой рассылки 224.0.0.0–239.255.255.255, который получил название класс D. Один хост приписывается группе, и когда в сеть приходит пакет, в адресе получателя которого указана группа, хост, расположенный в этой сети и приписанный этой группе, считает, что поступившая информация — для него тоже. Одним адресом отправляются данные множеству хостов в разных локальных сетях. 

Последний класс зарезервированных адресов — класс E. Его диапазон 240.0.0.0–247.255.255.255. Эти адреса нигде не используются, и данный класс создавался с прицелом на возможные будущие технологии. Однако они так и остались невостребованными.

Классовая система адресации отжила свое, хотя и осталась в терминологии. При этом, правило назначения адресов из диапазонов классов A, B и С никто не отменял. Если вы попробуете ввести недопустимый адрес в настройках сетевого интерфейса, получите об этом предупреждение. На замену классовой системе адресации пришла бесклассовая система. Она основана на том, что граница между идентификатором хоста и идентификатором сети не привязана к границе целого октета. Эта граница может не соответствовать ни восьми разрядам, ни 16, ни 24 разрядам. Это количество может быть плавающим, в зависимости от количества хостов, которые входят в эту сеть. Маска подсети в случае с бесклассовой адресацией указывается точно так же с помощью префикса. Например, запись 129.62.135.4/17 означает, что для идентификатора сети выделено 17 разрядов, а оставшиеся 15 разрядов соответствуют идентификатору хоста. 

Заключение

Теперь вы знаете, как происходит IP-адресация и что такое маска подсети. Вопреки ожиданиям, внедрение нового протокола IPv6 происходит достаточно медленно. Кроме того, он не оптимизирован для работы в мобильных сетях и не дает значительного прироста в производительности.

Вполне возможно, что в будущем ему на смену придут новые технологии, такие как, например, Recursive Internetwork Architecture (RINA). В RINA сеть рассматривается как набор слоев, где все слои работают по одним протоколам, но имеют свой размер. Для передачи данных в RINA-системе достаточно знать название процесса-получателя, а не его адрес в сети или порт для подключения. Но подробней об этом как-нибудь в другой раз. А пока посмотрите видео для закрепления нашей основной темы:

 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023