физо. Документ Microsoft Word. Московская финансовопромышленная академия Кафедра Информатики
Скачать 0.65 Mb.
|
Тема 13. Протокол ICMP Порой шлюз или хост-компьютер, получающий данные, обменивается информацией с хост-компьютером, отправляющим эти данные. Именно для таких целей используется протокол контрольных сообщений Internet (ICMP). ICMP использует основные свойства протокола Internet (IP), как если бы ICMP являлся протоколом более высокого уровня. Однако фактически ICMP является составной частью протокола Internet и должен являться составной частью каждого модуля IP. Сообщения ICMP должны отправляться в некоторых затруднительных ситуациях. Например, когда датаграмма не может достичь своего адресата или когда шлюз не имеет достаточно места в своем буфере для передачи какой-либо датаграммы. Протокол ICMP использует следующие фиксированные типы сообщений, каждое из которых содержит тот или иной код ошибки: - Пункт назначения недостижим (тип 3). Код: 0 - невозможно передать датаграмму на локальную сеть, где находится адресат; 1 - невозможно передать датаграмму на хост-компьютер, являющийся адресатом; 2 - нельзя воспользоваться указанным протоколом; 3 - нельзя передать данные на указанный порт; 4 - для передачи датаграммы по сети требуется фрагментация, однако выставлен флаг DF; 5 - сбой в маршрутизации при отправлении. - Время истекло (тип 11). Код: 0 - при передаче превышено время жизни; 1 - превышено контрольное время при сборке фрагментов датаграммы; - Проблемы с параметром (тип 12). Содержит указатель на байт в котором была обнаружена ошибка. - Подавление источника (тип 4). Шлюз может ликвидировать IP-пакеты, если у него нет места в буфере для постановки этих пакетов в очередь на отправление в очередную сеть по маршруту следования к адресату. Если шлюз ликвидирует пакет, то он должен послать сообщение для приостановки хост-компьютеру в Internet системе, отправившему данный пакет. Сообщение о приостановке может послать также сам адресат, если пакеты приходят слишком быстро, чтобы успеть их обработать. Сообщение о приостановке является запросом для хост-компьютера уменьшить скорость посылки данных на этот конкретный адрес. - Перенаправление (тип 5). Шлюз посылает сообщение на хост-компьютер о перенаправлении в следующей ситуации: Шлюз G1 получает Internet датаграмму от хост-компьютера в сети, где он расположен. Шлюз G1 проверяет таблицу маршрутизации и находит адрес слеудющего шлюза G2 в качестве маршрута для датаграммы по пути в сеть X, где расположен ее адресат. Если G2 и исходный хост-компьютер идентифицируются Internet адресом как находящиеся в одной и той же сети, то на хост-компьютер следует послать сообщение о переадресации. Сообщение о переадресации заставляет хост-компьютер посылать датаграммы для сети X прямо на шлюз G2, поскольку это более короткий путь, нежели привлекать еще шлюз G1. - Эхо-запрос (тип 8). - Эхо-ответ (тип 0). - Запрос временной метки (тип 13). - Ответ на запрос временной метки (тип 14). - Информационный запрос (тип 15). - Информационный ответ (тип 16) Данное сообщение может быть послано, когда в IP заголовке в полях отправителя и получателя записаны нули (это означает «именно эту» локальную сеть). В ответ должен быть послан IP модуль с полностью заданными адресами. Данное сообщение является способом, с помощью которого хост-компьютер сможет определить номер сети, куда он подключен. - Запрос адреса (тип 17). - Ответ на запрос адреса (тип 18). Тема 14. Протоколы маршрутизации Вопросы темы: Вопрос 1. Протокол RIPv2. Вопрос 2. Протокол OSPF. Вопрос 1. Протокол RIPv2. Дистанционно-векторные алгоритмы (также известные под названием алгоритмы Беллмана—Форда (Bellman-Fordalgorithms)) предусматривают периодическую передачу копий таблицы маршрутизации от одного маршрутизатора другому. Регулярно посылаемые между маршрутизаторами пакеты актуализации сообщают обо всех изменениях топологии. Каждый маршрутизатор получает таблицу маршрутизации от своего соседа. Затем маршрутизатор добавляет величину, отражающую вектор расстояния (скажем, количество переходов), которая увеличивает вектор расстояния, и передает таблицу маршрутизации своему следующему соседу. Такой же процесс пошагово выполняется между соседними маршрутизаторами во всех направлениях. Подобным образом алгоритм аккумулирует сетевые расстояния и поэтому способен поддерживать базу данных информации о топологии сети. Однако алгоритмы на основе вектора расстояния не позволяют маршрутизатору знать точную топологию всего сетевого комплекса. Каждый маршрутизатор, использующий дистанционно-векторные алгоритмы, начинает с идентификации или исследования своих соседей. Продолжая процесс исследования векторов расстояния в сети, маршрутизаторы как бы открывают наилучший путь до сети пункта назначения на основе информации от каждого соседа. При изменении топологии сети таблицы маршрутизации должны быть обновлены. Аналогично процессу исследования сети, обновление содержания таблиц маршрутизации из-за изменения топологии происходит шаг за шагом от одного маршрутизатора к другому. Дистанционно-векторные алгоритмы заставляют каждый маршрутизатор отсылать всю таблицу маршрутизации каждому своему непосредственному соседу. Таблицы маршрутизации, генерируемые в рамках метода вектора расстояния, содержат информацию об общей стоимости пути (определяемой его метрикой) и логический адрес первого маршрутизатора, стоящего на пути к каждой известной ему сети. Проблема: маршрутизация по замкнутому кругу. Явление маршрутизации по замкнутому кругу может возникать в тех случаях, когда плохая сходимость сети на новой конфигурации вызывает наличие противоречивых записей о маршрутах. Рассмотрим эту ситуацию. Рис. 18. Маршрутизация по кругу 1. Непосредственно перед отказом сети 1 все маршрутизаторы имеют непротиворечивую информацию и правильные таблицы маршрутизации. Как говорят, сеть сошлась. Предположим для целей данного примера, что предпочтительным путем к сети 1 в маршрутизаторе С является путь через маршрутизатор В и что в своей таблице маршрутизации маршрутизатор С имеет запись о расстоянии до сети 1, равном 3. 2. Когда в сети 1 происходит отказ, маршрутизатор Е посылает маршрутизатору А обновление, содержащее эту информацию. Маршрутизатор А прекращает направлять пакеты в сеть 1, но маршрутизаторы В, С и D продолжают это делать, так как они еще не проинформированы об отказе. После того как маршрутизатор А посылает свою обновленную таблицу маршрутизации, прекращают направлять пакеты в сеть 1 маршрутизаторы В и D, однако, маршрутизатор С по-прежнему все еще не имеет обновленной информации. Для маршрутизатора С сеть 1 все так же доступна через маршрутизатор В. Это будет как бы новый предпочтительный маршрут с метрикой, равной трем переходам. 3. Теперь маршрутизатор С посылает периодическое обновление маршрутизатору D, указывающее на наличие пути к сети 1 через маршрутизатор В. Маршрутизатор D изменяет свою таблицу маршрутизации, отражая эту хорошую, но неправильную информацию, и передает эти сведения дальше маршрутизатору А. Маршрутизатор А распространяет их маршрутизаторам В и Е и т.д. Теперь любой пакет, имеющий назначением сеть 1, начинает ходить по кругу от маршрутизатора С — к В, далее — к А, затем — к D и назад к С. Данная проблема решается с помощью задания максимального значения вектора расстояния до сети. Напомним, что маршрутизатор периодически рассылает своим соседям копию своей таблицы маршрутизации. Соседи, получив таблицу, увеличивают метрику для указанных в ней сетей на единицу. Такое увеличение не происходит до бесконечности – если значение метрики для какой либо сети достигнет 16, соседний маршрутизатор не будет передавать обновление соседу, вместо этого он будет считать данную сеть недостижимой. Вопрос 2. Протокол OSPF. Вторым основным алгоритмом, используемым для маршрутизации, является алгоритм с учетом состояния канала связи. Алгоритмы маршрутизации с учетом состояния канала связи, также известные под названием алгоритмов выбора первого кратчайшего пути (open shortest path first, OSPF, algorithms), поддерживают сложную базу данных топологической информации. И если дистанционно-векторные алгоритмы работают с неконкретной информацией о дальних сетях, то алгоритмы маршрутизации с учетом состояния канала собирают полные данные о дальних маршрутизаторах и о том, как они соединены друг с другом. Для выполнения маршрутизации с учетом состояния канала связи используются сообщения объявлений о состоянии канала (link-state advertisements, LSA или router link advertisements, RLA), база данных топологии, SPF-алгоритм, результирующее SPF-дерево и таблица маршрутизации, содержащая пути и порты к каждой сети. Инженерами концепция учета состояния канала была реализована в виде OSPF-маршрутизации. Описание концепций, заложенных в протокол OSPF, а также описание работы этого протокола содержится в документе RFC 1583. Режим исследования сети в алгоритмах с учетом состояния канала. Для создания обшей картины всей сети используются механизмы исследования сети с учетом состояния канала связи. После этого все маршрутизаторы, которые работают с алгоритмом учета состояния канала, коллективно используют это представление сети. Все это подобно существованию нескольких идентичных карт города. В режиме исследования сети при маршрутизации с учетом состояния канала связи выполняются следующие процессы. 1. Маршрутизаторы обмениваются друг с другом LSA-сообщениями. Каждый маршрутизатор начинает с непосредственно подключенных сетей, о которых у него есть прямая информация. 2. Маршрутизаторы параллельно друг с другом создают топологическую базу данных, содержащую все LSA-сообщения, сгенерированные в сетевом комплексе. 3. SPF-алгоритм вычисляет достижимость сетей, определяя кратчайший путь до каждой сети сетевого комплекса, используя при этом итеративный алгоритм Дийкстры. Маршрутизатор создает эту логическую топологию кратчайших путей в виде SPF-дерева, помещая себя в корень. Это дерево отображает пути от маршрутизатора до всех пунктов назначения. 4. Первый шаг наилучшего пути и порт, имеющий выход на эту сеть назначения, сводятся маршрутизатором в таблице маршрутизации. Если наилучшими признаются несколько путей, то в таблицу маршрутизации попадают первые шаги всех этих путей. Таким образом, обеспечивается балансировка нагрузки. Маршрутизатор также формирует и другие базы данных с топологическими элементами и подробностями о статусе. Обработка изменений топологии в протоколах маршрутизации с учетом состояния канала связи. Алгоритмы учета состояния канала связи полагаются на маршрутизаторы, имеющие общее представление о сети. При изменении топологии в сети, маршрутизаторы, которые первыми узнают об изменении, посылают информацию другим маршрутизаторам или специально назначенному маршрутизатору, который затем могут использовать все другие маршрутизаторы для обновления своей топологической информации. Это влечет за собой отсылку общей маршрутной информации всем маршрутизаторам, стоящим в сети. Для достижения сходимости каждый маршрутизатор выполняет следующие действия: 1. Отслеживает своих соседей: его имя, его рабочее состояние и стоимость линии связи с ним. 2. Создает LSA-пакет, в котором приводится перечень имен соседних маршрутизаторов и стоимость линий связи. Сюда же включаются данные о новых соседях, об изменениях в стоимости линий связи и о связях с соседями, которые стали нерабочими. 3. Посылает LSA-пакет, так что все другие маршрутизаторы получают его. 4. Получая LSA-пакет, записывает его в свою базу данных, так что он может хранить самые последние LSA-пакеты, сгенерированные каждым другим маршрутизатором. 5. Используя накопленные данные LSA-пакетов для создания полной карты топологии сети, маршрутизатор, стартуя с этой общей точки, запускает на исполнение SPF-алгоритм и рассчитывает новые маршруты до сети назначения. Каждый раз, когда LSA-пакет вызывает изменение в базе данных состояний каналов, алгоритм учета состояния каналов связи пересчитывает лучшие пути и обновляет таблицу маршрутизации. Затем каждый маршрутизатор принимает к сведению изменение топологии и определяет кратчайшие пути для использования при коммутировании пакетов. Структура группы протоколов TCP/IP имеет следующие компоненты. • Протоколы, поддерживающие передачу файлов, электронную почту, удаленный вход в систему и другие приложения. • Надежный и ненадежный транспорт. • Доставка дейтаграмм без установления соединения на сетевом уровне. Протоколы уровня приложений существуют для передачи файлов, электронной почты и удаленного доступа к системе. На уровне приложений также поддерживается управление сетью. Сетевой уровень протокола TCP/IP соответствует сетевому уровню модели OSI. Протокол ICMP обеспечивает реализацию функций управления и передачи сообщений на сетевом уровне. Этот протокол работает на всех хост-машинах, использующих стек TCP/IP. Тема 15. Транспортный уровень в семействе TCP/IP Вопросы темы: Вопрос 1. Протокол TCP. Вопрос 2 Формат заголовка TCP сегмента. Вопрос 3.Открытое TCP-соединение с трехсторонним квитированием. Вопрос 4. Простое подтверждение и работа с окнами в протоколе TCP. Вопрос 5. Порядковые номера и номера подтверждений в протоколе TCP. Вопрос 6. Протокол UDP. Транспортный уровень, называемый также основным уровнем, предоставляет вышележащему – прикладному – уровню два типа сервиса: • надёжная доставка, реализуется протоколом TCP; • доставка по возможности, обеспечивается протоколом UDP. Протокол управления передачей (Transmission Control Protocol, TCP) – надежный протокол с установлением соединения. Он отвечает за разбиение сообщений на сегменты, их сборку на станции в пункте назначения и повторную отсылку сегментов, если они не дошли до получателя. Протокол TCP обеспечивает виртуальный канал между приложениями конечных пользователей. Протокол дейтаграмм пользователя (User Datagram Protocol, UDP) – «ненадежный», не ориентированный на установление соединения. Хотя протокол UDP и отвечает за передачу сообщений, в нём отсутствуют функции для проверки доставки сегментов; отсюда и определение «ненадежный». Вопрос 1. Протокол TCP. В этом параграфе приводится описание протокола TCP, основанное на стандарте RFC793. Протокол управления передачей (TCP) предназначен для использования в качестве надежного протокола общения между хост-машинами в коммуникационных компьютерных сетях с коммутацией пакетов, а также в системах, объединяющих такие сети. Протокол TCP способен передавать непрерывные потоки октетов (байтов) между своими клиентами в обоих направлениях, пакуя некое количество байтов в сегменты для передачи через системы Internet. В общем случае протоколы TCP решают по своему усмотрению, когда производить блокировку и передачу данных. Протокол TCP должен иметь защиту от разрушения данных, потери, дублирования и нарушения очередности получения, вызываемых коммуникационной системой Internet. Это достигается присвоением очередного номера каждому передаваемому октету, а также требованием подтверждения (ACK) от программы TCP, принимающей данные. Если подтверждения не получено в течении контрольного интервала времени, то данные посылаются повторно. Со стороны получателя номера очереди используются для восстановления очередности сегментов, которые могут быть получены в неправильном порядке, а также для ограничения возможности появления дубликатов. Повреждения фиксируются посредством добавления к каждому передаваемому сегменту контрольной суммы, проверки ее при получении и последующей ликвидации дефектных сегментов. Протокол TCP дает средства получателю управлять количеством данных, посылаемых ему отправителем. Это достигается возвратом так называемого «окна» (window) вместе с каждым подтверждением, которое указывает диапазон приемлемых номеров, следующих за номером последнего успешно принятого сегмента. Окно определяет количество октетов, которое отправитель может послать до получения дальнейших указаний. Чтобы позволить на отдельно взятом компьютере многим процессам одновременно использовать коммуникационные возможности уровня TCP, протокол TCP предоставляет на каждой хост-машине набор адресов или портов. Вместе с адресами сетей и узлов на сетевом уровне стека они образуют сокет. Каждое соединение уникальным образом идентифицируется парой сокетов. Таким образом, любой сокет может одновременно использоваться во многих соединениях. Соотнесение портов и процессов осуществляется каждым узлом самостоятельно. Однако оказывается полезным связывать часто используемые процессы (такие как HTTP или FTP) с фиксированными документированными портами. Эти номера портов определенны в документе RFC 1700. Например, любой обмен, связанный с пересылкой файлов по протоколу FTP, использует стандартный номер порта 21. Механизмы управления потоком и обеспечения достоверности, описанные выше, требуют, чтобы программы протокола TCP инициализировали и поддерживали определенную информацию о состоянии каждого потока данных. Набор такой информации, включающий сокеты, номера очереди, размеры окон, называется соединением. Каждое соединение уникальным образом идентифицируется парой сокетов на двух концах. Если два процесса желают обмениваться информацией, соответствующие программы протокола TCP должны сперва установить соединение (на каждой стороне инициализировать информацию о статусе). По завершении обмена информацией соединение должно быть расторгнуто или закрыто, чтобы освободить ресурсы для предоставления другим пользователям. Поскольку соединения должны устанавливаться между ненадежными хост-машинами и через ненадежную коммуникационную систему Internet, то во избежание ошибочной инициализации соединений используется механизм подтверждения связи с хронометрированными номерами очереди. Вопрос 2 Формат заголовка TCP сегмента. Передача TCP сегментов осуществляется в виде IP датаграмм. Заголовок датаграммы в IP протоколе имеет несколько информационных полей, включая адреса отправляющего и принимающего хост-компьютеров. Заголовок TCP следует за IP заголовком и дополняет его информацией, специфической для TCP протокола. Такое деление допускает использование на уровне хост-компьютеров протоколов, иных нежели TCP. Отметим, что каждая метка указывает здесь место для соответствующего бита. Рассмотрим основные поля заголовка TCP сегмента. Source Port (порт источника) – номер порта отправителя. Destination Port (порт назначения) – номер порта получателя. Sequence Number (порядковый номер) – номер очереди для первого октета данных в данном сегменте (за исключением тех случаев, когда присутствует флаг синхронизации SYN). Если же флаг SYN присутствует, то номер очереди является инициализационным (ISN), а номер первого октета данных - ISN+1 Acknowledgment Number (номер подтверждения) – если установлен контрольный бит ACK, то это поле содержит следующий номер очереди, который отправитель данной датаграммы желает получить в обратном направлении. Номера подтверждения посылаются постоянно, как только соединение будет установлено. HLEN (длина заголовка) – количество 32-битных слов в TCP заголовке. Указывает на начало поля данных. Reserved (зарезервировано) – это резервное поле, должно быть заполнено нулями URG, ACK, PSH, PST, SYN, FIN (флаги). URG: поле срочного указателя задействовано. ACK: поле подтверждения задействовано. PSH: функция проталкиванияpar RST: перезагрузка данного соединения. SYN: синхронизация номеров очереди. FIN: нет больше данных для передачи. Window (окно) – количество октетов данных, начиная с октета, чей номер указан в поле подтверждения. Количество октетов, получения которых ждет отправитель настоящего сегмента. Checksum (контрольная сумма) – расчетная контрольная сумма заголовка и полей данных. Urgent Pointer (указатель срочных данных) – указывает конец срочных данных. Options (опция) – в настоящее время определена одна: максимальный размер ТСР-сегмента. Data (данные) – данные протокола прикладного уровня. Вопрос 3.Открытое TCP-соединение с трехсторонним квитированием. Для установления соединения программы протокола TCP должны синхронизировать начальные порядковые номера (ISN) сегментов друг друга для данного соединения. Эта процедура обычно инициируется программой протокола TCP в ответ на запрос другой программы TCP. Порядковые номера используются для того, чтобы отслеживать последовательность обмена и гарантировать отсутствие потерянных фрагментов данных, которые требуют для пересылки нескольких пакетов. Начальный порядковый номер представляет собой стартовый номер, используемый при установлении TCP-соединения. Обмен начальными порядковыми номерами в процессе выполнения последовательности установления соединения гарантирует возможность восстановления потерянных данных, если в будущем возникнут проблемы. Синхронизация выполняется путем обмена сегментами, несущими номера ISN и управляющий бит, называемый SYN (от английского synchronize – синхронизировать. Сегменты, содержащие бит SYN, тоже называются SYN.) Для успешного соединения требуется наличие подходящего механизма выбора начального порядкового номера и процесс квитирования, который обеспечивает обмен значениями ISN. Процесс синхронизации требует, чтобы каждая сторона послала свой номер ISN и получила подтверждение и ISN от другой стороны соединения. Каждая сторона должна принимать ISN от другой стороны и посылать положительное подтверждение (АСК) в определенном u1087 порядке, который описан в следующей последовательности шагов. 1. А => В SYN – мой порядковый номер X. 2. А <= В АСК – твой порядковый номер X. 3. А <= В SYN – мой порядковый номер Y. 4. А => В АСК – твой порядковый номер Y. Второй и третий шаги могут объединяться в одном сообщении, и такой обмен называется открытым с трехсторонним квитированием (three-way handshake/open). Вопрос 4. Простое подтверждение и работа с окнами в протоколе TCP. Размером окна называют количество сегментов, которое может быть передано до получения подтверждения. После того как хост-машина передаст определяемое размером окна количество сегментов, она должна будет получить подтверждение и только потом сможет послать какие-либо другие сообщения. Размер окна определяет объем данных, который может принять принимающая станция за один раз. Если размер окна равен 1, подтверждаться должен каждый сегмент, и только после этого передается следующий. Это приводит к неэффективному использованию хост-машиной полосы пропускания. Целью введения механизма окон является улучшение управления потоком и надежности. Скользящие окна в протоколе TCP Окно, посылаемое с каждым сегментом, указывает диапазон номеров очереди, которые отправитель окна (он же получатель данных) готов принять в настоящее время. Предполагается, что такой механизм связан с наличием в данный момент места в буфере данных. Указание окна большого размера стимулирует передачу. Но если пришло большее количество данных, чем может быть принято программой TCP, данные будут отброшены. Это приведет к излишним пересылкам информации и ненужному увеличению нагрузки на сеть и программу TCP. Указание окна малого размера может ограничить передачу данных скоростью, которая определяется временем путешествия по сети подтверждения после каждого посылаемого сегмента. Выделение очень малого окна приводит к передаче данных очень маленькими сегментами, тогда как лучший режим передачи осуществляется при использовании сегментов большего размера. Слово «скользящее» в термине скользящее окно отражает тот факт, что размер окна согласуется динамически во время TCP-сеанса. Использование скользящего окна приводит к более эффективному использованию хост-машиной полосы пропускания, поскольку больший размер окна позволяет передавать больший объем данных, откладывая момент получения подтверждения. Вопрос 5. Порядковые номера и номера подтверждений в протоколе TCP. Протокол TCP обеспечивает организацию последовательности сегментов, которую предваряет подтверждение с номером, определяющим точку отсчета. Перед передачей каждый сегмент нумеруется. На принимающей станции протокол TCP собирает сегменты в полное сообщение. Если какой-либо порядковый номер в последовательности теряется, то сегмент с этим номером передается повторно. Кроме того, если через заданный период времени сегмент не получает свое подтверждение, то он тоже передается повторно. Порядковые номера и номера подтверждений являются направленными. Это означает, что связь осуществляется в обоих направлениях. Подтверждения гарантируют надежность. Вопрос 6. Протокол UDP. Этот протокол (User Datagram Protocol, UDP) проектировался для создания в объединенной системе компьютерных сетей режима передачи датаграмм клиента. Протокол UDP предполагает, что нижестоящим протоколом является протокол IP. Протокол UDP предоставляет прикладной программе процедуру для посылки сообщений другим программам, причем механизм протокола минимален. Протокол UDP ориентирован на транзакции; получение датаграмм и защита от дублирования не гарантированы. Приложения, требующие гарантированного получения потоков данных, должны использовать протокол управления передачей (Transmission Control Protocol, TCP). Если задействован порт отправителя, то он указывает порт процесса, посылающего датаграмму. Можно принять, что это тот порт, на который при отсутствии какой-либо иной информации следует адресовать ответную датаграмму. Если данное поле не задействовано, то в него следует записать нули. Порт получателя имеет смысл только в контексте конкретного IP-адреса получателя. Длина – количество байт данной датаграммы, включая как заголовок, так и данные (Это означает, что минимальное значение поля длины равно восьми). Контрольная сумма – расчетная контрольная сумма заголовка и полей данных. Главным применением протокола UDP являются системы Domain Name System (DNS) и Trivial File Transfer (TFTP). Транспортный уровень стека TCP/IP включает два протокола - протокол управления передачей (Transmission Control Protocol, TCP) и протокол пользовательских датаграмм (User Datagram Protocol, UDP). Протокол TCP выполняет две функции. Управление потоком, которое обеспечивается за счет использования механизма скользящих окон. Обеспечение надежности, которая достигается благодаря наличию порядковых номеров и подтверждений. Протокол UDP не имеет средств управления потоком и обеспечения надежности, однако способен передавать данные немедленно, без установления соединения. |