Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сетевое администрирование ПМИТ

.pdf
Скачиваний:
14
Добавлен:
13.05.2020
Размер:
1.15 Mб
Скачать

реализованы в новых возможностях серверов, как например imagemap и системы безопасности. Скрипты позволяют новым энтузиастам Сети

приобщиться к сообществу и внести свою лепту в развитие системы.

3.3.10. Выбор и установка сервера протокола HTTP и другого программного обеспечения базы данных World Wide Web

Как уже было сказано выше, сервер World Wide Web - это программа,

обслуживающая запросы клиентов по протоколу HTTP. Иногда серверами

WWW называют и другие программы, например, поисковые машины Wide Area Information Server. Но это слишком вольное толкование понятия WWW

сервера. Главной задачей сервера "паутины" является обеспечение доступа пользователей к базе данных HTML документов. Однако, в настоящее время

функциональные возможности серверов значительно расширились и вышли за пределы простой отсылки документов на запросы клиентов. Наиболее

типичными для современных серверов являются следующие функции:

ведение иерархической базы данных документов,

контроль за доступом к информации со стороны программ-

клиентов,

предварительная обработка данных перед ответом на запрос,

взаимодействие с внешними программами через Common

Gateway Interface,

реализация взаимодействия с клиентами и другими серверами в режиме посредника,

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

Кроме того, такие серверы как NetSite (Netscape Communication) и Apachie реализуют шифрованные протоколы HTTP для обмена информацией

с клиентами. Рассмотрение перечисленных свойств и функций WWW серверов полезно провести на примерах, основанных на практике

эксплуатации серверов NCSA httpd, CERN httpd, Winhttpd и WN, Apachie.

3.3.11. Структура базы данных сервера WWW

Итак первой основной задачей для любого сервера является ведение его базы данных. База данных сервера - это часть файловой системы,

отведенная для размещения файлов HTML документов. Большинство

современных файловых систем - это иерархические деревья, следовательно, и

база данных HTTP сервера также является таким деревом. Для любой базы

данных необходимо ввести понятие единицы хранения - минимальный

объект, к которому можно обратиться извне или получить в качестве ответа

на запрос. Стандартным объектом хранения в базе данных HTTP сервера является HTML документ, который является обычном текстовым файлом.

Кроме такого стандартного объекта многие серверы поддерживают различные комбинированные объекты хранения, создаваемые в ряде случаев

из нескольких файлов или генерируемые программами "на лету".

71

Если обратиться к терминологии, которая принята в системах World Wide Web, то можно выделить следующие основные объекты, с которыми

оперирует сервер и программа-клиент:

Страница базы данных World Wide Web - это законченный

информационный объект, который отображается пользователю при

обращении к информационному ресурсу World Wide Web по универсальному идентификатору этого ресурса (URI, URL).

База данных World Wide Web или Website - набор страниц базы данных world Wide Web. При более подробном рассмотрении Website - это

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

4. Маршрутизация

Ключевой функцией сетевого уровня является маршрутизация пакетов

между узлами источника и адресата. В случае виртуального канала или пакетного режима дейтаграмм выбор пути через сеть можно делать только

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

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

пакета,

является частью программного обеспечения сетевого уровня. Например, в относительно простой сети, показанной на рис. 4.35, имеется шесть

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

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

(в узлеX, например, имеется две таких линии) или он может изображаться в

виде детального многозвенного пути между источником и адресатом. В

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

выходящее звено, как это происходит в узле Z.

Существует несколько критериев выбора алгоритма маршрутизации. В

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

ибыть настолько простым, насколько это возможно. Любая реальная сеть подвержена сбоям — в звене, узле, аппаратуре и программном обеспечении,

илюбой алгоритм маршрутизации должен обладать способностью противостоять изменениям в состоянии сети без необходимости аварийного

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

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

в ущерб другим компонентам сети. Алгоритм маршрутизации должен обеспечивать справедливое обслуживание для всех пользователей.

Отдельные индивидуумы не должны получать непреднамеренный отказ в

72

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

пользователями. Это требование должно быть сбалансировано с желанием оптимизировать производительность сети. Алгоритм маршрутизации мог бы,

вероятно,

попытаться

минимизировать

задержку пакетов при

одновременной

 

максимизации

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

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

Адаптивные алгоритмы базируют свои решения по маршрутизации на теку-

щем состоянии системы. Неадаптивные алгоритмы не принимают во

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

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

значительно сложнее, чем неадаптивных.

При централизованной маршрутизации имеется специальный

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

вычисляет все подходящие маршруты, оптимальные и/или альтернативные, и

передает эту информацию каждому узлу сети. Децентрализованные методы маршрутизации можно разделить на два вида: изолированные и

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

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

относительно

просты

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

 

73

Централизованную маршрутизацию трудно поддерживать, если сеть изменяется.

Можно комбинировать оба метода, используя динамические децентрализованные методы и записывая централизованный "маршрут последней инстанции", по которому должен направляться пакет с

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

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

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

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

возможных маршрутов.

4.1. Наикратчайший путь

Наикратчайшим путем между двумя узлами называют самый лучший или оптимальный путь, который можно использовать для передачи

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

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

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

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

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

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

звеньев с более высокимвесом. Заметим также, что если единственной мерой является число звеньев, то все звенья считаются равными и имеющими одинаковый вес.

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

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

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

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

Алгоритмы Белмана-Форда (Bellman-Ford) и Дейкстры (Dijkstra) берут

одиночный узел и вычисляют наикратчашие пути между этим узлом и всеми

74

другими узлами сети. Другие алгоритмы, такие как алгоритм Флойда (Floyd),

находят наикратчайшие пути между всеми парами узлов сети.

Алгоритм Дейкстры

Алгоритм Дейкстры, который находит самый короткий путь от данного узла

до всех других узлов сети, работает следующим образом.

1. Маркируйте все узлы, кроме стартового, парой значений, состоящей

из расстояния до данного узла (первоначально "со") и именем узла подхода6

(первоначально "-").

2.Начиная со стартового узла, выберите узел с самым низким

совокупным весом; считайте этот узел "установленным" (или "фиксированным").

3.Маркируйте соседние с установленным узлы совокупным расстоянием от стартового узла и именем узла подхода.

4.Если узел уже маркирован, то его метка заменяется на новую, совокупное

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

После фиксации всех узлов результирующий совокупный вес позволяет

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

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

1.Каждый узел, кроме стартового,

первоначально маркируется как (Со, -)

(рис. 4.2).

Рис. 4.2 Пример применения алгоритма Дейкстры, шаг первый.

12. Начните с узла А, зафиксируйте его,

перемаркируйте соседние (справа)

узлы В и F с учетом их расстояний (рис. 4.3).

Рис. 4.3. Пример применения алгоритма

Дейкстры. Шаг второй.

3. Теперь самым малым весом обладает узел В, поэтому повторите с этим

узлом все действия пункта 2 (рис. 4.4).

Рис. 4.4. Пример применения алгоритма Дейкстры. Шаг третий.

75

14. Теперь узел G имеет самый малый вес, поэтому он и используется. Новый вес для F меньше чем существующий, поэтому старая метка (6,А)

заменяется новой (5,G). Тот же самое происходит и с узлом С (рис. 4.5).

Рис. 4.5. Пример применения алгоритма Дейкстры. Шаг четвертый.

15. Повторите предыдущую процедуру для узла F. В результате узел Едолжен

был бы получить метку (9, F), но его существующая метка (6,G) имеет более низкий суммарный вес до

исходного узла, так что она оставлена без изменения (рис. 4.6).

Рис 4.6. Пример применения алгоритма Дейкстры. Шаг пятый.

7. Повторите процедуру для узла Е. В результате метка узла D (9,С) будет заменена

на (8,Е) (рис. 4.7).

Рис. 4.7. Пример применения алгоритма Дейкстры. Шаг шестой.

Установка узла D завершает процедуру

алгоритма Дейкстры. Нетрудно видеть, что

самый короткий путь от А до D имеет

совокупный вес 8, и читая метки,

начинающиеся с узла D, в обратном порядке, мы получаем наикратчайший маршрут: D <— Е <—G <— В <—А.

4.2. Лавинная маршрутизация

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

звенья, кроме входного звена (рис. 4.43). Такой метод всегда находит оптимальный маршрут, т. к. испытываются все маршруты, и информация

достигнет адресата скорее всего по самому короткому из них. Однако очевидный и существенный недостаток метода состоит в том, что в сети

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

чтобы упорядочить этот процесс. Один из возможных подходов

мог бы состоять в том, чтобы иметь в каждом пакете специальное поле —

счетчик звеньев, которое

уменьшалось бы на 1 в каждом принимающем узле. Если поле становится нулевым, то пакет отбрасывается. Значение этого поля должно лежать между

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

Вторая методика могла бы состоять в том, чтобы уникально

идентифицировать каждый пакет и хранить в каждом узле запись всех пакетов, которые они обработали. Тогда, если узел принимает пакет,

который он уже предварительно отправил, то это будет дубликат, и его можно будет сбросить.

Рис. 4.8. Маршрутизация при лавинном подходе

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

"правильном направлении", и алгоритм случайного обхода, когда пакет отправляется по одиночному звену, выбранному случайно, так что в

конечном счете пакет добирается до своего адресата.

4.3. Распределенная маршрутизация

Маршрутизация по вектору расстояния и маршрутизация по состоянию связей — вот два примера распределенной динамической маршрутизации, когда маршрутные узлы получают информацию о состоянии сети или оценку

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

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

определенную информацию через регулярные временные интервалы. Маршрутизация по вектору расстояния

Маршрутизация, базирующаяся на векторе расстояния, применяется в протоколе маршрутной информации (Routing Information Protocol, RIP),

который используется для маршрутизации в сети Internet.

Рассмотрим узел А в сети, показанной на рис. 4.9. Он периодически

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

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

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

задержка, то узел А может находить расстояние до соседних узлов, посылая к каждому узлу специальные эхо-пакеты. Как только эти пакеты отправляются,

стартует таймер. Он останавливается, когда отраженный эхо-пакет

возвращается назад и правильно принимается узлом А, позволяя, таким

образом, узлу А вычислить задержку, связанную с этим звеном.

В примере сети, показанной на рис. 4.9, для узлов В и С требуется 10 и 12

единиц времени (соответственно), чтобы ответить и послать их текущие

77

векторы расстояния узлу А. Теперь узел А может сделать вывод, что для путешествия пакета к узлам В и С требуется 5 и 6 единиц времени

соответственно. Оценки 6 и 4 в таблицах узлов В и С игнорируются, поскольку оценки 5 и 6 считаются более свежими. После этого получение для узла А новой таблицы является относительно простой задачей.

Рассмотрим случай определения маршрута от узла А к узлу D. Узел А

оценивает, что, если он направит пакет,

предназначенный для D, прямо к узлу В, то потребуется 5(АВ) плюс 4 (С - D) = 9 единиц времени. Оценка для направления пакета через узел С дает

6(АС) плюс 5 (С - D) = 11 единиц времени, так что принимается первый

выбор — направление через узел В. Процедура повторяется для всех других,

н смежных узлов сети. Трафик между АЕ направляется через узел В суммарным расстоянием 11 (5 + 6), а не через узел С с суммарным

расстоянием 12(6 + 6). Наконец, пакеты, предназначенные для узла F,

отправляются не через узел В (маршрут с суммарным расстоянием 18), а

через более короткий путь, проходящий через узел С, за 16 временных единиц.

Рис.4.9. Маршрутизация по вектору расстояния

Главный недостаток этой схемы — медленная реакция на "плохие" события

типа аварийного отключения узлов, из-за которой система продолжает

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

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

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

на "хорошие" события, например на совершенствование маршрутов.

4.4. Маршрутизация по состоянию связей

Этот вид маршрутизации является улучшенной альтернативой

маршрутизации по вектору расстояния и теперь широко используется в практических устройствах маршрутизации, например, в протоколе OSPF

(Open Shortest Path First, Первоочередное открытие кратчайших маршрутов),

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

78

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

решения. В широком смысле это простая автономная схема, состоящая из четырех шагов.

1. Идентификация и контакт с соседними узлами. Для каждого

узла необходимо знать, кто с ним соединен в любой заданный момент. Такую

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

уникальный идентификатор.

2. Определение стоимости каждого смежного узла. На этом шаге

каждый узел пытается определить расстояние или стоимость, которые связаны с

каждым из его звеньев, и затем создает таблицу с этой информацией.

3. Отправка таблицы всем остальным узлам. На этом шаге важно,

чтобы каждый узел мог принимать эти пакеты или начинал использовать их

одновременно со всеми другими узлами, иначе маршрутизация может оказаться нарушенной.

4. Вычисление каждым узлом наилучших путей ко всем

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

каждый узел может использовать формальные алгоритмы, такие как алгоритм Дейкстры.

С этой схемой связан ряд проблем. Необходимо обеспечить, чтобы в подходящие моменты времени создавались или обновлялись таблицы

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

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

выбирать пакет между узлами А—F и F—А соответственно.

Рис. 4.10. маршрутизация по состоянию связей.

79

4.5.Широковещательная маршрутизация

Взаключение рассмотрим широковещательную маршрутизацию. Она

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

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

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

Можно использовать и лавинную маршрутизацию, хотя (как в двухточечном случае) при этом генерируется слишком много пакетов и требуется

значительная полоса пропускания.

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

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

линии. Затем изготовляются копии пакета с адресным полем, содержащим адреса только тех адресатов, которые соответствуют

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

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

передачи будет завершен.

Если каждый узел знает оптимальные пути источников широковещательных

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

схема предоставляет наиболее эффективный способ передачи широковещательных пакетов, но, учитывая динамический характер

пакетных сетей и их полный размер, такую информацию практически невозможно получить.

Существует и другой способ, при котором узел будет отправлять полученный широковещательный пакет только в том случае, если он прибыл по специальному звену, который обычно используется этим узлом для

передач широковещательных пакетов обратно к их источнику. В противном случае пакет считается дубликатом и сбрасывается. Это более

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

Такая методика называется передачей по обратному маршруту (Reverse Path Forwarding, RPF). На рис. 4.46 показан простой пример того, как

работает

RPF,

и

выполнено

сравнение

этого

метода с широковещательной схемой, основанной на дереве стоков.

 

Сравнение здесь не столь очевидно, поскольку сеть не велика. Однако, если сеть большая, то можно увидеть, что передача по обратному маршруту

не будет давать столь же хорошего решения, как схема с деревом стоков, но

80