Галкин В.А., Григорьев Ю.А. - Телекоммуникации и сети (1053870), страница 94
Текст из файла (страница 94)
Протокол Hello. Послеишщиализащш модуля OSPF (например, после подачи питания на маршрутизатор) через все интерфейсы, включенные в OSPF-систему, начинают рассылаться Hello-сообщения. Задача Hello-протокола состоит в обнаружении соседей и установлении с ними отношений смежности. Соседями называютOSPF-маршрутизаторы, подключенные к одной сети (к одной линии связи) иобменивающиеся Hello-сообщениями. Смеэ/сными назьюают соседние OSPFмаршрутизаторы, которые приняли решение обмениваться друг с другом информацией, необходимой для синхронизащш базы данных состояния связей ипостроения маршрутов. Не все соседи становятся смежными.Д^)угой задачей протокола Hello является выбор вьщеленного маршрутизатора в сети с множественным доступом, к которой подключено несколько маршрутизаторов.Hello-пакеты периодически рассьшаются и после того, как соседи обнаружены.
Так маршрутизатор контролирует состояние своих связей с соседями иможет своевременно обнаружить изменение этого состояния (например, обрыв связи или отключение одного из соседей). Обрью связи можно также об3965.5. Протоколы III уровня стека TCP/IPнаружить и с помощью протокола канального уровня, которьш просигнализирует о недоступности канала.В сетях с возможностью широковещательной рассьшки (broadcast networks)Hello-пакеты рассылаются по мультикастинговому адресу 224.0.0.5 («ВсемOSPF-маршрутизаторам»).
В других сетях все возможные адреса соседейдолжны быть введены администратором.Протокол обмена. После установления отношений смежности для каждой пары смежных маршрутизаторов осуществляется синхронизащы их базданных. Эта же операщм проводится при восстановлении ранее разорванногосоединения, поскольку в образовавшихся после аварии двух изолированных подсистемах базы данных развивались независимо друг от друга. Синхронизациябаз данных происходит с помощью протокола обмена (Exchange protocol).Сначала маршрутизаторы обмениваются только описаниями своих баз данных (Database Description), содержащими идентификаторы записей и номераих версий, что позволяет избежать пересьшки всего содержимого базы данных, если нужно синхронизировать только несколько.Во время этого обмена каждый маршрутизатор формирует список записей,содержимое которых он должен запросить (т.
е. эти записи в его базе данныхустарели либо отсутствуют), и соответственно отправляет пакеты запросов осостоянии связей (Link State Request). В ответ он получает содержимое последних версий нужных ему записей в пакетах типа «Обновление состояния связей (Link State Update)».После синхронизации баз данных осуществляется построение маршрутов,как описано ранее.Протокол затопления. Каждый маршрутизатор отвечает за те и толькоте записи в базе данных состояния связей, которые описьшают связи, исходящие от данного маршрутизатора. Это означает, что при образовании новой связи,изменении в состоянии связи или ее исчезновении (обрьше), маршрутизатор,ответственный за эту связь, должен соответственно изменить свою копию базыданных и немедленно известить все остальные маршрутизаторы OSPF-CHCTQмы о произошедших изменениях, чтобы они также внесли исправления в своикопии базы данных.Подпротокол OSPF, выполняющий эту задачу, называется протоколомзатопления (Flooding protocol).
Этот протокол пересьшает сообщения типа«Обновление состояния связей (Link State Update)», получение которых подтверждают сообщения типа «Link State Acknowledgment».Каждая запись о состоянии связей имеет свой номер (номер версии), который также хранится в базе данных. Каждая новая версия записи имеет ббльший номер. При рассьшке сообщений об обновлении записи в базе данных номер записи также включается в сообщение для предотвращеьшя попадания вбазу данных устаревших версий.3975. Сетевые протоколыМаршрутизатор, ответственный за запись об изменившейся связи, рассылает сообщение «Обновление состояния связи» по всем интерфейсам.
Однаконовые версии состояния одной и той же связи должны появляться не чаще, чемоговорено определенной константой. Далее на всех маршрутизаторах OSPFсистемы действует следующий алгоритм.1. Получить сообщение. Найти соответствующую запись в базе данных.2. Если запись не найдена, добавить ее в базу данных, передать сообщениепо всем интерфейсам.3. Если номер записи в базе данных меньше номера пришедшего сообщения, заменить запись в базе данньпс, передать сообщение по всем интерфейсам.4. Если номер записи в базе данных больше номера пришедшего сообщенияи эта запись не бьша недавно разослана, разослать содержимое записи из базыданных через тот интерфейс, откуда пришло сообщение. Понятие «недавно»определяется значением константы.5.
В случае равных номеров записей сообщение игнорировать.Протокол OSPF устанавливает для записи характеристику возраст. Возрастравен нулю при создании записи в базе данньгс. При затоплении OSPF-системы сообщениями с данной записью каждый маршрутизатор, который ретранслирует сообщение, увеличивает возраст записи на определенную величину. Кроме этого, возраст увеличивается на единицу каждую секунду. Из-за разнищ>1во времени пересьшки, в количестве промежуточных маршрутизаторов и подругим причинам возраст одной и той же записи в базах данных на разныхмаршрутизаторах может несколько различаться.При достижении возрастом максимального значения (60 мин), соответствующая запись расценивается маршрутизатором как просроченная и непригодная для вычисления маршрутов.
Такая запись должна быгь удалена из базыданных.Поскольку базы данных на всех маршрутизаторах системы должны бытьидентичны, просроченная запись должна быть удалена из всех копий базы данных на всех марпфутизаторах. Это осуществляется с использованием протокола затопления: маршрутизатор затапливает систему сообщением с просроченной записью. Соответственно, в описанный выше алгоритм обработкисообщения вносятся дополнения, связанные с получением просроченного сообщения и удалением соответствующей записи из базы данных.Чтобы записи в базе данньпс не устаревали, маршрутизаторы, ответственные за них, должны через каждые 30 мин затапливать систему сообщениямиоб обновлении записей, даже если состояние связей не изменилось.
Содержимое записей в этих сообщениях неизменно, но номер версии больше, а возрастравен нулю.3985.6. Протоколы IIуровня стека TCP/IPВышеописанные протоколы обеспечивают актуальность информации, содержащейся в базе данных состояния связей, оперативное реагирование наизменения в топологии системы сетей и синхронизацию копий базы данных навсех маршрутизаторах системы. Для обеспечения надежности передачи данных реализован механизм подтверждения приема сообщений и вычисляетсяконтрольная сумма.
В протоколе OSPF может быгь применена ^пгентификация сообщений.5.6. Протоколы II уровня стека ТСРЯРПротокол управления передачей TCPОсновные характеристики и понятия протокола. Протокол управления передачей TCP (Transmission Control Protocol) является протоколом транспортного уровня и базируется на возможностях, предоставляемых межсетевым протоколом IP. Основная задача TCP - обеспечение надежной передачиданных в сети. Его транспортный адрес в заголовке 1Р-сегмента равен 6. Описание протокола TCP дано в RFC 793.Основные характеристики протокола TCP следующие:• реализует взаимодействие в режиме с установлением логического (виртуального) соединения;• обеспечивает двунаправленную дуплексную связь;• организует потоковый (с точки зрения пользователя) тип передачи данных;• дает возможность пересылки части данных как «экстренных»;• для идентификации партнеров по взаимодействию на транспортном уровне использует 16-битовые «номера портов»;• реализует принцип «скользящего окна» (sliding window) для повьппенияскорости передачи;• поддерживает ряд механизмов для обеспечения надежной передачи данных.В то время как задачей сетевого уровня является передача данных междупроизвольными узлами сети, задача транспортного уровня заключается в передаче данньпс между любыми прикладными процессами, вьшолняюцщмисяна любых узлах сети.
Действительно, после того как пакет средствами протокола IP доставлен в компьютер-получатель, данные необходимо направить конкретному процессу-получателю. Каждый компьютер может выполнять несколько процессов, более того, прикладной процесс тоже может иметь несколькоточек входа, выступающих в качестве адреса назначения для пакетов данньпс.Пакеты, поступающие на транспортный уровень, организуются операционной системой в виде множества очередей к точкам входа различньпс прикладных процессов. В терминологии ТСРЯР такие системные очереди назьюаютпортами. Таким образом, адресом назначения, используемым на транспортном уровне, является идентификатор (номер) порта прикладного сервиса.
Номер порта, задаваемый транспортным уровнем, в совокупности с номером сетии номером компьютера, задаваемыми сетевым уровнем, однозначно определяют прикладной процесс в сети.3995. Сетевые протоколы2315Порт источника31Порт приемникаНомер в последовательностиНомер подтвержденияСмещениеРезервUL\|rfGttClРазмер окнат\ымКонтрольная суммаДополнительные данные заголовкаУказательДанныевьфавниванияРис. 5.48. Формат заголовка пакета TCPНесмотря на то что для пользователя передача данных с использованиемпротокола TCP выглядит как потоковая, на самом же деле обмен между партнерами осуществляется посредством пакетов данных, которые мы будем называть «ТСР-пакетами».Формат заголовка пакета TCP и назначение полей. На рис.
5.48 приведен формат заголовка ТСР-пакета. Порт источника и порт приемника представляют собой 16-битовые поля, содержащие номера портов, соответственно, источника и адресата ТСР-пакета. Номер в последовательности (sequencenumber) - 32-битовое поле, содержимое которого определяет (косвенно) положение данных ТСР-пакета внутри исходящего потока данных, существующегов рамках текущего логического соединения.В момент установления логического соединения каждый из двух партнеровгенерирует свой начальный «номер в последовательности», основное требование к которому - не повторяться в промежутке времени, в течение которогоТСР-пакет может находиться в сети (по сути, это время жизни 1Р-сегмента).Партнеры обмениваются этими начальными номерами и подтверждают ихполучение. Во время отправления ТСР-пакетов с данными поле «номер в последовательности» содержит сумму начального номера и количества байт ранее переданных данных.Номер подтверждения (acknowledgement number) - 32-битовое поле, содержимое которого определяет (косвенно) количество принятых данньпс из входящего потока к ТСР-модулю, формирующему ТСР-пакет.Смещение данных - 4-битовое поле, содержащее длину заголовка ТСР-пакета в 32-битовьпс словах и используемое для определения начала расположения данных в ТСР-пакете.Флаг URG - бит, единичное значение которого означает, что ТСР-пакет содержит важные (urgent) данные.