Как и в любой сложной системе, в сети Internet время от времени проявляются мелкие недоработки. Особенно остро на настоящий момент стоит проблема дефицита адресного пространства.


СХЕМА АДРЕСАЦИЯ
А ЕСЛИ КЛАССЫ СПРЯТАТЬ ПОД МАСКОЙ?

Межсетевая схема адресации протокола IP описана в документах RFC 990 и RFC 997. При разработке стека протоколов TCP/IP рассматривался целый ряд методов идентификации конечных устройств в сети. Окончательным стало решение присваивать адреса как сети, так и устройствам в этой сети. Основными доводами в пользу такого подхода стали: широкий диапазон назначений номеров сетей и устройств в них, а также возможность реализации маршрутизации. При этом, в целях повышения эффективности маршрутизации, адреса должны назначаться упорядоченным образом.

СХЕМА АДРЕСАЦИЯ

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

Каждый компьютер в сетях, построенных на базе протокола IP, имеет адреса трех уровней:

  1. физический адрес узла, определяемый технологией, с помощью которой построена данная сеть. Для узлов, работающих в локальных сетях Ethernet, - это MAC-адрес сетевой платы или порта маршрутизатора. Данные адреса назначаются производителями оборудования. Формат физического адреса имеет шесть байтов: старшие три байта - идентификатор компании-производителя, младшие три байта уникальны и назначаются самим производителем;
  2. четырехбайтный IP-адрес. Этот адрес используется на сетевом уровне эталонной модели OSI;
  3. символьный идентификатор - имя. Данный идентификатор может назначаться администратором произвольно и служить, например, для упрощения взаимодействия с удаленным хостом.

Когда протокол IP был стандартизирован в сентябре 1981 года, его спецификация требовала, чтобы каждое устройство сети имело уникальный 32-разрядный адрес. Данный адрес разбивается на две части. Первая часть адреса идентифицирует сеть, в которой располагается устройство; вторая - само устройство. Такая схема соответствует двухуровневой адресной иерархии, показанной на Рисунке 1.

Picture_1

Рисунок 1.
Двухуровневая адресная иерархия.

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

Для обеспечения гибкости в назначении адресов компьютерным сетям разработчики определили, что адресное пространство протокола IP должно быть разделено на три основных класса - A, B и C. Каждый из этих основных классов фиксирует границу между сетевым префиксом и номером хоста в разных точках 32-разрядного адреса. Форматы этих основных классов приведены на Рисунке 2.

Picture_2(1x1)

Рисунок 2.
Основные классы IP-адресов.

Одно из основных достоинств использования классов в том, что каждый адрес содержит ключ для идентификации границы между сетевым префиксом и номером хоста. Например, если старшие два бита адреса равны "10", то точка раздела находится между 15 и 16 битом.

Недостатком такого метода является необходимость изменения адреса сети при превышении в сетях класса С числа устройств в 255, например на адреса класса B. Изменение сетевых адресов может отнять много времени и усилий у администратора по отладке сети. Однако, из-за наличия четких границ между классами адресов, администраторы сетей оказываются не в состоянии спланировать плавный переход на случай необходимости изменения адресов. Вместо этого в какой-то момент сетевой адрес отменяется, одновременно изменяются все адреса устройств в данной сети, а затем сеть вновь включается в работу. Кроме того, введение классов адресов ограничивает число реально используемых индивидуальных адресов по сравнению с теоретически возможным. В текущей версии протокола IP (версия 4) общее число адресов составляет теоретически 232 (4 294 967 296), так как протокол предусматривает использование 32 бит для задания адреса. Использование части бит в служебных целях уменьшает доступное количество индивидуальных адресов.

Адрес класса A предназначен для идентификации устройств в крупных сетях. Каждый адрес класса A имеет 8-разрядный префикс сети, в котором старший бит равен "0", а следующие семь бит используются для определения номера сети. Для задания номера хоста служат оставшиеся 24 бит. В настоящий момент все адреса класса А уже выделены, так что получить его вряд ли возможно. Сети класса А так же обозначаются, как "/8", поскольку адреса этого класса имеют 8-разрядный сетевой префикс. Максимальное число сетей класса A составляет 126 (27-2). Каждая сеть данного класса поддерживает максимум 16 777 214 (224-2) хостов. Так как адресный блок класса A может содержать максимум 231 (2 147 483 648) индивидуальных адреса, а в протоколе IP версии 4 может поддерживаться максимум 232 адреса, то адресное пространство класса A занимает 50% общего адресного пространства в протоколе IP.

Адрес класса B предназначен для сетей среднего размера, например в институте или крупной организации. Каждая сеть класса B имеет 16-разрядный префикс сети, в котором два старших бита равны "10", а следующие 14 бит используются для определения номера сети. Для задания номера хоста служат оставшиеся 16 бит. Сети класса В так же обозначаются, как "/16", поскольку адреса этого класса имеют 16-раз-рядный сетевой префикс. Максимально возможное число сетей класса B составляет 16 384 (214). Каждая сеть этого класса поддерживает максимум 65 534 (216-2) хостов. Так как весь адресный блок класса B содержит максимум 230 (1 073 741 824) индивидуальных адресов, он занимает 25% общего адресного пространства в протоколе IP.

Адреса класса C предназначены для сети с небольшим числом компьютеров. Каждая сеть класса C имеет 24-разрядный префикс сети, в котором три старших бита равны "110", а следующие 21 бит используются для определения номера сети. Для задания номера хоста служат оставшиеся 8 бит. Сети класса C так же обозначаются, как "/24", поскольку адреса этого класса имеют 24-разрядный сетевой префикс. Максимально возможное число сетей класса С составляет 2 097 152 (221). Каждая сеть этого класса поддерживает максимум 254 (28-2) хоста. Так как весь адресный блок класса С может содержать максимум 229 (536 870 912) индивидуальных адреса, он занимает 12,5% общего адресного пространства в протоколе IP.

Помимо этих трех наиболее популярных классов адресов существует еще два дополнительных класса - D и E. В классе D старшие четыре бита равны "1110"; этот класс используется для поддержки многоадресной передачи данных. В классе E старшие четыре бита равны "1111", и этот класс зарезервирован для экспериментального использования.

Для удобства восприятия адресов в технической литературе, в прикладных программах и т. д., IP-адреса обычно записываются в виде четырех десятичных чисел, разделенных точками, причем каждое из этих чисел представляет значение одного октета IP-адреса. (один октет соответствует 8 бит адреса, т. е. можно сказать, что весь IP-адрес состоит из четырех октетов.) На Рисунке 3 показано, как адрес класса B записывается в точечно-десятичной нотации.

Picture_2

Рисунок 3.
Пример записи IP-адреса в точечно-десятичной нотации.

Ниже приведены диапазоны десятичных значений трех классов адресов, где запись XXX представляет поле адреса хоста.

Диапазоны значений адресов трех классов:

  • для класса А: 1.XXX.XXX.XXX - 126.XXX.XXX.XXX
  • для класса B: 128.0.XXX.XXX - 191.255.XXX.XXX
  • для класса C: 192.0.0.XXX - 223.255.255.XXX

Некоторые IP-адреса зарезервированы для определенных целей и не могут присваиваться конечным устройствам в сети. В Таблице 1 приведены зарезервированные IP-адреса.

Таблица 1 - ЗАРЕЗЕРВИРОВАННЫЕ IP-АДРЕСА
Префикс сети Номер хоста Что означает
Все биты установлены в "0" Данное устройство
Номер сети Все биты номера равны 0 Данная IP-сеть
Все биты равны 0 Номер хоста Устройство в данной IP-сети
Все биты установлены в "1" Все устройства в данной IP-сети
Номер сети Все биты номера равны 1 Все устройства в указанной сети
127 (десятичное) Что-нибудь (обычно 1) Адрес обратной связи

Как видно из таблицы 1, они характеризуют данное устройство, если все биты равны нулю, или данную сеть, если все биты номера хоста равны нулю. Адреса, все биты которых равны "1", используются при широковещательной передаче информации. Сетевой адрес класса A - 127.0.0.0 - зарезервирован для обратной связи (lookback) и введен для тестирования взаимодействия между процессами на одной машине. Когда приложение использует адрес обратной связи, стек TCP/IP возвращает эти данные приложению, ничего не посылая по сети. Данный адрес можно к тому же используется для взаимодействия отдельных приложений в пределах одной машины, поэтому в сетях, построенных на базе протокола IP, запрещается присваивать устройствам IP-адреса, начинающиеся с 127.

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

При направленном широковещании адрес получателя содержит корректный номер сети и номер хоста, все биты которого установлены в нули или единицы. Например, адреса 185.100.255.255 и 185.100.0.0 будут рассматриваться как адреса направленного широковещания для сети 185.100.ххх.ххх класса B. Таким образом, направленные широковещательные адреса обеспечивают мощный механизм, позволяющий удаленному устройству посылать одну IP-датаграмму, которая будет распространена в режиме широковещания в указанной сети.

Picture_4

Рисунок 4.
Пример широковещания в сети.

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

При ограниченном широковещании биты номера сети и номера хоста состоят из всех нулей или единиц. Таким образом, датаграмма с адресом получателя 255.255.255.255 или 0.0.0.0 будет рассылаться в пределах данной сети. На Рисунке 4 показан пример сетей, связанных маршрутизаторами. В Таблице 2 приведен список получателей широковещательных датаграмм, отправляемых хостом A.

Таблица 2 - ПОЛУЧАТЕЛИ ШИРОКОВЕЩАТЕЛЬНОЙ ДАТАГРАММЫ, ПОСЫЛАЕМОЙ ХОСТОМ А
Отправитель IP-адрес получателя Получатели
Хост А 255.255.255.255 Хост А, Б и интерфейс 1 (И1) маршрутизатора М1
Хост А 128.1.255.255 Хост А, Б и И1 М1
Хост А 128.2.255.255 Хост С, В, Г, И2 М1 и И1 М2
Хост А 128.3.255.255 Хост Д, Е и И2 М2

Прежде чем использовать в сети протокол TCP/IP, необходимо получить один или несколько официальных сетевых номеров. Чтобы гарантировать их уникальность, все адреса назначаются одной организацией - Internet Network Information Center (InterNIC). До апреля 1993 года назначение IP-адресов осуществлялось организацией Network Information Center (NIC), которая в настоящее время выполняет запросы только для сетей Defense Data Network (DDN), иначе говоря, для военных целей. InterNIC назначает только сетевую часть адреса или сетевой префикс, оставляя ответственность за назначения номеров хостов в этой сети организации, запросившей данный адрес.

А ЕСЛИ КЛАССЫ СПРЯТАТЬ ПОД МАСКОЙ?

В 1985 году документом RFC 950 определен стандартный процесс поддержки формирования подсетей или разделения единственного номера сети классов А, B и C на меньшие части. Формирование подсетей было введено для разрешения следующих проблем:

  • разбухания таблиц маршрутизации в маршрутизаторов Internet;
  • дефицита номеров сетей при необходимости расширения их числа.

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

Picture_5

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

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

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

Рисунок 6 показывает корпоративную распределенную сеть, состоящую из нескольких логических сетей, использующих концепцию подсетей внутри одного адреса класса B. Граничный маршрутизатор получает весь трафик из Internet, адресованный сети 130.5.0.0, и передает его внутренним подсетям, основываясь на информации, содержащейся в третьем октете.

Picture_6

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

Формирование подсетей внутри частной сети организации позволяет извлечь следующие преимущества:

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

Изменение топологии частной сети не влияет на таблицы маршрутизации в сети Internet, поскольку маршрутизаторы в Internet не имеют маршрутов в индивидуальные подсети организации - они знают только маршрут к самой сети.

Если маршрутизаторы в Internet используют только сетевой префикс адреса получателя для передачи трафика в совокупность подсетей, то маршрутизаторы внутри этой совокупности анализируют расширенный сетевой префикс для передачи трафика индивидуальным подсетям. Расширенный сетевой префикс состоит из префикса сети и номера подсети (см. Рисунок 7).

Picture_7

Рисунок 7.
Расширенный сетевой префикс.

Расширенный сетевой префикс можно идентифицировать с помощью маски подсети (subnet mask). Маска подсети - это число, двоичная запись которого содержит единицы в разрядах, интерпретируемых как номер сети. Маска подсети позволяет провести четкую границу между двумя частями IP-адреса. Одна часть идентифицирует номер подсети, вторая - предназначается для идентификации хостов в этой подсети.

Хосты и маршрутизаторы используют старшие биты IP-адреса для определения его класса. После того как класс определен, хост может легко найти границу между битами номера сети и номера хоста в этой сети. Однако класс адреса ничем не может помочь в определении номера подсети. Для решения данного вопроса служит 32-разрядная маска подсети, позволяющая однозначно определить требуемую границу. Для стандартных классов сетей маски имеют следующие значения:

  • 255.0.0.0 - маска для сети класса А;
  • 255.255.0.0 - маска для сети класса B;
  • 255.255.255.0 - маска для сети класса C.

Например, если в случае адреса класса B 130.5.0.0 сетевой администратор хочет использовать весь третий октет для представления номера подсети, ему необходимо указать маску подсети 255.255.255.0. Биты в маске подсети имеют взаимнооднозначное соответствие. Они должны быть заданы равными единице, если система проверки адреса должна рассматривать соответствующий бит в IP-адресе как часть расширенного сетевого префикса. Иными словами, после определения класса IP-адреса любой бит в части номера хоста используется для идентификации номера подсети, если бит в соответствующей позиции в маске подсети равен единице. Оставшаяся часть номера хоста - ей отвечают нулевые биты маски подсети - служит для задания номера хоста. В Таблице 3 приведен пример IP-адреса класса B с соответствующей маской подсети.

Таблица 3 - ПРИМЕР ИСПОЛЬЗОВАНИЯ МАСКИ ПОДСЕТИ
Сетевой префикс Номер подсети Номер хоста
IP-адрес 130.5.5.25 10000010. 00000101. 00000101. 00011001
Маска подсети 255.255.255.0 11111111. 11111111. 11111111. 00000000
Расширенный сетевой префикс

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

Таблица 4 - ПРИМЕР ИСПОЛЬЗОВАНИЯ ДЛИНЫ РАСШИРЕННОГО СЕТЕВОГО ПРЕФИКСА
Сетевой префикс Номер подсети Номер хоста
130.5.5.25 10000010. 00000101. 00000101. 00011001
255.255.255.0 11111111. 11111111. 11111111. 00000000
Или эквивалентная запись
24-битовый расширенный сетевой префикс Номер хоста
130.5.5.25 /24 10000010. 00000101. 00000101. 00011001

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

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

  1. Сколько подсетей необходимо организации сегодня?
  2. Сколько подсетей может потребоваться организации в будущем?
  3. Сколько хостов существует в наибольшей подсети организации сегодня?
  4. Сколько хостов может понадобиться в наибольшей подсети организации в будущем?

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

Рассмотрим пример создания подсетей. Предположим, что организация получила сеть класса C 193.1.1.0, и ей необходимо сформировать шесть подсетей. Наибольшая подсеть должна поддерживать 25 хостов. На первом шаге определяется число битов, требуемых для определения необходимых шести подсетей. Поскольку найти число, при котором два в какой-либо степени равнялось шести, невозможно, то в данном примере администратор должен определить восемь подсетей (23 = 8), т. е. для выделения подсетей будут использованы три бита из выделенного адреса.

В данном примере организации выделен адрес класса С, с записью расширенного сетевого префикса как /24, а значит, полученный после выделения подсетей, расширенный сетевой префикс будет записан как /27 (24 + 3 = 27). Этот расширенный сетевой префикс имеет эквивалентное значение маски подсети 255.255.255.224 как показано в Таблице 5.

Таблица 5 - ОПРЕДЕЛЕНИЕ МАСКИ ПОДСЕТИ В ОРГАНИЗАЦИИ
Сетевой префикс Байт для задания номеров хостов в данной сети
Байты для задания номера сети Биты для номеров подсетей Биты для номеров хостов
Адрес 193.1.1.0 11000001. 00000001. 00000001. 000 00000
Маска подсети 255.255.255.224 11111111. 11111111. 11111111. 111 00000
Или эквивалентная запись
Адрес 193.1.1.0 /27 11000001.00000001.00000001.000 00000

Необходимо отметить, что расположение номера подсети сразу после сетевого префикса необязательно, - администратор может задавать биты в маске подсети независимо от остальной части адреса. В примере с адресом 193.1.1.0 /27 четвертый байт маски подсети вместо (111000002) может быть, например, задан равным (000111002). Однако на практике в большинстве случаев так не поступают.

Используемый 27-разрядный расширенный сетевой префикс оставляет 5 бит для задания номеров хостов в каждой из подсетей. Это означает, что в каждой подсети может быть определено до 32 (25 = 32) индивидуальных адресов хостов. Однако адреса, у которых все биты равны или нулю, или единице, являются зарезервированными, так что общее число адресов хостов в каждой подсети становится равным 30 (25 - 2 = 30).

Для определения какой-либо подсети, сетевой администратор помещает двоичное представление номера этой подсети (а в нашем случае для восьми подсетей это может быть число от 0 до 7) в битовое поле номера подсети. Например, для определения подсети #4 администратор просто помещает двоичное представление числа 4 (1002) в трехбитовое поле номера подсети. В Таблице 6 приведены все восемь возможных вариантов подсетей для рассматриваемого примера.

Таблица 6 - ВОЗМОЖНЫЕ ВАРИАНТЫ ПОДСЕТЕЙ
Точечно-десятичная нотация Двоичное представление адреса
Базовая сеть 193.1.1.0 /24 11000001.00000001.00000001.00000000
Подсеть #0 193.1.1.0 /27 11000001.00000001.00000001.00000000
Подсеть #1 193.1.1.32 /27 11000001.00000001.00000001.00100000
Подсеть #2 193.1.1.64 /27 11000001.00000001.00000001.01000000
Подсеть #3 193.1.1.96 /27 11000001.00000001.00000001.01100000
Подсеть #4 193.1.1.128 /27 11000001.00000001.00000001.10000000
Подсеть #5 193.1.1.160 /27 11000001.00000001.00000001.10100000
Подсеть #6 193.1.1.192 /27 11000001.00000001.00000001.11000000
Подсеть #7 193.1.1.224 /27 11000001.00000001.00000001.11100000

Самый простой способ проверить, что все подсети корректно определены, - это проконтролировать кратность всех десятичных номеров подсетей номеру подсети #1. В данном примере все номера подсетей кратны 32.

Опубликованная в документе RFC 950 схема введения подсетей запрещала использование номера подсетей, у которых все биты равны единицам или нулям. Причиной такого ограничения стала необходимость в устранении возможных проблем, связанных с работой протоколов маршрутизации, которые не передают в своих служебных сообщениях ни маски подсети, ни длины расширенного сетевого префикса. Например, протокол маршрутизации RIP версии 1 рассматривает маршруты в разные подсети с адресами 193.1.1.0 /27 и 193.1.1.0 /24 как идентичные. Иными словами, без указания маски подсети маршрутизатор не делает различий между маршрутом в одну подсеть и во всю сеть. Аналогичная проблема, но только с определением направления широковещания возникает и в случае всех битов, равных единице. Один и тот же адрес 193.1.1.255 является широковещательным для всей сети 193.1.1.0 /24 и для подсети 193.1.1.224 /27. В Таблице 7 отображены обе рассмотренные ситуации.

Таблица 7 - ИДЕНТИЧНЫЕ МАРШРУТЫ И ШИРОКОВЕЩАТЕЛЬНЫЕ АДРЕСА
Маршруты в Сети 24-битовый расширенный сетевой префикс
193.1.1.0 /24 11000001. 00000001. 00000001. 00000000
27-битовый расширенный сетевой префикс
193.1.1.0 /27 11000001. 00000001. 00000001.000 00000
Широковещательные адреса 24-битовый расширенный сетевой префикс
193.1.1.0 /24 11000001. 00000001. 00000001. 11111111
27-битовый расширенный сетевой префикс
193.1.1.224 /27 11000001. 00000001. 00000001.111 11111

С разработкой протоколов маршрутизации, передающих маску подсети (OSPF, IS-IS) с каждым рекламируемым маршрутом, подсети, все биты номера которых равны единице и нулю, могут использоваться, вопреки документу RFC 950. В результате производители позволяют настраивать подсети с такими номерами на портах своих маршрутизаторов. При этом, однако, следует учитывать, что, во-первых, используемые в корпоративной сети протоколы маршрутизации, относящиеся к классу IGP, должны поддерживать маску подсети или расширенный сетевой префикс и, во-вторых, все маршруты в сети должны понимать номера подсетей со всеми единичными и нулевыми битами. Кроме того, иногда приходится принимать в расчет номер версии программного обеспечения маршрутизатора. Например, маршрутизатор фирмы 3Com NETBuilder II обеспечивает полную поддержку таких подсетей и их корректную маршрутизацию в версии 8.3.0.2.

В примере (Таблица 5) остается 5 бит для задания адресов хостов в каждой подсети. В результате каждая подсеть может содержать блок из 30 адресов хостов (25 - 2 = 30), которые нумеруются от 1 до 30. Для определения адреса хоста N в сети, администратор помещает двоичное представление числа N в поле номера хоста. Например, для определения адреса, который необходимо присвоить хосту #28 в подсети #2, администратор просто помещает двоичное представление 28 (11102) в пятибитовое поле подсети #2. В Таблице 8 приведены некоторые возможные комбинации номеров хостов в подсети #2.

Таблица 8 - ВОЗМОЖНЫЕ ВАРИАНТЫ АДРЕСОВ ХОСТОВ В ПОДСЕТИ #2
Точечно-десятичная нотация Двоичное представление
Подсеть #2 193.1.1.64 /27 11000001.00000001.00000001.01000000
Хост #1 193.1.1.65 /27 11000001.00000001.00000001.01000001
Хост #2 193.1.1.66 /27 11000001.00000001.00000001.01000010
Хост #3 193.1.1.67 /27 11000001.00000001.00000001.01000011
...
Хост #28 193.1.1.92 /27 11000001.00000001.00000001.01011100
Хост #29 193.1.1.93 /27 11000001.00000001.00000001.01011101
Хост #30 193.1.1.94 /27 11000001.00000001.00000001.01011110
Широковещательный адрес для подсети #2
193.1.1.95 11000001.00000001.00000001.01011111

Проверить корректность широковещательного адреса для определенной подсети можно с помощью следующего простого правила. Во всех случаях широковещательный адрес для подсети #N на единицу меньше базового адреса для подсети #(N+1). Например, широковещательный адрес для подсети #2 (193.1.1.95) на единицу меньше базового адреса подсети #3 (193.1.1.96).

Перед передачей датаграммы хосту необходимо определить следующее.

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

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

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

При присваивании номеров подсетям и хостам администратор должен следовать одному основному правилу, описанному в документе RFC 1219: номера подсетей назначают таким образом, чтобы старшие биты в номере подсети задавались первыми. Например, если поле номера подсети состоит из четырех бит, то первые несколько номеров подсетей должны быть следующими: 8 (1002), 4 (0102), 12 (1102), 2 (0012), 6 (0112) и т. д. Иными словами, единичные биты номеров подсетей рекомендуется задавать начиная с крайне левой позиции, а единичные биты номеров хостов - с крайне правой позиции (см. Таблицу 9).

Таблица 9 - ПРИМЕР ПРИСВОЕНИЯ НОМЕРОВ ПОДСЕТЕЙ И ХОСТОВ
Сетевой префикс Номер подсети Номер хоста
11111111. 11111111. 4 бит Оставшиеся 12 бит
Рекомендуемая схема присвоения адресов
Биты подсетей Биты хостов
128 = 1000 0000. 0000 0001 = 1
64 = 0100 0000. 0000 0010 = 2
192 = 1100 0000. 0000 0011 = 3
32 = 0010 0000. 0000 0100 = 4
160 = 1010 0000. 0000 0101 = 5
96 = 0110 0000. 0000 0110 = 6
224 = 1110 0000. 0000 0111 = 7

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

В сети, которая была разбита на подсети, можно использовать два типа широковещательной передачи информации: направленное и ограниченное. Направленное широковещание служит для передачи датаграммы всем хостам в определенной подсети. Для посылки датаграммы всем хостам во всех подсетях необходимо использовать ограниченное широковещание, с адресом 255.255.255.255. Однако необходимо учесть, что маршрутизаторы не пропускают датаграммы с таким адресом. Среды с подсетями накладывают одно ограничение на направленное широковещание. Выделенные для формирования номеров подсетей биты обычно являются частью поля номера хоста и не могут быть все одновременно заданы равными нулю или единице. Например, в случае адреса класса B, в котором третий байт выделен под номера подсетей - 128.1.<Номер подсети>.<Номер хоста>, адрес направленного широковещания не может быть равным 128.1.255.255, 128.1.0.255, 128.1.255.0 или 128.1.0.0.

Picture_8

Рисунок 8.
Пример широковещания в сети.

На Рисунке 8 показан пример сетей, связанных маршрутизаторами. Каждый из маршрутизаторов содержит маршруты во все подсети в данной топологии. Маска подсети равна 255.255.255.0. В таблице 10 приведен список получателей широковещательных датаграмм, отправляемых хостом A.

Таблица 10 - ПОЛУЧАТЕЛИ ШИРОКОВЕЩАТЕЛЬНОЙ ДАТАГРАММЫ, ПОСЫЛАЕМОЙ ХОСТОМ А
Отправитель IP-адрес получателя Получатели
Хост А 255.255.255.255 Хост Б и порт 1 (П1) маршрутизатора М1
Хост А 128.1.1.255 Хост Б и П1 М1
Хост А 128.1.2.255 Хост В, Г, П2 М1 и П1 М2
Хост А 128.1.3.255 Хост Д, Е и П2 М2


С Максимом Кульгиным можно связаться по адресу: mk@mail.admiral.ru.