Subnetting. Разбиение сети на подсети, суммироваеие, нахождение адреса сети и широковещательного адреса.

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

Умение вычислить значение маски TCP/IP может быть использовано при подключении нового хоста в сеть и реорганизации корпоративной сетки. Изучение этой проблемы следует начать с понимания того, что она собой представляет и для каких целей используется.

Битовая маска

Маска подсети может называться битовой маской, что является 32-битным значением, которое указывает на одну часть IP, относящуюся к адресации сетевого интерфейса, и на вторую часть, относящуюся к адресации подсетей. Обычно её значение отображается в десятичном виде, в формате ХХХ.ХХХ.ХХХ.ХХХ.

Это определение приближено к профессиональному сленгу и может показаться непонятным. Разобраться с тем, что это такое, поможет конкретный пример.

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

Далее оба значения приводятся в двоичный вид и вычисляются следующие последовательности:

Теперь надо последовательно умножить каждый разряд IP-адреса в двоичном виде на разряд маски в двоичном виде и в результате будет получено значение,

которое при переводе в десятичный вид будет выглядеть, как

— это адрес сети.

Возвращая в десятичный вид, получается цифра 199, соответствующая адресу интерфейса хоста.

Сравнив первый и второй результаты, можно сказать, что цифры IP-адреса, которые соотносятся с единицами маски, указывают на адрес подсети. Цифры IP-адреса, соотносящиеся с нулями маски, образуют адрес компьютера в этой подсети.

В итоге маска подсети помогла выяснить по IP, что наш компьютер находится в подсети 192.168.0.0 и имеет в ней адрес 199. Возвращаясь к определению выше, она показала, какая часть IP указывает на подсетку, а какая на адрес хоста.

Как найти маску подсети по классу IP-сети

Совокупность всех IPv4-адресов делится на классы по диапазонам адресов. Всего существует пять, из которых используются A, B, C, D- адреса заложены под мультикасты, и E — зарезервированы на будущее.

Для определения класса адреса необходимо опять перевести его в двоичный вид и посмотреть начало последовательности битов:

Возвращаясь к примеру, который был выше, как узнать маску подсети в нем:

IP-адрес в двоичном виде начинается на 110, значит, он принадлежит к классу C. Ещё один способ, как узнать маску подсети, это запомнить диапазоны принадлежащие классам.

Как узнать маску по префиксу

Для краткости маску можно записывать в виде префикса, который означает количество бит порции сети. Эта система обозначения принята с приходом бесклассовой междоменной маршрутизации (Classless Inter-Doma-in Routing, или CIDR, «сайдр»). Она избавляет от классов, а для идентификации сети может использоваться разное число битов IP. Узнать маску подсети в десятичном и двоичном виде по префиксу проще всего по таблице.

Как рассчитать маску по префиксу CIDR

Привести маску из префикса в десятичный вид просто. Известно, что маска подсети имеет 32 бита, при этом единицы в начале, а нули в конце. Следовательно, нужно:

Последним действием получаем маску в десятичном виде.

Как привести маску подсети из десятичного вида в короткий префикс

Написание маски сети в виде префикса экономит время и место в тексте. Кроме того, это стандартизированное международное отображение и сейчас используется чаще, чем десятичное. Для этого требуется:

Таким образом можно рассчитать префикс CIDR.

Как определить маску подсети с помощью адреса сети и маски сети

Подобное задание часто всплывает на собеседованиях и тестовых заданиях. И также навык пригодится при реорганизации сети предприятия или делении крупной сетки на более мелкие подсети.

Для наглядности стоит вернуться к примеру, который разбирается с первого абзаца.

С помощью адреса 192.168.0.199 и маски сети 255.255.255.0 уже вычислен адрес самой сети, который имеет вид 192.168.0.0. Здесь для использования присутствует 256 адресов. Из них 2 адреса автоматически резервируются:

  • …255 — broadcast;

  • …0 — адрес сети и не может быть использован.

Остаётся для раздачи хостам всего 254 адреса. Стоит отметить, что в многоранговых сетях еще один адрес резервируется для роутинга, это может быть …1 (или любой другой).

Разбирая все по порядку, приведём этот пример в общий вид, применяемый к любой сети.

Число допустимых узлов всегда ограничено. Если перевести маску сети в двоичный вид, то, как уже известно, единицы указывают на адрес подсети, нули — на адрес компьютера.

Бит может возвращать только два значения, два бита — четыре, три бита — восемь и так далее. Выходит, что n-бит возвращают 2^n значения. Исходя из всего, что сказано выше, получается вывод: число хостов (N) в сети вычисляется формулой N = (2^r)—2, в которой r-количество нулей в двоичном виде маски.

Возвращаясь к нашему примеру, производим расчёт:

Получаются те же 254 адреса для раздачи интерфейсам хостов в сети.

Предположим, что предприятию требуется создать подразделение и собрать 20 рабочих компьютеров в подсеть. Рассчитать маску подсети можно следующим образом.

Берём 20 IP и прибавляем к ним 2 адреса, которые будут зарезервированы. Всего требуется 22, самая близкая степень 2 — это 32. В двоичном виде 10 0000. Поскольку сеть, в которой проводится деление, относится к классу С, то маска подсети будет иметь вид:

Максимально в полученной подсети раздать интерфейсам хостов можно 30 адресов.

Как рассчитать маску подсети. Побитный сдвиг

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

Предположим, требуется разбить сеть 192.1.1.0 на 6 подсетей, в самой большой планируется разместить максимум 20 узлов. Исходя из этого, производится расчёт.

Алгоритм:

  1. Определить класс разбиваемой сети. Для примера предложена сеть класса С, маска, используемая по умолчанию 255.255.255.0 или /24.

  2. Выяснить, какое количество бит требуется для шести подсетей. Для этого число сетей округляется до ближайшей степени двойки, это 8. Получается, что требуется 3 бита, так как 8 = 2^3.

  3. Представить маску по умолчанию в двоичный вид для наглядности:

  4. Для создания 6 подсетей требуется забрать 3 бита из октета адреса хоста. К 24 битам адреса сети прибавляется еще 3. В итоге 24+3 = 27.

  5. Остаётся перевести маску в десятичный вид. Последний октет 11100000 — это 224. Получается, маска имеет вид

Либо, обращаясь к CIDR, посчитать количество битов по единицам — 27, и посмотреть значение префикса.

  1. Пользуясь тремя битами и с помощью маски разбиваем подсети. В последнем октете проставляем единицы. Для наглядности это можно сделать в двоичном виде:

Посчитать адреса подсетей можно и без двоичного представления, здесь сделано для наглядного отображения того, почему получаются именно эти адреса, а не другие.

Таким образом можно создать 8 подсетей, но в задании требуется только 6, поэтому остановимся на них.

Времена, когда подобные расчёты проводились вручную, далеко позади. Информация о том, как узнать маску подсети, преподаётся в ВУЗах и на различных курсах. Как правило, её старательно пытаются изучить студенты и профессионалы, которые хотят пройти сертификацию.

Сегодня для облегчения работы системных администраторов и сетевых инженеров существует множество различных калькуляторов. Эти системы могут провести любой расчёт за несколько секунд. Однако прибегать к помощи программ при небольшом объёме данных неинтересно. Иногда проще и быстрее разбить сеть в уме, чем искать нужный ресурс.

Понимание того, как производится расчёт маски подсети, необходимо специалисту, даже если он никогда на практике не будет его применять.

Похожие статьи

Системному администратору в рамках исполнения профессиональных обязанностей иногда приходится выезжать на дальние объекты, где не работает ни мобильная, ни какая другая связь, и единственная возможность связаться со штаб-квартирой — это настроить интернет-подключение, для чего нужно знать необходимый IP-адрес, маску подсети и шлюз. Представим себе ситуацию, что провайдер оставил нам только адрес шлюза и маску подсети. Как определить IP-адрес, чтобы гарантировано попасть в нужный диапазон? Или разрешено использовать только небольшой пул адресов при этом нужно выбрать адрес, последний в пуле. Как его определить?Другая ситуация: нужно разбить сеть на части, чтобы прогонять трафик через виртуальные сети (VLAN) при этом необходимо использовать пулы адресов разного размера по числу оборудования в каждом сегменте. Как выбрать необходимую длину подсети? Ответить на эти вопросы может IP-арифметика [https://habr.com/ru/post/129664/ , https://help.keenetic.com/hc/ru/articles/213965829-пример-расчета-количества-хостов-и-подсетей-на-основе-IP-адреса-и-маски , https://www.cisco.com/c/en/us/support/docs/ip/routing-information-protocol-rip/13788-3.html]. Мы специально приведём бумажный вариант иллюстраций, потому что пока не подключена сеть, многие вещи будут недоступны. В этом случае карандаш и листок бумаги — это единственные «вычислительные» приспособления.

Про классовую адресацию

IP-адреса разделяются на глобальные и локальные, классовые (Classful) и бесклассовые (CIDR — Classless Interdomain Routing). В глобальных сетях IP-адреса повторяться не могут, а в локальных сетях уникальности нет.

Глобальная классовая адресация имеет следующие диапазоны адресов:

  • класс А: 1.0.0.0 – 126.255.255.255;
  • класс В: 128.0.0.0 – 191.255.255.255;
  • класс С: 192.0.0.0 – 223.255.255.255;
  • класс D: 224.0.0.0 — 239.255.255.255 – диапазон IP-адресов для групповыхмногоадресных рассылок;
  • класс E: 240.0.0.0 – 255.255.255.255 – диапазон выделен для экспериментов.

Здесь же имеются и специфическиезарезервированные диапазоны адресов:

  • 0.0.0.0 – 0.255.255.255 – выделяются для маршрута по умолчанию, то есть назначается в качестве IP-адреса источника при отсутствии связи хоста с DHCP-сервером;
  • 127.0.0.0 – 127.255.255.255 – адреса обратной связи (loopback), то есть для передачи данных самому себе в качестве тестирования, зачастую 127.0.0.1 – является локальным адресом хоста (localhost);
  • 169.254.0.0 – 169.254.255.255 – присваивается хосту в случае, когда DHCP-сервер недоступен.

Неотъемлемой частью IP-адресации является маска, которая необходима для разделения зарезервированной части IP-адреса сети от свободной, а свободная часть как раз и будет задействована под распределение адресов для устройств. В классовой адресации маска соответствует длине октета, то есть /8, /16, /24, в чём и состоит основная нерациональность распределения IP-адресов. С маской /8 количество IP-адресов составит 16 777 214, с маской /16 — 65 534, а с маской /24 IP-адресами будут обеспечены 254 хоста.

Формула расчёта количества IP-адресов выглядит так: 2n – 2. Здесь “-2” означает, что всегда есть 2 IP-адреса, которые нельзя назначать устройствам, первый – всегда является адресом сети, а последний – широковещательный.

Для локальных сетей выделены несколько диапазонов, адреса которых в разных компаниях могут повторяться, но не могут использоваться для интернет:

  • 10.0.0.0 – 10.255.255.255.255 – назначаются хостам в крупных компаниях;
  • 172.16.0.0 – 172.31.255.255 – применяется в организациях средних масштабов;
  • 192.168.0.0 – 192.168.255.255 – задействуется в фирмах мелких и средних масштабов.

Перевод в двоичную систему исчисления

Как раз смысл IP-арифметики и заключается в преобразовании адресов из 10й системы исчисления в 2ю, применении маски, высчитывании количества адресов для хостов и перевода обратно в 10е представление.

В 2й системе исчисления применяются только “0” и “1”. Возьмём для примера сеть 192.168.0.0 с маской /24. Первый способ перевода чисел в 2ю систему из 10й – это деление на 2. Для нас это менее удобно, поэтому подробнее остановимся на втором, который состоит из 4х шагов:

1. каждая цифра IP-адреса представляет собой октет в 2й системе исчисления и состоит из 8 бит. Для удобства сначала представим числа в виде всех единиц, то есть 11111111.11111111.11111111.11111111 (можно и всеми 0, но из 1 в 0 удобнее исправлять и меньше чёркать на листке). Здесь нужно знать, что максимальное значение в одном октете – 256, которое получается при возведении 2 в степень 8 (8 бит). Однако, задействованы в качестве IP-адресов для устройств могут быть только 254, так как первый (заканчивается на 0) – это сеть, а последний (все единицы) – броадкаст;

2. в каждом октете, начиная справа, напишем числа, возведя 2 последовательно в каждую степень (2 в 0, 2 в 1,…. 2 в 7), получится такой ряд чисел: 128 64 32 16 8 4 2 1. Если их сложить, то получится максимальное значение октета;

3. установим “0” вместо “1” там, где будет соответствие числа IP-адреса с числом октета. В нашем случае первый октет IP-адреса сети будет выглядеть так: 11000000 (128+64), второй – 10101000 (128+32+8), третий – 00000000 (0), четвёртый – 00000000 (0);

4. переведём маску в 2ое представление — 11111111.11111111.11111111.00000000. Здесь видно, что под IP-адреса устройств отведён полностью последний октет – изменяться могут справа налево 0 пока не встретится 1. 3й октет – зарезервирован под подсети, а 1й и 2й – указывают на сеть. Также становится понятным, почему маска пишется как “/24” (24 бита отведено), а в 10й системе исчисления она выглядит как 255.255.255.0 (см. рис. 1).

img_d9n8dynbi8t293f5k4na477.jpg

Рисунок 1. Расчёт IP-адресов в классовой адресации.

В рассмотренной сети будет 254 IP-адреса для сетевых устройств. IP-адрес 192.168.ххх.255 назначить нельзя, так как это последний адрес, который является широковещательным (broadcast). Если какой-то адрес хоста нужно представить в 2м виде, то делается это аналогичным образом (см. рис. 1).         

Приведём пример. В каждом городе 3х соседних областей открывается сеть фаст-фуд из 100 бургерных, в каждой из которой будет 3 устройства: 2 ПК и 1 Wi-Fi роутер. В этом случае 3й октет в двоичной системе будет 01100100. Сеть будет расширяться дальше, и расчёт будет понятен до 254 филиала – 11111110. А на 255м объекте и дальше — классовая адресация не подходит.

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

В бесклассовой адресации выделение IP-адресов происходит более рационально, нежели в классовой.

В бесклассовой адресации задействуются по максимуму все биты адресного пространства. Здесь применяется маска переменной длины (VLSM — Variable Length Subnet Mask), которая позволяет регулировать количество IP-адресов хостов и количество подсетей в большую или меньшую сторону. В ней используется не фиксированное число октетов (1, 2 или 3), а любое число бит IP-адреса [https://ru.wikipedia.org/wiki/Бесклассовая_адресация]. Например, применяя маску /13 количество IP-адресов будет 524 286, с маской /27 – 30, с маской /6 будут обеспечены IP-адресами 67 108 862 хостов.

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

Возьмём тот же пример из классовой адресации, но увеличим количество бургерных до 300. В этом случае правильным будет сеть 192.168.0.0 разбить на большое количество подсетей с малым количеством IP-адресов, а значит увеличить маску с /24 до /29. Маска получится 11111111.11111111.11111111.11111000 (29 единиц), а в 1-й системе исчисления – 255.255.255.248, то есть из последнего октета мы забираем 5 бит.Полезно будет написать больше информации по поставленной задаче, а именно: начальный и конечный адреса в каждой подсети, широковещательный адрес, количество IP-адресов (см. рис. 2).

img_n654z9z273dftehkn33att3.jpg

Рисунок 2. Расчёт IP-адресов в бесклассовой адресации.

То есть в бесклассовой “арифметике” не так уж легко сразу сказать номер подсети для 50 или 150 филиала, так как нужно произвести манипуляции с цифрами. Здесь изначально берётся 8 IP-адресов (это 3 бита, так как в 2х битах не помещается 3 адреса для выделенных устройств) для первого филиала, следующие 8 за ними – для 2го, и так далее 0я подсеть будет соответствовать для первых 32х объектов. С 33го по 64й – 1я подсеть, с 65го до 96го – 2я подсеть, от 289го по 320й филиал будет 9я подсеть.

Некоторые системные администраторы учат наборы CIDR наизусть, типа /26 — 255.255.255.192 — 62 (количество хостов в подсети), как таблицу умножения, чтобы не заморачиваться с расчётами. Это не сильно труднее заучить, чем «бело-оранжевый, оранжевый, бело-зелёный, синий, бело-синий…».

Обратная маска

Обратную маску (Wildcardmask) [http://telecombook.ru/routing-and-switching/view/wildcard-mask , https://habr.com/ru/post/131712/] удобно применять при создании списков доступа для целых подсетей.

Например, для 63го филиала, нужно всем пользователям запретить пинги и доступ в интернет, где IP-адрес подсети 192.168.1.240/29. Обратная маска в этом случае будет 0.0.0.7. В 10м представлении её можно получить путём вычитания существующей маски 255.255.255.248 из полной – 255.255.255.255; в 2й системе исчисления такое вычитание выглядит как инверсия свободных бит (см. рис. 3). Обратная маска не имеет короткой записи, как прямая маска.

img_byt6sah4_khy9bbb4e9f_td.jpg

Рисунок 3. Расчёт обратной маски.

Художества на бумаге

Завершающим действием может быть хотя бы примерный рисунок сети. Это будет почти готовое решение, которое перенесётся в продакшн. 

Самый простой вариант отобразить сеть наглядно – нанести её на листке бумаги. Здесь придираться не к чему, так как схема всё равно будет дорабатываться: будут меняться соединения, именаназначения серверов, добавляться оборудование. Свой вариант художеств предоставлен на рисунке 4, где R – маршрутизатор, S – свитч, SRV – сервер. Здесь же на рисунке можно или даже желательно разделить трафик на части – на VLAN-ы, что даст больше понимания в правильности действий.

img_a2zdrb6ey_3asteby9y8538.jpg

Рисунок 4. Сеть на бумаге.

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

Разделение сети на подсети самостоятельно

Поскольку большинство организаций не используют сети класса B, в рамках которых могут быть соединены между собой 65534 устройства, рассмотрим пример разделения сетей класса C. Наиболее распространенный вариант разбиения – с помощью маски.

Маска подсети — это цифровой шаблон, с помощью которого можно определить принадлежность устройства, обладающего уникальным адресом (IP), к той или иной подсети. Данный шаблон может быть представлен в двух видах: в десятичном и двоичном видах. Но последний на практике не используют, однако общее число единиц в записи суммируют и указывают через дробь в конце десятичной записи.

Например, 192.168.109.0/32, где число 32 характеризует сумму единиц в двоичной записи.

Предположим, существует сеть, в состав которой входит некоторое количество компьютеров, 3 свитча (коммутатора) и 3 маршрутизатора.

Провайдером была выделена сеть 192.168.0.0/24.

Разделим ее на 6 подсетей, при этом число устройств в каждой будет различным: 100, 50, 20, 2, 2, 2. Деление начинают с участка, к которому подключено наибольшее число устройств. Как видно, короткая запись маски – 24, что означает, что ее можно представить в таком виде: 255.255.255.0.

Чтобы разбить сеть на 2 подсети, необходимо сменить маску с «24» на «25» и применить ее к сети. В созданных подсетях 192.168.0.0/25 и 192.168.0.128/25 для IP узлов выделено 7 бит. Число доступных адресов можно рассчитать следующим способом: 2^7-2 = 126, что больше 100.

Теперь разделим подсеть 192.168.0.128/25 на 2 подсети, для чего используем маску 26. Число доступных адресов – 2^6-2 = 62, поскольку теперь для адресов устройств выделено 6 бит. В итоге получили 2 подсети: 192.168.0.128/26 и 192.168.0.192/26.

Подобным способом используем маску 27 для очередного деления на 2 подсети. Число устройств – 2^5-2 = 30, что больше 20. Получаем подсети 192.168.0.192/27 и 192.168.0.224/27.

Для создания 3 подсетей с подключенными по 2 устройства к каждой, из общего IP-адреса достаточно выделить всего 2 бита под адреса. Общее число бит в IP-адресе – 32. Получаем маску: 32-2=30. Применяем ее для сети 192.168.0.224, получаем 3 новых подсети: 192.168.0.224/30, 192.168.0.228/30, 192.168.0.232/30.

Таким способом сеть была поделена на 6 подсетей. Однако можно значительно упростить задачу, воспользовавшись одним из онлайн-сервисов.

Как разделить сеть на подсети онлайн VLSM Calculator

Данный онлайн-сервис позволяет разделить сеть на требуемое число подсетей с использованием сетевой маски. На странице содержится форма, с несколькими полями. В первом требуется ввести адрес исходной сети, указав через «/» биты маски. Чтобы изменить количество подсетей, необходимо найти на форме поле с соответствующим названием и ввести требуемое значение, зафиксировать его нажатием на «Изменить». Форма примет вид с определенным числом подсетей, которые характеризуются буквенным обозначением («Название») и числом устройств («Размер»). Необходимо заполнить поля «Размер» в зависимости от требуемого числа устройств в подсетях и нажать кнопку «Отправить».

Разделить сеть на подсети онлайн — http://www.vlsm-calc.net/?lang=ru

1.jpg

В результате будет представлена таблица с адресами подсетей, диапазонами выделенных адресов, масками, выраженными в десятичном и двоичном видах, именами подсетей и выделенными размерами (числом доступных адресов для устройств). Также пользователю будет предоставлена информация об эффективности использования пространства адресов, выраженной в процентах.

2-1024x426.jpg

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

Используемые источники:

  • https://www.syl.ru/article/272350/new_kak-uznat-masku-podseti-maska-podseti-raschet-po-ip
  • https://corpadmin.pp.ua/blog/internet/post/162-raschet-setey-vruchnuyu
  • https://www.softo-mir.ru/razdelit-seti

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации