69576

Работа ARP протокола

Практическая работа

Информатика, кибернетика и программирование

При сканировании сети так же была определена система взаимодействия по протоколу IP узлов находящихся в одной либо разных сетях суть которой состоит в следующем: при взаимодействии между узлами одной IP сети протокол RP используется станцией отправителем для разрешения МАС...

Русский

2014-10-07

659 KB

2 чел.

В ходе предыдущего урока, при рассмотрении внутрисетевых взаимодействий на канальном и сетевом уровнях, было установлено, что протокол ARP используется операционной системой узла или шлюза для обеспечения взаимодействия на канальном уровне при передаче пакета по средствам IP протокола. Работа ARP протокола заключается в установлении соответствия между IP адресом узла подключенного в данный широковещательный сегмент и МАС адресом интерфейса по средствам которого подключение произведено. Так же, стало известно, что данные,  полученные в результате работы ARP хранятся в виде специальной таблицы соответствия. Записи в таблице могут быть динамическими и статическими. Динамические записи – результат работы ARP - хранятся заданное время после чего уничтожаются. Статические записи создаются в ручную администратором либо при помощи скриптов, и сохраняются до выключения интерфейса (например при перезагрузке операционной системы).

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

  •  при взаимодействии между узлами одной IP сети, протокол ARP используется станцией отправителем для разрешения МАС адреса станции получателя IP пакета.
  •  при взаимодействии между узлами в разных IP сетях, протокол ARP используется станцией отправителем для разрешения МАС адреса интерфейса шлюза.

К неосновным обязанностям технологии ARP относится:

  •  ProxyARP – служба маскирующая интерфейс шлюза под станцию получателя IP пакета, для обеспечения взаимодействия в сетях содержащих как узлы поддерживающие RFC 950 так и узлы поддерживающие только RFC 761.
  •  Протокол RARP, используемый ранее для автоматической конфигурации IP адресов узлов по МАС адресам их интерфейсов.

Рассмотрим еще одно применение протокола ARP. Предположим, узел стартует в IP сети, имея некоторый адрес. Возможна ситуация, когда данный адрес по недосмотру администратора или по каким либо другим причинам уже используется какой либо станцией сети. Тогда, если вновь стартующая станция станет использовать этот же самый адрес, то сетевые коммуникации будут тем или иным образом нарушены, что именно произойдет, мы рассмотрим чуть позже, пока же попробуем разобраться, как можно исключить возможность дублирования адресов при старте стека TCP/IP. Для решения этой задачи применяют достаточно тривиальную технику: станция, стартуя, посылает несколько (для операционной системы Windows – 3) ARP запроса, причем в качестве МАС адреса отправителя ставит свой МАС адрес, в качестве IP адреса отправителя ставит тот адрес, которым собирается пользоваться,  в качестве искомого IP адреса тоже ставит тот адрес, который собирается использоваться, а поле искомого МАС адреса оставляет пустым. Фактически, на этот ARP запрос может ответить только та станция, которая уже использует в сети тот же самый IP адрес, что и собирается использовать стартующая станция. Если на такие ARP запросы не поступит ответа в течение некоторого времени, это значит, что такой адрес в сети не используется, и станция может его назначить себе и пользоваться им, если же ответы придут, то это означает, что данный IP адрес занят и пользоваться им нельзя. Рассмотрим работу данного механизма следующим образом: запустим анализатор на одном из узлов, перезагрузим другой узел (желательно, чтобы в сети никого другого не было), при этом, стартующая станция рассылает три ARP запроса и лишь затем начинает использовать желаемый адрес. На приведенном рисунке отражена такая ситуация на экране анализатора.

Смена IP адреса адаптера (без перезагрузки), так же приводит к посылке трех ARP запросов, и лишь после проверки интерфейс получает новый адрес. Обратите внимание -  с момента нажатия «OK» до момента работы с новым адресом проходит заметное время. Рассмотрим – почему.

Почему посылается не один ARP запрос, а несколько, в данном случае 3? Это связано с ненадежностью сети Ethernet, в которой вполне могут теряться пакеты, и поэтому, так как никакого другого способа гарантировать доставку ARP запросов потенциальному владельцу адреса, применяет отправка нескольких пакетов. Длительность интервала времени между посылками ARP запросов, объясняется тем, что послав запрос, станция не знает, сколько времени нужно ждать ответа и что самое главное, ей не от кого получить ответ, что все в порядке, так как такой ответ никто не смог бы прислать. Станции приходится ждать возможных ответов достаточно заметный промежуток времени. Вообще, коммуникации, при которых одним из вариантов развития событий является отсутствие ответа как такового порождают большие задержки, так как не получая никакого ответа станция вынуждена ждать столь долго, сколь необходимо даже самому медленному узлу чтобы ответить. 

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

- запрос станции с МАС 00-11-22-33-44-55 на использование адреса 192.168.0.89

- ответ станции с МАС 00-02-44-08-EF-7E о том, что данный адрес она уже использует:

Почему сообщение об ошибке появляется быстро? Это связано с тем, что в ответ на ARP запрос генерируется ARP ответ, который и является сигналом об ошибке для вновь получающей адрес станции (для станции, уже использующей данный адрес, сигналом об ошибке служит приход ARP запроса). Никаких неопределенно долгих ожиданий – запрос, быстрый ответ – ошибка.

Работа каких станций невозможна после описанных взаимодействий? Очевидно, что станция, пытавшаяся использовать занятый адрес, не сможет этого сделать, останется без адреса и не сможет принимать участие в сетевых коммуникациях. А станция, которая ответила на ARP запрос - вполне может работать дальше – никаких препятствий к этому нет. Тогда возникает еще один вопрос – зачем на экране этой станции для пользователя появилось сообщение об ошибке, если все в порядке? Такие события записываются в журнал системы – это вполне понятно, но зачем выводить на экран красные сообщения, если система продолжает работать нормально – не ясно. Отсюда можно сделать вывод, что вывод сообщения об ошибке в Windows ХР/2000 на той станции, которая прекрасно продолжает работать – явное недоразумение. 

Теперь рассмотрим вопрос о том, все ли операционные системы по умолчанию рассылают проверочные ARP запросы перед стартом интерфейса и можно ли отключить эту функцию в Windows? Не все системы поступают так, например многие дистрибутивы Linux настроенные по умолчанию не выполняют проверку посылкой ARP запросов. В Windows нет средств графического пользовательского интерфейса или командной строки чтобы выполнить отключение посылки ARP запросов при старте интерфейса, но можно внести соответствующие изменения в реестр Windows. Для этого необходимо в ветке

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters исправить значение ключа типа Dword ArpRetryCount, присвоив ему значение «0» (или любое другое значение если это необходимо).

 Хорошо или плохо не осуществлять проверку при старте интерфейса на дублирование IP адреса? Вопрос риторический – с одной стороны это экономит некоторое время на старте системы, с другой стороны потенциально может привести к проблемам в осуществлении сетевого взаимодействия. В чем состоят эти проблемы? Для ответа на этот вопрос попробуем сымитировать ситуацию, при которой у двух станций в сети одинаковые IP адреса. Для этого либо отключим на одной из них посылку проверочных ARP запросов, либо подключим эти станции к разным коммутаторам, уберем связь между этими коммутаторами, присвоим одинаковые адреса двум станциям и снова соединим два коммутатора линией связи. (Если мы просто отключим одну из станций от сети, присвоим ей дублирующийся адрес и снова вставим в адаптер сетевой кабель, мы не сможем добиться желаемого: Windows при попытке назначить адрес неактивному интерфейсу требует перезагрузки, так как не имеет возможности проверить этот адрес на уникальность в сети).  Что получится в таком случае?

Пусть у двух станций (А и В) адреса 1.1.1.1. Смогут ли они обмениваться пакетами друг с другом? Ни при каких обстоятельствах, так как если у станции есть пакет для самой себя, то такой пакет никогда не отправляется в линию связи, а обрабатывается всегда локально. Смогут ли эти станции обмениваться пакетами с другими станциями? Это зависит от большого количества факторов, рассмотрим этот вопрос более детально, тем более, что это поможет нам помимо ответов на поставленные вопросы лучше понять как происходит сетевое взаимодействие. 

Итак, пусть станция А хочет передать пакет некоторой станции С (1.1.1.6). Станция С раньше не обменивалась пакетами со станциями А или В, или по крайней мере не имеет о них записей в ARP кэше. Станция А отправляет станции С ARP запрос, который на получают все адаптеры, станция С отвечает на этот запрос направленно на МАС адрес станции А, таким образом в кэше ARP станция А и С появляются соответствующие записи о МАС адресах друг друга. После  этого А и С могут свободно обмениваться пакетами, если только станция В ничего не передает станции С. Если же в это же время станция В захочет передать пакеты станции С, то станция В пошлет ARP запрос, получит ARP ответ от станции C, после чего станция С будет думать, что с адресом 1.1.1.1 связан МАС адрес станции В. Тогда все пакеты для А станция С будут передавать станции В, таким образом коммуникации между А и С будут нарушены, а со станцией В у станции С коммуникации смогут происходить, правда при этом в адрес станции В пойдет пакеты, которые необходимо был отправить станции А. Но станция А вряд ли смирится с тем, что взаимодействие со станцией С прервано – она снова попытается наладить взаимодействие с С и после первого же ARP запроса от А к С коммуникации между В и С будут нарушены. Итого: при попытке двух станций с одинаковым адресом обмениваться пакетами с третьей станцией одновременно, эти коммуникации будет постоянно разрываться.

Что будет, если станция С захочет обмениваться пакетами с 1.1.1.1 (тут нельзя говорить с А или с В, так как эти станции С не различает)? Станция С пошлет ARP запрос в поисках МАС адреса станции 1.1.1.1 и получит два ответа. Причем порядок прихода этих ответов будет по сути определяться случайностью. Теперь все зависит о реализации стека TCP/IP на станции С. Некоторые стеки ведут лог каждого посланного ARP запроса и не реагируют на ARP ответы, посланные без предшествующего запроса. В этом случае станция С запишет в ARP кэш МАС адрес станции, ответившей первой, а ответ второй станции проигнорирует и будет обмениваться пакетами с первой ответившей станцией. Другие реализации стека (таковых большинство: Windows, Linux) верят каждому принятому ARP ответу, не запоминая посланных ARP запросов, в таком случае станция С запишет в ARP кэш МАС адрес станции, ответившей второй, и будет с ней обмениваться пакетами. Но все это справедливо только в том случае, если вторая из станций в свою очередь не пошлет ARP запроса станции С – тогда коммуникации С и той станции, с которой она обменивалась пакетами будут нарушены. Из вышеизложенного следует:

  •  Станции с одинаковыми IP адресами никогда не смогут иметь коммуникации друг с другом.
  •  Возможны взаимодействия между каждой из станций с одинаковыми адресами и третьей станцией, только если обмен пакетами инициирует станция с дублирующимися адресом и если только обе станции с одинаковыми адресами не предпринимают попыток обмениваться пакетами с одной и той же третьей станцией в пересекающиеся промежутки времени.
  •  Возможны взаимодействия между ОДНОЙ из станций с дублирующимися адресами с третьей станцией (какая из двух станций с дублирующимися адресами будет выбрана зависит от реализации стека на третьей станции) для взаимодействий инициированных третьей станцией и если только другая станция с дублирующимся адресом не предпринимают попыток обмениваться пакетами с той же третьей станцией в пересекающиеся промежутки времени.

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

 

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

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

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

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

210.10.10.0/255.255.255.192

210.10.10.64/255.255.255.192

210.10.10.128/255.255.255.192

210.10.10.192/255.255.255.192

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

Подсеть:    210.10.10.10|000000

Маска: 255.255.255.11|000000

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

Исходная сеть:   210.10.10.10|000000

Маска:      255.255.255.11|000000

Запишем в виде:      210.10.10.10xx|yyyy

Маска удлиняется:    255.255.255.1111|0000

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

 Подсеть 1:  210.10.10.1000|0000  210.10.10.128

Маска:     255.255.255.1111|0000  255.255.255.240

Подсеть 2:  210.10.10.1001|0000  210.10.10.144

Маска:     255.255.255.1111|0000  255.255.255.240

Подсеть 3:  210.10.10.1010|0000  210.10.10.160

Маска:     255.255.255.1111|0000  255.255.255.240

Подсеть 4:  210.10.10.1011|0000  210.10.10.176

Маска:     255.255.255.1111|0000  255.255.255.240

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

1. 210.10.10.0/255.255.255.192 (62 узла)

2. 210.10.10.64/255.255.255.192 (62 узла)

3. 210.10.10.128/255.255.255.240 (16 узлов)

4. 210.10.10.144/255.255.255.240 (16 узлов)

5. 210.10.10.160/255.255.255.240 (16 узлов)

6. 210.10.10.176/255.255.255.240 (16 узлов)

7. 210.10.10.192/255.255.255.240 (62 узла)

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

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

Разделили ее на 4 части:

210.10.10.0/255.255.255.192

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

210.10.10.64/255.255.255.192

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

210.10.10.128/255.255.255.192

 

 

 

4

 

 

 

5

6

210.10.10.192/255.255.255.192

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

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

4

 

 

 

5

6

7

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

Сеть1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сеть2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сеть3

 

 

 

Сеть4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

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

Сеть, которую, делим:  210.10.10.160/255.255.255.240 (16 узлов)

В двоичной форме:       210.10.10.1010|0000

Исходная маска:     255.255.255.1111|0000

Запишем в виде:     210.10.10.1010хх|yy

Изменим маску, забрав 2 бита: 255.255.255.111111|00

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

Подсеть 1:        210.10.10.101000|00 (210.10.10.160)

Маска:     255.255.255.111111|00 (255.255.255.252)

Подсеть 2:        210.10.10.101001|00 (210.10.10.164)

Маска:     255.255.255.111111|00 (255.255.255.252)

Подсеть 3:        210.10.10.101010|00 (210.10.10.168)

Маска:     255.255.255.111111|00 (255.255.255.252)

Подсеть 4:        210.10.10.101011|00 (210.10.10.172)

Маска:     255.255.255.111111|00 (255.255.255.252)

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

Запишем номера этих сетей с масками подряд:

1. 210.10.10.0/255.255.255.192 (62 узла)

2. 210.10.10.64/255.255.255.192 (62 узла)

3. 210.10.10.128/255.255.255.240 (14 узлов)

4. 210.10.10.144/255.255.255.240 (14 узлов)

5. 210.10.10.160/255.255.255.252  (2 узла)

6. 210.10.10.164/255.255.255.252 (2 узла)

7. 210.10.10.168/255.255.255.252  (2 узла)

8. 210.10.10.172/255.255.255.252  (2 узла)

9. 210.10.10.176/255.255.255.240 (14 узлов)

10. 210.10.10.192/255.255.255.240 (62 узла)

Какие из этих номеров сетей можно назначить сетям в нашей задаче?

Вариантов может быть несколько, вот один из них:

Сеть1 (50 комп.):  210.10.10.0/255.255.255.192  (62 узла)

Сеть2 (40 комп.):  210.10.10.64/255.255.255.192  (62 узла)

Сеть3 (12 комп.):  210.10.10.128/255.255.255.240 (14 узлов)

Сеть4 (10 комп.):  210.10.10.144/255.255.255.240 (14 узлов)

Сеть5 (2 комп.):  210.10.10.160/255.255.255.252 (2 узла)

Сеть6 (2 комп.):  210.10.10.164/255.255.255.252 (2 узла)

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

210.10.10.168/255.255.255.252  (2 узла)

210.10.10.172/255.255.255.252  (2 узла)

если изначально не разбивать диапазон «5» на 4 части, а разбивать пополам и одну половинку еще раз пополам, то вместо этих двух диапазонов получим один диапазон 210.10.10.168/255.255.255.248, но все равно впоследствии понадобятся сети размером два узла для глобальных связей.

 

210.10.10.176/255.255.255.240 (16 узлов)

210.10.10.192/255.255.255.192 (62 узла)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

Таким образом, сеть компании может еще расширяться, а недостатка в адресном пространстве все еще не будет испытывать. Например, через некоторое время компания открывает еще один небольшой филиал, в котором использует 10 компьютеров, подключает его к центральному офису выделенной линией связи (сеть из 2 узлов) и расходует еще сети 210.10.10.168/255.255.255.252 (2 узла) и 210.10.10.176/255.255.255.240 (16 узлов).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

Затем подключает еще один средний филиал, в котором 20 компьютеров, тогда сеть 210.10.10.192/255.255.255.192 (62 узла) имеет смысл поделить пополам: 210.10.10.192/255.255.255.224 (30 узлов) и 210.10.10.224/255.255.255.224 (30 узлов). Таким образом для подключения данного филиала можно задействовать сети с номерами: 210.10.10.172/255.255.255.252 (2 узла) и 210.10.10.192/255.255.255.224 (30 узлов).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

Остается еще диапазон 210.10.10.224/255.255.255.224 (30 узлов). Если, например, компания организует еще один небольшой филиал, в котором будет 10 узлов, то данный диапазон можно дополнительно разделить пополам: 210.10.10.224/255.255.255.240 (14 узлов) и 210.10.10.240/255.255.255.240 (14 узлов),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 вторую часть разделить пополам: 210.10.10.240/255.255.255.248 (6 узлов) и 210.10.10.248/255.255.255.248 (6 узлов),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

вторую половинку еще раз пополам: 210.10.10.248/255.255.255.252 (2 узла) и 210.10.10.252/255.255.255.252 (2 узла), получим:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

210.10.10.224/255.255.255.240 (14 узлов)

210.10.10.240/255.255.255.248 (6 узлов)

210.10.10.248/255.255.255.252 (2 узла)

210.10.10.252/255.255.255.252 (2 узла)

Тогда новый филиал получит идентификатор 210.10.10.224/255.255.255.240, а глобальная связь, соединяющая его с главным офисом получит идентификатор 210.10.10.248/255.255.255.252 (2 узла), 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

тогда компания сможет открыть еще один очень маленький филиал на 6 компьютеров, подключив его глобальной сетью к главному офису.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

Вот теперь адресное пространство полностью закончилось.

В итоге компания сможет получить, например, такую сеть:

и при этом компании хватит адресного пространства исходной сети класса для адресации всех этих подсетей, в то время как с помощью подсетей одинакового размера (масок подсети равной длины) мы не могли адресовать даже гораздо более простую исходную сеть! Разобранная нами техника называется VLSM (Variable Length Subnet Mask - Маски подсети переменной длины).

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

Задание на расчет подсетей с применением VLSM.

1. Разделим сеть класса С 222.222.222.0 на следующие части:

1 сеть из 100 узлов

1 сеть из 50 узлов

3 сети из 14 узлов

1 сеть из 6 узлов

2 сети из 2 узлов

2. Разделить сеть класса С 200.200.200.0 на следующие части:

1 сеть из 50 узлов

5 сетей по 25 узлов

1 сеть из 10 узлов

3 сетей из 2 узлов

3. Разделить сеть класса В 145.145.0.0 на следующие части:

2 сети по 8000 узлов

7 сетей по 3000 узлов

18 сетей по 1000 узлов

4 сети по 500 узлов

 

4. Разделить сеть класса С 222.222.222.0 на следующие части:

1 сеть из 100 узлов

1 сеть из 50 узлов

3 сети из 14 узлов

1 сеть из 6 узлов

2 сети из 2 узлов

5. Разделить сеть класса В 182.1.0.0 на следующие части:

1 сеть из 8 тыс. узлов

9 сетей из 4000 узлов

3 сети из 1000 узлов

14 сетей из 500 узлов

6. Ответить на следующие вопросы:

Какую самую большую сеть еще можно дополнительно выделить при условие выполнения описанного выше деления?

Как много можно выделить сетей размером 60 узлов после выполнения описанного выше разделения?

7. Адресовать следующую сеть, разделив сеть класса С 210.1.1.0 на части, присвоить адреса всем узлам и портам маршрутизаторов.


 

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

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

/1  128.0.0.0

/2  192.0.0.0

/3  224.0.0.0

/4  240.0.0.0

/5  248.0.0.0

/6  252.0.0.0

/7  254.0.0.0

/8  255.0.0.0

/9  255.128.0.0

/10  255.192.0.0

/11  255.224.0.0

/12  255.240.0.0

/13  255.248.0.0

/14  255.252.0.0

/15  255.254.0.0

/16  255.255.0.0

/17   255.255.128.0

/18  255.255.192.0

/19  255.255.224.0

/20  255.255.240.0

/21  255.255.248.0

/22  255.255.252.0

/23  255.255.254.0

/24  255.255.255.0

/25  255.255.255.128

/26  255.255.255.192

/27  255.255.255.224

/28  255.255.255.240

/29  255.255.255.248

/30  255.255.255.252

/31  255.255.255.254

/32  255.255.255.255

Перепишите решения данных выше для самостоятельной работы задач с масками в новом виде.

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

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

1. Разделить сеть класса С 222.222.222.0 на следующие части:

1 сеть из 100 узлов

1 сеть из 50 узлов

3 сети из 14 узлов

1 сеть из 6 узлов

2 сети из 2 узлов

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

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

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

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

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

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

Будем выделять части с начала адресного диапазона, начиная с наиболее крупных частей. Очевидно, что первая часть будет иметь номер 222.222.222.0. Сколько в ней должно быть адресов? 128. Следовательно, необходимо применить маску на 1 длиннее стандартной маски класса С (которая записывается как /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, видно, что диапазон предоставленных в наше распоряжения адресов закончился. Удобно записывать в виде таблицы:

222.222.222.0/26   128 адресов   доходим до адреса…

222.222.222.128/27  64 адреса  доходим до адреса…

222.222.222.192/28  16 адресов  доходим до адреса…

222.222.222.208/28  16 адресов  доходим до адреса…

222.222.222.224/28  16 адресов  доходим до адреса…

222.222.222.240/29  8 адресов  доходим до адреса…

222.222.222.248/30  4 адреса  доходим до адреса…

222.222.222.252/30  4 адреса  доходим до адреса…

222.222.222.256 – диапазон закончился.

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

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

222.222.222.0/26   128 адресов   доходим до адреса…

222.222.222.128/27  64 адреса  доходим до адреса…

222.222.222.192/28  16 адресов  доходим до адреса…

222.222.222.208/28  16 адресов  доходим до адреса…

222.222.222.224/28  16 адресов  доходим до адреса…

222.222.222.240/29  8 адресов  доходим до адреса…

222.222.222.248/30  4 адреса  доходим до адреса…

222.222.222.252/30  4 адреса  доходим до адреса…

222.222.222.256 – диапазон закончился.

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

Простейший пример: выделим из сети класса С 200.1.1.0 част размером 64 и 32 адреса приведенным методом, получим:

200.1.1.0/26

200.1.1.64/27

200.1.1.96 – первый свободный адреса. При необходимости затем выделить сеть размером  32 или менее адреса, это можно без труда сделать, при необходимости выделить сеть размером 64 адреса, мы, очевидно, не можем записать 200.1.1.96/26 – это не будет сетью, что легко видно в двоичной форме записи:

Сеть:  200.1.1.01|100000

Маска:  255.255.255.11|000000

Это значит, что от адреса 200.1.1.96 нельзя выделить сеть размером 64 адреса, ведь сеть – это совокупность адресов, таких, что у них есть фиксированная часть – номер сети, а остальные биты принимают строго все значения от 00..00 до 11..11 во всех битах, отвечающих за номер узла.

 

Заданий для выполнения новым методом:

1. Разделить сеть класса С 199.99.99.0 на следующие подсети:  

 1 подсеть из 102 узлов

 1 подсеть из 60 узлов,

 2 подсети из 28 узлов

2. Разделить сеть класса С 199.99.99.0 на следующие подсети:  

 1 подсеть из 50 узлов

 4 подсети из 28 узлов,

 3 подсети из 10 узлов

 1 подсеть из 6 узлов

 2 подсети из 2 узлов

3. Разделить сеть класса В 140.40.0.0 на следующие подсети:  

 3 подсети из 8000 узлов

 4 подсети из 3500 узлов,

 6 подсетей из 1500 узлов

 11 подсетей из 400 узлов

 12 подсетей из 200 узлов

 

Автономные адреса

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

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

Организация ICANN (www.icann.org) (The Internet Corporation for Assigned Names and Numbers) это некоммерческая организация, основанная в октябре 1998 года для распределения IP-адресов, параметров протоколов и ряда других задач. Она включает в себя следующие подразделения:

  •  DNSO (Domain Name Supporting Organization), отвечает за распределение доменных имен в Интернет
  •  ASO (Address Supporting Organization), отвечает за распределение IP адресов в Интернет
  •  PSO (Protocol Supporting Organization), отвечает за распределение номеров, связанных с разнообразными протоколами в Интернет.

Подразделение ICANN, ASO состоит из четырех RIR – Региональных регистратур Интернет:

  •  APNIC (www.apnic.net)
  •  ARIN (www.arin.net)
  •  RIPE (www.ripe.net)
  •  LACNIC (www.lacnic.net)

Каждая из этих четырех организаций обеспечивает распределение IP адресов в некотором географическом регионе, в частности RIPE NCC обслуживает регистраторов Европы, Ближнего Востока, Северной Африки и части Азии. Эти организации напрямую сотрудничают с LIR (Локальными регистраторами Интернет) – компаниями, непосредственно предоставляющими адресное пространство для конечного потребителя. RIPE NCC в настоящее время поддерживает 3150 локальных регистраторов сети Интернет, входящих в NCC и количество партнеров RIPE NCC постоянно растет. Итак, компания, желающая подключить свою сеть к Интернет и желающая приобрести диапазон адресов для использования в своей сети должна обратиться к любому LIR – локальному регистратору Интернет, например, к своему провайдеру. Провайдер получает адреса от RIR (например, от RIPE) и предоставляет часть адресного пространства конечному потребителю – компании, желающей подключить свою сеть к Интернет. Таким и только таким образом можно получить сегодня IP адреса для адресации своей сети как части Интернет.

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

  •  1 сеть класса А: 10.0.0.0
  •  16 сетей класса В: 172.16.0.0 – 172.31.0.0
  •  256 сетей класса С: 192.168.0.0 – 192.168.255.0

Эти адреса может применять любой желающий в собственной, не подключенной к Интернет сети не согласовывая применение ни с кем: даже если трафик и попадет в Интернет, он будет отброшен. Обратите внимание - автономных адресов достаточно много, таким образом любой желающий организовать частную IP сеть не будет испытывать недостатка в адресах, в случае очень больших частных сетей, которым мало 256 сетей класса С, 16 сетей класса В и одной сети класса А эти сети можно, разумеется, разбить масками на подсети удобного размера. Итого: для адресации частных сетей, не подключенных к Интернет рекомендуется использовать автономные адреса, специально зарезервированные для применения в сетях, не подключенных к Интернет. Разумеется, в частной сети можно применять абсолютно любые адреса если эта сеть никак не связана с Интернет, но никаких причин так поступать нет – стоит применять именно автономные адреса.

Термин «автономные адреса» имеет смысл только в связи с Интернет – в произвольной IP сети эти адреса ничем не отличаются от любых других адресов, эти адреса отличаются от других разрешенных адресов в Интернет только тем, что пакеты с такими адресами отправителей и получателей отбрасываются магистральными маршрутизаторами Интернет. Разумеется, такие адреса могут маршрутизироваться в частных IP сетях – магистральные маршрутизаторы Интернет отбрасывают такие пакеты не потому, что такие пакеты в принципе не обрабатывает любой маршрутизатор, а лишь потому, что магистральные маршрутизаторы так настроены.

 

Представим, что нам необходимо настроит маршрутизатор чтобы он отбрасывал пакеты посланные в/из автономных адресов. Пусть наш маршрутизатор поддерживает фильтрацию пакетов (как это сделать на практике мы рассмотрим позднее), для этого ему необходимо дать команду, в которой указать сеть с маской, в которую пакеты пересылать не нужно. Сколько таких записей необходимо внести в маршрутизатор, чтобы он не пропускал пакеты в автономные сети? Автономных сетей: 1+16+256=273 штуки. Нужно ли сделать 273 записи в маршрутизаторе, о каждой из сетей, названных автономными?

Рассмотрим к примеру совокупность автономных сетей класса В: 172.16.0.0/16, 172.17.0.0/16 …. 172.31.0.0/16. Запишем эти сети в двоичной форме:

  1.  172.0001|0000.0.0
  2.  172.0001|0001.0.0
  3.  172.0001|0010.0.0
  4.  172.0001|0011.0.0
  5.  172.0001|0100.0.0
  6.  172.0001|0101.0.0
  7.  172.0001|0110.0.0
  8.  172.0001|0111.0.0
  9.  172.0001|1000.0.0
  10.  172.0001|1001.0.0
  11.  172.0001|1010.0.0
  12.  172.0001|1011.0.0
  13.  172.0001|1100.0.0
  14.  172.0001|1101.0.0
  15.  172.0001|1110.0.0
  16.  172.0001|1111.0.0

Заметьте, что все 16 сетей класса В имеют общую часть: 172.0001хххх.хххххххх.хххххххх, причем все остальные биты принимают все возможные значения, действительно, номер первой сети 172.00010000.0.0, а последний узел в последней сети 172.00011111.11111111.11111111. А как мы называем совокупность IP адресов, имеющих общую часть, все остальные биты которой принимают последовательно все значения от всех «0» до всех «1» - называем сетью!  И эта последовательность адресов формально может быть записана в виде АДРЕС/МАСКА давно привычным нам способом:

172.0001|хххх.хххххххх.хххххххх можно записать как:

172.16.0.0/12 или 172.16.0.0 255.240.0.0

Что означает «сеть» 172.16.0.0/12? Раньше мы говорили о подсетях, говорили о том, что с помощью масок классовые сети можно разбить на более мелкие части. Теперь же мы, наоборот, с помощью маски объединили несколько классовых сетей (16 сетей класса В) а одну «надсеть». Важно понимать, что маска это всего лишь инструмент для выделения границы между адресом сети и адресом узла, если маска длиннее принятой по умолчанию классовой, то мы говорим о подсетях, а если маска больше классовой маски по умолчанию, можно говорить о надсетях. Если раньше речь шла о разделении классовых сетей на подсети, то теперь может с тем же успехом говорить об объединении сетей в надсети, или употребляют термин «агрегирование адресов». Где это можно использовать? Например, можно агрегировать диапазоны автономных адресов таким образом, что вместо 273 строк в таблице фильтрации маршрутизаторов будет присутствовать только три:

  •  10.0.0.0/8 (тут просто нечего агрегировать)
  •  172.16.0.0/12 (агрегировано 16 сетей класса В)
  •  192.168.0.0/16 (агрегировано 256 сетей класса С, получился диапазон, размерами равный одной сети класса В, но ни в коем случае не называющийся сетью класса В).

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

Рассмотрим еще один пример агрегирования, в котором не удается объединить все сети в одну строку вида адрес/маска, но можно с помощью агрегирования значительно уменьшить количество «сетей»:

192.168.31.0 – 192.168.37

Запишем в двоичной форме все сети:

192.168.00011111.0

192.168.00100000.0

192.168.00100001.0

192.168.00100010.0

192.168.00100011.0

192.168.00100100.0

192.168.00100101.0

Отыщем среди этих сетей такие, которые можно агрегировать друг с другом. Признаками возможности агрегирования служат:

  •  наличие у группы номеров сетей общей части
  •  все остальные биты, которые не являются общей частью, должны принимать все значения от всех «0» до всех «1»

Таких групп сетей здесь две:

Группа первая:

192.168.001000|00.0

192.168.001000|01.0

192.168.001000|10.0

192.168.001000|11.0

Номер сети: 192.168.32.0/22

Группа вторая:

192.168.0010010|0.0

192.168.0010010|1.0

Номер сети 192.168.36.0/23

Ну и не агрегируемый ни с кем номер сети: 192.168.31.0/24

Итого, вместо семи строк вида:

192.168.0.31/24

192.168.0.32/24

192.168.0.33/24

192.168.0.34/24

192.168.0.35/24

192.168.0.36/24

192.168.0.37/24

мы можем записать всего три строки, описывающие то же адресное пространство:

192.168.31.0/24

192.168.32.0/22

192.168.36.0/23

 

Задания на агрегирование адресов.

Агрегировать в минимальное количество записей вида адрес/маска следующие сети и диапазоны:

1. 192.168.4.0, 192.168.5.0, 192.168.6.0, 192.168.7.0 (ответ: 192.168.4.0/22)

2. 192.168.19 – 192.168.25

3. 192.168.17.0 – 192.168.27.0

4. 172.15.0.0 – 172.36.0.0

МАРШРУТИЗАЦИЯ

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

Начьнем с исполнения маршрутизаторов – все маршрутизаторы делятся на  аппаратные и программные. Программный маршрутизатор – это программа (чаще – служба), запущенная на универсальном компьютере, работающем под управлением универсальной операционной системы. В роли программного маршрутизатора выступает компьютер, оснащенный несколькими сетевыми интерфейсами (LAN и WAN), между которыми перенаправляет пакеты специально программное обеспечение. В серверных операционных системах в обычно встроена весьма функциональная служба маршрутизации, например, такая служба есть в Windows NT 4.0 Server, Windows 2000 Server, Windows Server 2003, Linux, FreeBSD и т.д. В пользовательских операционных системах такая служба если и встроена (Windows 2000 Pro, Windows XP Pro), то крайне малофункциональна и фактически можно считать, не полноценна. Однако, так как маршрутизация – это всего лишь обработка информации, то и для тех ОС, в комплекте которых отсутствует собственная служба маршрутизации, может быть установлено программное обеспечение стороннего разработчика, являющееся программным маршрутизатором. Мы будем изучать программную маршрутизацию на базе службы маршрутизации, встроенной в ОС Windows 2000 Server/Windows Server 2003, впоследствии в курсе Linux будет рассмотрена служба маршрутизации, встроенная в эту ОС.

Аппаратным маршрутизатором называют специализированное оборудование единственной (обычно) целью изготовления которого является применение его в роли маршрутизатора. Обычно это выглядит как самостоятельная «коробочка», произвольного форм-фактора или выполненная для монтажа в монтажном конструктиве, например, как коммутатор. Однако, аппаратный маршрутизатор принципиально отличатся от аппаратного коммутатора. Коммутатор реализуется чисто аппаратно, мы рассматривали архитектуру коммутаторов в курсе «LAN». Маршрутизатор же, даже если и является аппаратным, все равно представляет собой относительно универсальный процессор, оперативную память и прочую аппаратную обвязку, работающие под управлением специальной, ориентированной на маршрутизацию операционной системы. По сути в таком устройстве маршрутизация является все равно программной, т.е. выполняемой специальным программным обеспечением на относительно универсальном процессоре. С чем это связано? С множеством протоколов, которые необходимо маршрутизировать, со спецификой реализации маршрутизации, которые станут ясны позднее. Пока же необходимо уяснить, что даже аппаратные маршрутизаторы по сути своей являются устройствами, работающими под управлением программного обеспечения, просто сильно специализированного. Кроме того, коммутаторы, как говорилось раннее, могут быть неуправляемыми, маршрутизатор же НЕ может быть не управляемым – это устройство в отличие от коммутатора всегда должно поддерживать конфигурирование администратором, хотя бы, например, для назначения IP адресов его портам, не говоря уже пока обо всем остальном.

Типы маршрутизации

 

Выделяют простую, статическую и динамическую маршрутизацию.

Простая маршрутизация не требует ни специальных настроек таблицы маршрутизации администратором, ни работы специальных протоколов для построения таких таблиц, не предъявляет повышенных требований к ресурсам процессора и объему оперативной памяти маршрутизатора, простая маршрутизация имеет примитивнейшую логику, выделяют три основных типа простой маршрутизации:

  •  Случайная маршрутизация. Пришедший пакет отправляется на любой случайно выбираемый порт, за исключением того, откуда пришел пакет. Очевидно, такая логика не будет работать при наличии топологии с петлями (точнее будет работать плохо, так как возможны зацикливания пакетов), такая логика приемлема, если у маршрутизаторов в сети будет по 2 порта. Такая логика похожа на логику моста, еще и упрощенную. Разумеется, в хоть сколь ни будь сложных сетях такой способ маршрутизации не приемлем – он годится только для очень малых и простых сетей.
  •  Маршрутизация по предыдущему опыту. Пришедший пакет отправляется на тот интерфейс, с которого приходили пакеты с таким же адресом отправителя, как и адрес получателя данного пакета. Фактически, данный метод повторяет логику работы коммутатора и снова таки может применяться только в очень малых и простых сетях.
  •  Лавинная маршрутизация. Пришедший пакет отправляется на все интерфейсы кроме того, с которого он поступил. Данная логика повторяет логику коммутатора при обработке неизвестных пакетов и снова таки может применяться только в очень малых и простых сетях.

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

 

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

Их несколько:

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

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

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

Из рассмотренных типов маршрутизации и их характеристик следует:

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

Причины появления записей в таблицах маршрутизации. Таковых основных причин может быть три:

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

Таким образом – при старте маршрутизатора его таблица содержит, по меньшей мере, маршруты в подключенные сети!

Структура таблицы маршрутизации

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

  •  В таблице так же в качестве вспомогательного поля может быть указан интерфейс, через который передать пакет дальше. Важно помнить, что обязательным полем таблицы маршрутизации является поле адреса следующего маршрутизатора, но этот следующий маршрутизатор достижим через определенный собственный порт, тот, с которым следующий маршрутизатор в одной сети. Для того, чтобы каждый раз при маршрутизации пакета не пришлось выяснять, через какой свой порт необходимо передать пакет следующему маршрутизатору, маршрутизатор обычно вычисляет для каждого интерфейса следующего маршрутизатора из своей таблиц тот свой порт, через который передает пакет этому маршрутизатору.
  •  Указанными выше столбцами маршрутизатор может ограничиваться только в том случае, если в сети применяется только классовый способ адресации. Если же применяются маски, то маршрутизатор уже не может оперировать номером сети как таковым, рядом с номером сети должна фигурировать ее маска, для того, чтобы маршрутизатор мог понимать, сколь много узлов на самом деле попадают в сеть с данным номером, если техника классов не может дать ответ на этот вопрос. Так как маски сегодня применяются повсеместно, то такой столбец в таблицах маршрутизации присутствует всегда.
  •  В случае если в таблице маршрутизации фигурируют несколько маршрутов в некоторые сети (с целью резервирования) необходимо использовать понятие метрики маршрута – цены доставки по данному маршруту, чем цена (метрика) меньше, тем маршрут предпочтительнее. Администратор сможет настроить основной и альтернативные маршруты к некоторым сетям, дав маршрутам различные метрики,  в случае отказа основного маршрута с минимальной метрикой, пакеты могут быть отправлены по маршрутам с худшим значением метрики. Кроме того, понятие метрики активно используется в работе протоколов динамической маршрутизации для определения оптимальных маршрутов. Возможно так же указание нескольких метрик, связанных с маршрутом – количество переход, пропускная способность маршрута, задержка передачи маршрута на случай, если различные пакеты следует передавать с различными предпочтениями.
  •  Каждый динамический добавленный маршрут должен периодически подтверждаться тем маршрутизатором, который сообщил об этом маршруте. Поэтому записи в таблице маршрутизации могут снабжаться полем TTL (Time To Live) – полем времени жизни маршрута, если маршрут не подтверждается в течение этого времени, он удаляется из таблицы маршрутизации.
  •  Маршрут может быть снабжен указанием причины, по которой он появился в таблице маршрутизации, примеры: маршрут к подключенной сети, статический маршрут, указание на протокол маршрутизации, который добавил данный маршрут.
  •  Маршрут может снабжаться статистикой использования: количеством пакетов за известный период времени, которые были отправлены по данному маршруту.

Рассмотрим таблицы маршрутизации в нескольких простейших случаях.

Случай первый: составная сеть представляет собой две сети, соединенных маршрутизатором.

 

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

Сеть назначения   Адрес след. Маршрутизатора

  1.      192.168.0.1

172.16.0.0    172.16.0.1

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

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

Усложним задачу, пусть составная сеть состоит из трех сетей, но они по прежнему подключены к единственному маршрутизатору. Будет ли данная задача действительно сложнее предыдущей?

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

Сеть назначения   Адрес след. Маршрутизатора

  1.      192.168.0.1
    1.  172.16.0.1
      1.  192.168.88.1

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

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

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

Левый маршрутизатор

Network   Gateway

  1.  192.168.0.1
    1.  192.168.55.1

Правый маршрутизатор

Network   Gateway

192.168.88.0   192.168.88.1

192.168.55.0  192.168.55.2

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

Левый маршрутизатор

Network   Gateway

192.168.0.0  192.168.0.1

192.168.55.0  192.168.55.1

192.168.88.0  192.168.55.2

Правый маршрутизатор

Network   Gateway

192.168.88.0  192.168.88.1

192.168.55.0  192.168.55.2

192.168.0.0  192.168.55.1


 


 

А также другие работы, которые могут Вас заинтересовать

54235. Додавання і віднімання дробових чисел. Підготовка до контрольної роботи 115 KB
  Мета. Узагальнити та систематизувати знання та уміння учнів із теми «Додавання і віднімання дробових чисел». Розвивати пам’ять, самостійність, мислення, увагу. Виховувати інтерес до предмету, культуру мови та письма. Формувати соціальну, здоров’єзберігаючу, комунікативну компетентності.
54236. Рівняння. Основні властивості рівняння 80 KB
  Мета: Повторити вивчений матеріал про рівняння його корені та способи розвязування; Вивести основні властивості рівняння на основі вивченого матеріалу; Закріпити набуті знання розвязуванням різнотипних рівнянь; Очікувані результати: Вивчити основні властивості рівняння; За допомогою основних властивостей рівняння навчитися їх розвязувати.
54237. Разработка стратегии лидерства по издержкам для усиления конкурентного преимущества компании ЗАО «ПО «Спеццистерны» при ограниченной конкуренции рынка перевозок в России 5.3 MB
  Основным видом деятельности ОАО «СИБУР Холдинг» является осуществление операционной деятельностью в качестве управляющей компании нефтехимического комплекса и поставке сырья на производственные предприятия на условиях процессинга. ОАО «СИБУР Холдинг» является собственником сырья и готовой продукции...
54238. Випадкові, неймовірні і достовірні події 103 KB
  Чи сподівались ви що сьогодняшній урок почнеться саме так Відповіді дітей Подія яка відбулась зараз була для вас неочікуваною Відповіді дітей У житті з нами відбуваються різін події: приємні і неприємні очікувані і неочікувані випадкові. Розглянемо приклад: Чи буде завтра іти сніг Відповіді дітей Тобто подія може відбутися а може і ні Випадкова подія це подія що при одних і тих же умовах може відбутися а може й не відбутися. Ще один...
54239. Раціональні числа 901 KB
  З двох від’ємних чисел більше те яке ближче до нуля або те яке стоїть правіше 4. Сумою двох від’ємних чисел є число від’ємне 5. Добуток двох обернених чисел дорівнює одиниці 6. Добуток двох чисел з різними знаками є число від’ємне 8.
54240. Повторення. Розвязування завдань на додавання і віднімання раціональних чисел 493.5 KB
  Налаштування дітей на роботу Мотивація навчальної діяльності 1 хвилина Учитель. Учні виставляють оцінки один одному у зошит олівцем зазначаючи вартість кожного завдання Учитель Наскільки ж добре ви підготовані до подорожі Давайте з вами зорієнтуємось у цьому разом. Відповідно до того у який колір буде пофарбовано клас учитель робить певні висновки і переходить до актуалізації опорних знань та навичок. Актуалізація опорних знань та навичок учнів 8 хвилин Учитель Скажіть мені будь ласка які ключові поняття математики...
54241. Координатна пряма. Протилежні числа. Модуль числа. Цілі числа 63.5 KB
  Протилежні числа. Модуль числа. Цілі числа Державна спеціалізована художня школаінтернат ІІІІ ступенів Колегіум мистецтв в Опішні Урок математики в 6 класі Тема уроку: Координатна пряма. Протилежні числа.
54242. Системы линейных уравнений с двумя переменными 286 KB
  Цель урока. Повторить, обобщить и систематизировать материал по теме «Системы линейных уравнений с двумя переменными». Развивать умение применять полученные знания на практике. Воспитать настойчивость, прилежания в работе и культуру устной и письменной математической речи.
54243. Розвязання рівнянь 314.5 KB
  Повторити уміння розв’язувати лінійні рівняння використовуючи їх властивості. На уроці ми продовжимо розв’язувати рівняння. Одночасно по три учні розв’язують рівняння біля дошки. Розв’яжіть рівняння 2 3.