русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Маски подсети переменной длины


Дата добавления: 2013-12-23; просмотров: 4544; Нарушение авторских прав


Рассмотрим сеть некоторой организации. У организации есть центральный офис, сеть которого разбита на две подсети из соображений фильтрации трафика и безопасности, эта сеть построена на маршрутизаторе R1 и содержит сети: сеть 1 и сеть 2. Кроме того, у предприятия есть два удаленных подразделения в других городах, связанных с центральным офисом глобальными линиями связи, например, выделенными цифровыми каналами.

В каждом удаленном подразделении по одной сети: сеть 3 и сеть 4. Кроме того, глобальные линии связи - тоже сети, сеть 5 и сеть 6.

 

 

В сети 1-50 узлов, в сети 2-40 узлов, в сети 3-12 узлов, в сети 4-10 узлов, в сетях 5 и 6 - очевидно по 2 узла. Компания имеет идентификатор класса C для адресации своих узлов: 210.10.10.0. Задача - используя данный идентификатор класса C адресовать свою сеть. Легко сосчитать, что все нам необходимо присвоить 116 IP адресов, а так как в нашем распоряжении таких адресов 254, то вроде как проблем быть не должно. Но!

Попробуем посчитать по изученной нами ранее схеме: всего нам необходимо 6 сетей, следовательно, на номер сети необходимо выделить 3 бита, тогда на номер узла останется 5 бит и максимальное количество узлов в каждой сети будет равно 30. А у нас есть сети размером 50 и 40 узлов. Если же разбивать таким образом, чтобы сети имели подходящий размер (62 узла), то на номер узла необходимо выделить 6 бит, тогда на номер сети останется 2 бита, что позволит адресовать 4 подсети, а в нашей сети 6 подсетей.

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



Для начала разделим нашу сеть на четыре подсети, таким образом, полученные сети будут иметь такой размер, который необходим для адресации самых крупных подсетей. Получим 4 подсети:

Первые две подсети можно использовать для адресации Сети 1 (50 узлов) и Сети 2 (40 узлов). У нас останется неиспользованными еще две подсети (или сети). Возникает вопрос: можно ли эти подсети в свою очередь разделить на подсети с помощью маски? Да, конечно можно, рассматриваем, как это делается.

Рассмотрим подсеть 210.10.10.128/255.255.255.192.

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

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

Разделим данную сеть на подсети таким образом, чтобы получились сети размером, подходящим для адресации сетей 3 и 4 в которых 10 и 12 узлов. Для этого необходимо оставить на номер узла 4 бита. Пока в нашей сети 210.10.10.128/255.255.255.192 6 бит адресуют узел, нам достаточно на номер узла оставить 4 бита, следовательно, на номер подсети используем 2 бита, т.е. делим свою сеть на 4 части:

 

Тогда получим четыре подсети

Таким образом, мы разбили свою подсеть 210.10.10.128/255.255.255.192 на четыре подсети.

А исходную сеть 210.10.10.0/255.255.255.0 мы пока разбили на 7 частей:

Представим то, что мы сделали в графической форме.

Исходная сеть имеет вид прямоугольника:

Мы разделили ее на 4 части

Далее мы разделили третью подсеть на четыре части

В принципе задачу уже можно считать решенной: мы получили 3 сети размером по 62 узла и 4 сети размером по 14 узлов, но если уже говорить об оптимальном расходовании адресного пространства (а вдруг сеть компании будет продолжать развиваться), то следует выполнить деление на подсети еще более тонко. Заполним на диаграмме те части, которые можно уже сейчас непосредственно эффективно использовать:

Останется еще 3 диапазона, размерами 14, 14, 62 узла. Нам же еще необходимо адресовать две сети размером по два узла каждая, разумеется, для этого неэффективно использовать сети размером в 14 узлов. Разделим одну из подсетей размером 14 узлов на 4 части: (можно поделить сначала пополам, а затем половинку еще раз пополам):

Найдем адреса этих частей:

Тогда получим четыре подсети:

Итого, мы разделили исходную сеть класса C (210.10.10.0/255.255.255.0) на 10 частей, 3 части по 62 узла, 3 части по 14 узлов, и 4 части по 2 узла. Запишем номера этих сетей с масками подряд:

Какие из этих номеров сетей можно назначить сетям в нашей задаче. Вариантов может быть несколько, вот один из них:

Разобранная нами техника называется VLSM (Variable Length Subnet Mask - Маски подсети переменной длины).

Ниже приводятся задания для самостоятельной работы:

 

 

 

 

 

Итак, мы рассмотрели приемы работы с масками, записанными в точечно-десятичной форме, но существует еще одна форма записи масок - вида /XY.

Запись маски в точечно-десятичной форме является достаточно громоздкой, для ускорения записи используется форма вида: /XY, где XY – количество единиц в маске.

Рассмотрим соответствие первой (старой) и второй (новой) записи масок:

Синтаксис записи маски определяется операционной системой, которую мы конфигурируем.

Например, в Windows практически никогда маска не записывается в новом виде, а в многих аппаратных маршрутизаторах применяется именно такая запись.

Обе формы записи маски несут одинаковую информацию и эквивалентны по смыслу, но различаются лишь видом записи и ничем более.

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

 

 

Так как, нельзя выделить подсети любого размера, а лишь равные натуральным степеням двойки, (узлов - на два меньше, из-за номера сети и широковещания, но понимая под размером сети количество потребляемых сетью адресов, удобно как раз говорить о натуральных степенях двойки), то нам необходимо выделить части следующих размеров:

1 часть из 128 адресов

1 часть из 64 адресов

3 части из 16 адресов

1 часть из 8 адресов

2 части из 4 адресов.

Будем выделять части с начала адресного диапазона, начиная с наиболее крупных частей. Очевидно, что первая часть будет иметь номер подсети 222.222.222.0. Сколько в ней должно быть адресов? 128. Следовательно, необходимо применить маску на 1 длиннее стандартной маски класса C (которая записывается как /24), т.е. /25. Так как в диапазон адресов попадает 128 адресов, то это адреса с последним байтом от 0 до 127, а адрес 222.222.222.128 - первый не попадающий в данный диапазон.

Итак, первая сеть имеет номер 222.222.222.0/25, первый свободный адрес, он же номер будущей сети 222.222.222.128. Далее нам необходимо выделить адресный диапазон размером 64 адреса.

Его адрес сети - 222.222.222.128, маска, очевидно, - /26. Раз в этом диапазоне 64 адреса, а начинается он с 128 в последнем байте, то в этот диапазон попадают числа с 128 до 191 (в последнем байте), а адрес 222.222.222.192, первый, не попадающий в этот диапазон, и будет номером следующего диапазона адресов (сети).

Итак, вторая сеть: 222.222.222.128/26, первый свободный адрес -222.222.222.192. От этого адреса необходимо выделить кусок размером 16 адресов. Очевидно, маска для этого должна быть /28, занятые адреса 192+16-1=207, итого: номер выделенной сети 222.222.222.192/28, первый свободный адрес - 222.222.222.208.

От него выделяем еще один диапазон размером в шестнадцать адресов, получаем 222.222.222.208/28, первый незанятый адрес (208+16=224) 222.222.222.224.

От него выделяем последний диапазон на 16 адресов: 222.222.222.224/28, первый незанятый адрес (224+16=240) 222.222.222.240.

От него выделяем диапазон размером 8 адресов, 222.222.222.240/29, первый незанятый адрес 222.222.222.248.

От него выделяем диапазон на 4 адреса, получаем 222.222.222.248/30, первый незанятый адрес 222.222.222.252.

От него еще один диапазон из 4-х адресов, получаем 222.222.222.252/30, первый незанятый адрес 222.222.222.256.

Видно, что диапазон предоставленных в наше распоряжения адресов закончился.

Удобно записывать в виде таблицы:

 

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

Удобно записывать результаты в виде таблицы:

Почему необходимо выделять сетям номера в порядке убывания размеров сетей? Это связано с тем, что не от любого адреса можно выделить сеть большого размера, например, если сначала из сети класса C 222.222.222.0 выделить подсеть размером 64 узла, то от того адреса, к которому мы придем 222.222.222.64 нельзя выделить сеть размером 128 узлов: ее можно выделить либо от адреса 222.222.222.0 либо от адреса 222.222.222.128.

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

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



<== предыдущая лекция | следующая лекция ==>
Настройка IP адреса и маски в MS Windows | Лекция 5. ПОНЯТИЕ АЛГОРИТМА И ЕГО СВОЙСТВА.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.