IP-адрес разделён маской подсети на префикс сети и адрес хоста. Хостом в данном случае является любое сетевое устройство (а именно сетевой интерфейс этого устройства), обладающее IP-адресом. Компьютеры, входящие в одну подсеть, принадлежат одному диапазону IP-адресов.
Префикс маршрутизации выражается в нотации CIDR. Он записывается как адрес сети, затем слеш (/) и длина префикса в битах. Например, для сети 192.168.1.0/24 — первые 24 бита зарезервированы под адрес сети, а оставшиеся 8 под хосты. Для протокола IPv6 нотация действует тем же образом, например, в адресе 2001:db8::/32 первые 32 бита — это префикс маршрутизации (адрес сети), а оставшиеся 96 зарезервированы под хосты. Для IPv4 сеть также характеризуется маской подсети, которая является битовой маской. При поразрядной операции И между маской подсети и адресом можно получить префикс маршрутизации.
Преимущества подсетей заключается в более эффективном использовании доступных адресов.
Процесс деления предполагает разделение сети на несколько подсетей с определённым количеством адресов под хосты.
Определение префикса сети
Маска подсети в IPv4 состоит из 32 битов, непрерывной последовательности единиц (1), за которой следует непрерывная последовательность нулей (0). В маске подсети не может стоять единица после нуля.
Двоичная форма
Точечно-десятичная нотация
IP-адрес
11000000.10101000.00000101.10000010
192.168.5.130
Маска подсети
11111111.11111111.11111111.00000000
255.255.255.0
Сетевой префикс
11000000.10101000.00000101.00000000
192.168.5.0
Адрес хоста (часть IP)
00000000.00000000.00000000.10000010
0.0.0.130
Сетевой префикс (адрес сети) вычисляется побитовой операцией AND между IP-адресом и маской. Результат AND равен единице тогда, когда оба операнда равны единице.
Подсчёт количества подсетей
Создание подсетей предполагает увеличение маски сети на несколько бит.
Двоичной форме
Точечно-десятичная нотация
IP-адрес
11000000.10101000.00000101.10000010
192.168.5.130
Маска подсети
11111111.11111111.11111111.11000000
255.255.255.192
Сетевой префикс
11000000.10101000.00000101.10000000
192.168.5.128
Адрес хоста
(без префикса)
00000000.00000000.00000000.00000010
0.0.0.2
В примере выше маска подсети была увеличена на 2 бита, создавая тем самым 4 (22) возможных подсетей:
Сеть
Сеть (двоичный)
Широковещательный адрес
192.168.5.0/26
11000000.10101000.00000101.00000000
192.168.5.63
192.168.5.64/26
11000000.10101000.00000101.01000000
192.168.5.127
192.168.5.128/26
11000000.10101000.00000101.10000000
192.168.5.191
192.168.5.192/26
11000000.10101000.00000101.11000000
192.168.5.255
Общая формула: , где N — количество подсетей, а n — маска сети в нотации CIDR делённая по модулю 8 (или просто количество добавленных бит к маске).
Подсчёт количества адресов для хостов в подсети
Количество возможных хостов в сети могут быть легко вычислены по формуле , где n — маска сети в нотации CIDR.
Биты маски подсети, равные нулю, отведены под адреса хостов. В приведённом выше примере маска подсети состоит из 26 бит, оставшиеся 6 бит могут быть использованы для идентификаторов хостов. Это позволяет создать сеть на 26 − 2 = 62 хоста.
Значения из одних нулей и значения из одних единиц зарезервированы для адреса сети и широковещательного адреса соответственно. Или другими словами первый и последний адрес подсети. Поэтому при подсчёте числа хостов надо вычитать 2 из общего числа доступных адресов.
Например, для маски /27 могут использоваться 8 подсетей. Каждый первый IP-адрес в подсети (.0, .32, .64, …, .224), то есть адрес сети, и каждый последний IP-адрес в подсети (.31, .63, .95, … .255), то есть широковещательный адрес, зарезервированы, соответственно для каждой сети доступно только 30 адресов (c .1 по .30, с .33 по .62, с.65 по .94, … с .225 по .254).
/24 сеть может быть разделена на следующие подсети увеличением маски подсети последовательно по одному биту. Длина маски влияет на общее количество хостов, которые могут быть определены в сети (последний столбец).
Размер префикса в битах
Маска сети
Доступно
подсетей
Доступно адресов для хостов
Всего хостов на все подсети
/24
255.255.255.0
1
254
254
/25
255.255.255.128
2
126
252
/26
255.255.255.192
4
62
248
/27
255.255.255.224
8
30
240
/28
255.255.255.240
16
14
224
/29
255.255.255.248
32
6
192
/30
255.255.255.252
64
2
128
/31
255.255.255.254
128
2*
256
* применимо только для соединений точка-точка
Специальные адреса и подсети
Первая и последняя подсети, полученной путём деления, изначально имели особое назначение и применение[2]. Кроме того, в протоколе IPv4 зарезервировано два адреса в каждой сети: первый, использующийся как адрес сети, и последний, для отправки широковещательных пакетов.
Подсети ноль и «все единицы»
У первой подсети все биты адреса сети, следующие после префикса маршрутизации, равны нулю (0). Поэтому её ещё называют" нулевой подсетью[2]. Последняя подсеть, соответственно, состояла из единиц и получила название «all-ones», или «все единицы»[2].
IETF изначально отговаривали производителей от использования этих двух подсетей из-за возможной путаницы сети и подсети с тем же адресом[3]. В 1995 году это решение было отменено [rfc:1878 в RFC 1878][4].
Протокол IPv6 подсетей
Дизайн адресного пространства протокола IPv6 существенно отличается от IPv4. Основной причиной создания подсети в IPv4 является повышение эффективности использования сравнительно небольшого адресного пространства. Но таковой проблемы в IPv6 не стоит.
В документе RFC 4291 для IPv6 на хосты отведено 64 бита[5]. Следовательно, префикс маршрутизации равен /64 (128 − 64 = 64 старших бит). Хотя, технически возможно использовать меньшие подсети[6], они являются непрактичными для локальных сетей на основе технологии Ethernet, потому что 64 бита необходимы автоматической настройки адреса[7]. Инженерный совет Интернета рекомендует использовать /127 подсети для соединений точка-точка (состоящих из двух узлов)[8][9].