logo
адресация сетей

4.2.2 Простые способы организации подсетей

Формирование подсетей было введено для преодоления следующих проблем:

- резкого роста размера и количества таблиц маршрутизации в Интернете;

- появления дефицита номеров сетей при необходимости расширения их количества.

Обе эти проблемы решались путем добавления еще одного уровня иерархии к адресной структуре протокола IP .

Организацией подсетей называется процедура разбивки крупной сети на меньшие, более управляемые компоненты. Например, между IP -адресами класса С и класса В существует большое различие в части допустимого количества хостов в каждой сети. Столь же значительное различие существует между адресами класса В и класса А, Но что если организации необходимо адресовать в сети только 1000 хостов? Ей потребуется получить адрес сети класса В даже несмотря на то, что свыше 64 000 адресов останутся неиспользованными. Кроме того, можно ли успешно подключить 65 000 компьютеров к одной сети без использования каких-либо каналов распределенной сети? Можно ли связать 65 000 компьютеров с помощью одного сегмента Ethernet , длина которого не может превышать 500 метров? Должен быть предусмотрен способ разделения крупной сети на несколько подсетей. Именно этот принцип лежит в основе способа организации подсетей.

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

Метод организации подсетей позволяет разбить одну большую сеть на меньшие сети, которые являются более подходящими для того количества хостов, которые можно успешно включить в один широковещательный домен. Например, предположим, что компания зарегистрировала сеть класса В с адресом 190.1.0.0. При использовании маски, предусмотренной по умолчанию (которая является 16-битовой, или равна 255.255.0.0), в компании можно сформировать только одну сеть примерно с 65 000 хостами. Но предположим, что компания имеет около 200 производственных площадок, на каждой из которых находится не больше 200 хостов. Поэтому фактически компания сможет использовать только несколько сотен адресов класса С.

На рис. 4.9 представлен процесс формирования подсетей, в котором номер хоста делится на две части: номер подсети и номер хоста в этой подсети.

Рис. 4.9. Формирование подсетей

С помощью метода организации подсетей компания может разбить свой адрес сети класса В на 254 адреса сети, соответствующих классу С. Для этого сети присваивается вместо 16-битовой маски 24-битовая маска (255.255.255.0). Если операция "И" выполняется с использованием 24-битовой маски, то при обработке адреса типа 190.1.1.1 обнаруживается, что адрес сети равен 190.1.1.0, а не 190.1.0.0, как было бы при использовании 16-битовой маски. В результате создается сеть, аналогичная показанной на рис. 4.10.

Рис. 4.10. Введение подсетей в организации

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

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

На рис.4.10 показан пример распределенной сети, состоящей из нескольких логических сетей, которые используют концепцию подсетей внутри одного адреса класса В. Граничный маршрутизатор получает весь трафик, адресованный сети 190.1.0.0 из Интернета, и передает его внутренним подсетям, основываясь на информации, содержащейся в третьем октете.

В стандартах, описывающих современные протоколы маршрутизации, часто делается ссылка на длину расширенного сетевого префикса, а не на маску подсети. Данная длина эквивалентна количеству единичных битов в маске подсети. Это означает, что сетевой адрес 130.5.5.25 с маской подсети 255.255.255.0 может быть также записан как 130.5.5.25/24. Число 24 указывает на то, что в маске подсети 255.255.255.0 количество единичных битов равно 24. Такая запись является более компактной и легкой для понимания, чем запись с оформлением маски подсети в традиционной точечно-десятичной нотации.

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

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

- Сколько подсетей требуется организации сегодня?

- Сколько подсетей может потребоваться организации в будущем?

- Сколько хостов существует в наибольшей подсети организации сегодня?

- Сколько хостов необходимо будет поддерживать в наибольшей подсети организации в будущем?

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

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

Следует отметить, что при выборе маски подсети разрешается использовать только маску с подряд идущими (слева) единицами. Иными словами, маска подсети, равная 01010011 (83), применяться не может, а маска подсети 11110000 (248) является допустимой.

Итак, процесс определения маски должен выполняться в пять этапов.

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

- Провести черту после последней единицы (бита 1) в маске подсети. Все, что находится слева от этой черты, представляет собой базовый адрес сети.

- Определить, какое количество битов требуется для получения необходимого количества подсетей. Увеличить количество единиц в маске подсети на эту величину.

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

- Убедиться в том, что количество оставшихся битов в маске позволяет адресовать достаточное количество хостов в каждой подсети.

После определения того, какая маска должна использоваться, на следующем этапе необходимо выяснить, какой перечень IP -адресов относится к каждой подсети. Этот этап является обязательным, поскольку необходимо знать, к какой подсети относится каждый конкретный IP -адрес. Если маска подсети является простой (такой как 255.255.255.0), то этот перечень определить несложно. Например, если имеется IP -адрес 172.16.1.1 с маской 255.255,255.0, то можно сразу же установить, что он относится к подсети с адресами от 172.16.1.1 до 172.16.1.254, не прибегая к двоичной арифметике. Кроме того, в этом случае можно легко определить, что хосты 172.16.200.1 и 172.16.50.1 находятся в разных подсетях. Но при использовании маски 255.255.224.0 уже не так легко узнать, что хосты 172.16.34.1 и 172.16.73.1 находятся в разных подсетях, а хосты 172.16.130.1 и 172.16.150.1 — в одной подсети. В этом случае для определения начальных и конечных адресов подсетей необходимо выполнить некоторые вычисления с помощью двоичной арифметики. Теперь рассмотрим подробнее этот процесс.

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

Рис. 4.11. Этапы расчета IP-адресов

Затем необходимо определить, все возможные двоичные комбинации, которые могут быть получены при разных значениях битов в части адреса, соответствующей подсети. Например, если в части подсети имеется четыре бита, то возможные комбинации являются следующими: 0000 (0), 0001 (1), 0010 (2), 0011 (3), 0100 (4), 0101 (5), 0110 (6), 0111 (7), 1000 (8), 1001 (9), 1010 (10), 1011 (11), 1100 (12), 1101 (13), 1110 (14) и 1111 (15). Это – наши 16 подсетей. Но подсети со всеми нулями и всеми единицами в номере являются недействительными, поэтому подсети 0000 (0) и 1111 (15) должны быть исключены. Причина этого состоит в том, что подсеть со всеми нулями в номере обозначает базовый адрес сети, а подсеть со всеми единицами в номере соответствует широковещательной рассылке по "всем подсетям". В действительности исключение таких подсетей просто рекомендуется, а не является обязательным, но эта тема рассматривается дополнительно в настоящей главе в разделах об адресации VLSM и CIDR . После удаления этих двух подсетей остается 14 действительных подсетей:

10101100.00010000.0001 0000.00000000 (172.16.16.0)

10101100.00010000.0010 0000.00000000 (172.16.32.0)

10101100.00010000.0011 0000.00000000 (172.16.48.0)

10101100.00010000.0100 0000.00000000 (172.16.64.0)

10101100.00010000.0101 0000.00000000 (172.16.80.0)

10101100.00010000.0110 0000.00000000 (172.16.96.0)

10101100.00010000.0111 0000.00000000 (172.16.112.0)

10101100.00010000.1000 0000.00000000 (172.16.128.0)

10101100.00010000.1001 0000.00000000 (172.16.144.0)

10101100.00010000.1010 0000.00000000 (172.16.160.0)

10101100.00010000.1011 0000.00000000 (172.16.176.0)

10101100.00010000.1100 0000.00000000 (172.16.192.0)

10101100.00010000.1101 0000.00000000 (172.16.208.0)

10101100.00010000.1110 0000.00000000 (172.16.224.0)

Теперь, оставляя неизменными части адреса с обозначением сети и подсети, необходимо определить перечень адресов хостов, относя­щихся к этой подсети, от первого адреса до последнего. Эта задача является весьма несложной: первым адресом является базовый адрес подсети, а последним — тот же базовый адрес, в котором часть с обозначением хоста заполнена двоичными единицами. В данном случае октет, в котором часть с обозначением хоста заполнена двоичными единицами (соответствующий последнему адресу), равен 00011111, или 31.

1. 10101100.00010000.00010000.00000000 (172.16.16.0) - наименьшее значение в диапазоне 1

10101100.00010000.0001 1111.11111111 (172.16.31.255) - наибольшее значение в диапазоне 1

2. 10101100.00010000.00100000.00000000 (172.16.32.0) - наименьшее значение в диапазоне 2

10101100.00010000.0010 0000.00000000 (172.16.47.255) - наибольшее значение в диапазоне 2

3. 10101100.00010000.00110000.00000000 (172.16.48.0) - наименьшее значение в диапазоне 3

10101100.00010000.0011 0000.00000000 (172.16.63.255) - наибольшее значение в диапазоне 3

И так далее.

Наконец, необходимо удалить первый и последний IP -адреса хостов, относящиеся к рассматриваемой подсети. Следует помнить, что первый адрес обозначает "данную сеть", а последний является широковещательным адресом.

1. 10101100.00010000.0001 0000.00000000 (172.16.16.0) - наименьшее значение в диапазоне 1

10101100.00010000.0001 0000.00000001 (172.16.16.1) - наименьшее значение в диапазоне 1

10101100.00010000.0001 1111.11111111 (172.16.31.255) - наибольшее значение в диапазоне 1

10101100.00010000.0001 1111.11111110 (172.16.31.254) - наибольшее значение в диапазоне 1

2. 10101100.00010000.0010 0000.00000000 (172.16.32.0) - наименьшее значение в диапазоне 2

10101100.00010000.0010 0000.00000001 (172.16.32.1) - наименьшее значение в диапазоне 2

10101100.00010000.0010 1111.11111111 (172.16.47.255) - наибольшее значение в диапазоне 2

10101100.00010000.0010 1111.11111110 (172.16.47.254) - наибольшее значение в диапазоне 2

3. 10101100.00010000.0011 0000.00000000 (172.16.48.0) - наименьшее значение в диапазоне 3

10101100.00010000.0011 0000.00000001 (172.16.48.1) - наименьшее значение в диапазоне 3

10101100.00010000.0011 1111.11111111 (172.16.63.255) - наибольшее значение в диапазоне 3

10101100.00010000.0011 1111.11111110 (172.16.63.254) - наибольшее значение в диапазоне 3

И так далее.

Упрощенный метод

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

- Найти "интересующий" октет. Таковым является октет, в котором значение маски не равно 0 или 255. Поэтому в маске подсети 255.255.192.0 интересующим октетом является третий (192).

- Найти разницу между значениями интересующих октетов смежных диапазонов, N (называемую также просто значением диапазона), вычтя значение интересующего октета из 256. В данном примере разница между диапазонами составляет:

N = 256 - 192 = 64.

3. Определить первый и последний адреса для каждой подсети, вначале установив значение интересующего октета, равное нулю, затем последовательно увеличивая это значение на n. Например, если базовым адресом сети является 172.16.0.0 с маской 255.255.192.0, то разница между диапазонами (значение диапазона) равна 64 и интересующим октетом является третий. Поэтому первая подсеть имеет диапазон адресов от 172.16.0.0 до 172.16.63.255, Вторая – от 172.16.64.0 до 172.16.127.255 и т.д.

4. Наконец, удалить первую и последнюю подсети, а также первый и последний IP -адреса для каждой подсети.

Существует рекомендация относительно порядка расположения битов при выделении подсетей. В документе RFC 1219 описано основное правило, которому желательно следовать при присвоении номеров подсетям и хостам. Номера подсетей назначают таким образом, чтобы старшие биты в номере подсети устанавливались первыми. Например, если поле номера подсети состоит из четырех битов, то первые несколько номеров подсетей должны быть следующими: 8 (1000 2), 4 (0100 2), 12 (1100 2), 2 (0010 2), 6 (0110 2) и т. д. Иными словами, единичные биты номеров подсетей рекомендуется устанавливать, начиная с крайней левой позиции. В то время как единичные биты номеров хостов рекомендуется устанавливать, начиная с крайней правой позиции.

Если следовать этому правилу, то на границе между номером подсети и номером хоста будут существовать нулевые биты. Это позволяет менять маску подсети без изменения IP -адреса, присвоенного хосту. Необходимость в изменении маски подсети может возникнуть при расширении числа хостов в каждой подсети, с учетом того, что планируемое число возможных подсетей обычно больше необходимого в настоящий момент. В таком случае существует возможность «заимствования» под номера подсетей некоторых битов из числа зарезер­вированных. Достоинством описанного правила является то, что администратору достаточно обновить маску подсети на каждом хосте и не нужно переконфигурировать IP -адреса хостов во всей организации. Изменение адресов потребует больших усилий от администратора, так как в данном случае может потребоваться перенастройка почтовых сервисов, статических таблиц маршрутизации и т. д.

На этом тема организации простых подсетей заканчивается. Теперь перейдем к более сложным темам: применение маски подсети переменной длины ( Variable Length Subnet Masking — VLSM ) и бесклассовая междоменная маршрутизация ( Classless InterDomain Routing — CIDR ).