Использование масок для
структуризации сети
Алгоритм маршрутизации
усложняется, когда в систему адресации
узлов вносятся дополнительные элементы -
маски. В чем же причина отказа от хорошо
себя зарекомендовавшего в течение многих
лет метода адресации, основанного на
классах? Таких причин несколько, и одна из
них - потребность в структуризации сетей.
Часто администраторы сетей
испытывают неудобства из-за того, что
количество централизованно выделенных им
номеров сетей недостаточно для того, чтобы
структурировать сеть надлежащим образом,
например разместить все слабо
взаимодействующие компьютеры по разным
сетям. В такой ситуации возможны два пути.
Первый из них связан с получением от
InterNIC или поставщика услуг Internet
дополнительных номеров сетей. Второй
способ, употребляющийся чаще, связан с
использованием технологии масок, которая
позволяет разделять одну сеть на несколько
сетей.
Допустим, администратор получил
в свое распоряжение адрес класса В:
129.44.0.0. Он может организовать сеть
с большим числом узлов, номера которых он
может брать из диапазона 0.0.0.1-0.0.255.254 (с
учетом того, что адреса из одних нулей и
одних единиц имеют специальное назначение
и не годятся для адресации узлов). Однако
ему не нужна одна большая
неструктурированная сеть,
производственная необходимость диктует
администратору другое решение, в
соответствии с которым сеть должна быть
разделена на три отдельных подсети, при
этом трафик в каждой подсети должен быть
надежно локализован. Это позволит легче
диагностировать сеть и проводить в каждой
из подсетей особую политику безопасности.
Посмотрим, как решается эта
проблема путем использования механизма
масок.
Итак, номер сети, который
администратор получил от поставщика услуг,
- 129.44.0.0 (10000001 00101100 00000000 00000000). В качестве
маски было выбрано значение 255.255.192.0
(111111111111111111000000 00000000). После наложения маски
на этот адрес число разрядов,
интерпретируемых как номер сети,
увеличилось с 16 (стандартная длина поля
номера сети для класса В) до 18 (число единиц
в маске), то есть администратор получил
возможность использовать для нумерации
подсетей два дополнительных бита. Это
позволяет ему сделать из одного,
централизованно заданного ему номера сети,
четыре:
129.44.0.0 (10000001 00101100 00000000 00000000)
129.44.64.0 (10000001 00101100 01000000 00000000)
129.44.128.0 (10000001 00101100 10000000 00000000)
129.44.192.0 (10000001 00101100 11000000 00000000)
Два дополнительных последних
бита в номере сети часто интерпретируются
как номера подсетей (subnet), и тогда четыре
перечисленных выше подсети имеют номера 0
(00), 1 (01), 2 (10) и 3 (11) соответственно.
ПРИМЕЧАНИЕ Некоторые
программные и аппаратные маршрутизаторы не
поддерживают номера подсетей, которые
состоят либо только из одних нулей, либо
только из одних единиц. Например, для
некоторых типов оборудования номер сети
129.44.0.0 с маской 255.255.192.0, использованный в
нашем примере, окажется недопустимым,
поскольку в этом случае разряды в поле
номера подсети имеют значение 00. По
аналогичным соображениям недопустимым
может оказаться и номер сети 129.44.192.0 с тем же
значением маски. Здесь номер подсети
состоит только из единиц. Однако более
современные маршрутизаторы свободны от
этих ограничений. Поэтому, принимая решение
об использовании механизма масок,
необходимо выяснить характеристики того
оборудования, которым вы располагаете,
чтобы соответствующим образом
сконфигурировать маршрутизаторы и
компьютеры сети.
В результате использования масок
была предложена следующая схема
распределения адресного пространства (рис. 5.15).
Рис. 5.15. Разделение адресного
пространства сети класса В 129.44.0.0 на четыре
равные части путем использования масок
одинаковой длины 255.255.192.0
Сеть, получившаяся в результате
проведенной структуризации, показана на
рис. 5.16. Весь трафик во внутреннюю сеть
129.44.0.0, направляемый из внешней сети,
поступает через маршрутизатор Ml. В целях
структуризации информационных потоков во
внутренней сети установлен дополнительный
маршрутизатор М2.
Рис. 5.16. Маршрутизация с
использованием масок одинаковой длины
Все узлы были распределены по
трем разным сетям, которым были присвоены
номера 129.44.0.0, 129.44.64.0 и 129.44.128.0 и маски
одинаковой длины - 255.255.192.0. Каждая из вновь
образованных сетей была подключена к
соответственно сконфигурированным портам
внутреннего маршрутизатора М2. Кроме того,
еще одна сеть (номер 129.44.192.0, маска 255.255.192.0)
была выделена для создания соединения
между внешним и внутренним
маршрутизаторами. Особо отметим, что в этой
сети для адресации узлов были заняты всего
два адреса 129.44.192.1 (порт маршрутизатора М2) и
129.44.192.2 (порт маршрутизатора Ml), еще два
адреса 129.44.192.0 и 129.44.192.255 являются особыми
адресами. Следовательно, огромное число
узлов (214 - 4) в этой подсети никак не
используются.
Извне сеть по-прежнему выглядит, как
единая сеть класса В, а на местном уровне
это полноценная составная сеть, в которую
входят три отдельные сети. Приходящий общий
трафик разделяется местным
маршрутизатором М2 между этими сетями в
соответствии с таблицей маршрутизации. (Заметим,
что разделение большой сети, имеющей один
адрес старшего класса, например А или В, с
помощью масок несет в себе еще одно
преимущество по сравнению с использованием
нескольких адресов стандартных классов для
сетей меньшего размера, например С. Оно
позволяет скрыть внутреннюю структуру сети
предприятия от внешнего наблюдения и тем
повысить ее безопасность.)
Рассмотрим, как изменяется
работа модуля IP, когда становится
необходимым учитывать наличие масок. Во-первых,
в каждой записи таблицы маршрутизации
появляется новое поле - поле маски.
Во-вторых, меняется алгоритм
определения маршрута по таблице
маршрутизации. После того как IP-адрес
извлекается из очередного полученного IP-пакета,
необходимо определить адрес следующего
маршрутизатора, на который надо передать
пакет с этим адресом. Модуль IP
последовательно просматривает все записи
таблицы маршрутизации. С каждой записью
производятся следующие действия.
Маска М, содержащаяся в данной
записи, накладывается на IP-адрес узла
назначения, извлеченный из пакета.
Полученное в результате число
является номером сети назначения
обрабатываемого пакета. Оно сравнивается с
номером сети, который помещен в данной
записи таблицы маршрутизации.
Если номера сетей совпадают, то пакет
передается маршрутизатору, адрес которого
помещен в соответствующем поле данной
записи.
Теперь рассмотрим этот алгоритм
на примере маршрутизации пакетов в сети,
изображенной на рис. 5.16. Все маршрутизаторы
внешней сети, встретив пакеты с адресами,
начинающимися с 129.44, интерпретируют их как
адреса класса В и направляют по маршрутам,
ведущим к маршрутизатору Ml. Маршрутизатор Ml
в свою очередь направляет весь входной
трафик сети 129.44.0.0 на маршрутизатор М2, а
именно на его порт 129.44.192.1.
Маршрутизатор М2 обрабатывает
все поступившие на него пакеты в
соответствии с таблицей маршрутизации (табл. 5.12).
Таблица 5.12. Таблица
маршрутизатора М2 в сети с масками
одинаковой длины
Первые четыре записи в таблице
соответствуют внутренним подсетям,
непосредственно подключенным к портам
маршрутизатора М2.
Запись 0.0.0.0 с маской 0.0.0.0
соответствует маршруту по умолчанию.
Действительно, любой адрес в пришедшем
пакете после наложения на него маски 0.0.0.0
даст адрес сети 0.0.0.0, что совпадает с
адресом, указанным в записи. Маршрутизатор
выполняет сравнение с адресом 0.0.0.0 в
последнюю очередь, в том случае когда
пришедший адрес не дал совпадения ни с
одной записью в таблице, отличающейся от
0.0.0.0. Записей с адресом 0.0.0.0 в таблице
маршрутизации может быть несколько. В этом
случае маршрутизатор передает пакет по
всем таким маршрутам.
Пусть, например, с маршрутизатора
Ml на порт 129.44.192.1 маршрутизатора М2
поступает пакет с адресом назначения
129.44.78.200. Модуль IP начинает последовательно
просматривать все строки таблицы, до тех
пор пока не найдет совпадения номера сети в
адресе назначения и в строке таблицы. Маска
из первой строки 255.255.192.0 накладывается на
адрес 129.44,78.200, в результате чего получается
номер сети 129.44.64.0.
В двоичном виде эта операция
выглядит следующим образом:
10000001.00101100.01001110.11001000
11111111.11111111.11000000.00000000
- - - - - - - - - - - - - - - - - - - - - - - - - - -
10000001.00101100.01000000.00000000
Полученный номер 129.44.64.0
сравнивается с номером сети в первой строке
таблицы 129.44.0.0. Поскольку они не совпадают,
то происходит переход к следующей строке.
Теперь извлекается маска из второй строки (в
данном случае она имеет такое же значение,
но в общем случае это совсем не обязательно)
и накладывается на адрес назначения пакета
129.44.78.200. Понятно, что из-за совпадения длины
масок будет получен тот же номер сети
129.44.64.0. Этот номер совпадает с номером сети
во второй строке таблицы, а значит, найден
маршрут для данного пакета - он должен быть
отправлен на порт маршрутизатора 129.44.64.7 в
сеть, непосредственно подключенную к
данному маршрутизатору.
Вот еще пример. IP-адрес
129.44.141.15(10000001 00101100 10001101 00001111), который при
использовании классов делится на номер
сети 129.44.0.0 и номер узла 0.0.141.15, теперь, при
использовании маски 255.255.192.0, будет
интерпретироваться как пара: 129.44.128.0 - номер
сети, 0.0.13.15 - номер узла.
|