- •Лекция “алгоритмы передачи данных”
- •Fast Ethernet и 100vg-AnyLan как развитие технологий Ethernet
- •Правила построения сегментов Fast Ethernet при использовании повторителей
- •Особенности технологии 100vg-AnyLan:
- •Технология Gigabit Ethernet
- •Базовые протоколы tcp/ip Порты и сокеты
- •Протокол udp и udp дейтаграммы
- •Tcp и tcp сегменты
- •Логические соединения
- •Повторная передача и скользящее окно
- •Реализация метода скользящего окна в протоколе tcp
- •Управление потоками
- •Общие свойства и классификация протоколов маршрутизации
- •Протокол rip. Построение таблицы маршрутизации
- •Адаптация маршрутизаторов rip к изменениям состояния сети
- •Пример зацикливания пакетов (самостоятельно!!!)
- •Методы борьбы с ложными маршрутами в протоколе rip
- •Построение таблицы маршрутизации с помощью протокола ospf
- •Метрики протокола ospf (самостоятельно!!!)
- •Маршрутизация в неоднородных сетях Взаимодействие протоколов маршрутизации
- •Внутренние и внешние шлюзовые протоколы
- •Протокол bgp (самостоятельно!!!)
- •Протокол icmp (самостоятельно!!!)
- •Утилита ping (самостоятельно!!!)
- •Утилита traceroute
Повторная передача и скользящее окно
Основной приём, используемый для организации надёжной передачи – квитирование (т.е. отправитель отсылает данные и ждёт квитанцию, подтверждающую, что его данные дошли до адресата). В протоколе TCP используется частный случай квитирования – алгоритм скользящего окна.
Существует ещё один метод организации квитирования – метод простоя источника. Метод простоя источника требует, чтобы источник, пославший кадр, дожидался от приёмника квитанции, извещающей о том, что кадр получен корректно, и только после этого посылается следующий кадр или повторяется искажённый. Если квитанция не пришла в определённое время, то кадр считается утерянным и передача его повторяется.
Недостаток метода простоя источника: простой оборудования
При скользящем окне для повышения скорости передачи данных источнику разрешается передать некоторое количество кадров в непрерывном режиме до получения на эти кадры квитанции. Количество кадров, которое разрешается передать, это размер окна. В начальный момент, когда ещё не послано ни одного кадра, окно определяет диапазон номеров кадров исходя из размеров. Источник начинает передавать кадры и через какое-то время получать в ответ квитанции. Квитанции не обязательно приходят последовательно (в данной сети способ коммутации пакетов (квитанции могут приходить вразнобой, т.к. пакеты могут идти разными маршрутами)).
В момент получения отправителем квитанции окно сдвигается на одну позицию вверх, определяя новый диапазон разрешённых к отправке кадров. Процессы отправки пакетов и получения квитанции идут относительно независимо друг от друга. После передачи последнего кадра окно исчерпывается и источник приостанавливает передачу, аналогично скольжение окна происходит после получения каждой квитанции. При отправке кадра в источнике устанавливается timeout. Если за установленное время квитанция на отправленный кадр не пришла, то кадр считается утерянным и передаётся снова. Если поток квитанций поступает регулярно в пределах допуска размера кадра, то скорость обмена достигается максимально возможной для данного канала или протокола.
Когда сеть плохая, каналы плохие, то лучше использовать простой источника. В противном случае лучше использовать скользящее окно.
Реализация метода скользящего окна в протоколе tcp
В протоколе TCP этот метод имеет некоторые существенные особенности. Хотя единицей передаваемых данных протокола TCP является сегмент, окно определено на множестве нумерованных байтов неструктурированного потока данных передаваемого приложения протоколу TCP. В ходе переговорного процесса модули TCP договариваются между собой о параметрах процедуры обмена данными, одним из таких параметров является начальный номер байта, с которого будет вестись отсчёт в течение всего функционирования данного соединения. Нумерация осуществляется начиная от заголовка. Когда отправитель посылает TCP сегмент, он помещает в поле последовательного номера номер первого байта данного сегмента, который служит идентификатором сегмента. На основании этих номеров получатель TCP сегмента не только отличает данный сегмент от других, но и позиционирует полученный фрагмент относительно общего потока байтов. В качестве квитанции получатель сегмента отсылает ответное сообщение, где в поле подтверждённого номера помещается число, на единицу превышающее максимальный номер байта в полученном сегменте. Подтверждённый номер интерпретируется не только как оповещение о благополучной доставке, но и как номер следующего ожидаемого байта данных. Квитанция в протоколе TCP отсылается в случае только правильного приёма данных.
В соответствии с определённым форматом один и тот же TCP сегмент может нести в себе как пользовательские данные, так и квитанцию, которой подтверждается получение данных другой стороной.
Т.к. протокол TCP дуплексный, то у каждой стороны есть пара буферов, один для хранения принятых сегментов, другой для хранения сегментов, которые предстоит отправить. Кроме того, есть буфер для хранения копий сегментов, которые были отправлены, но квитанция о получении которых ещё не поступает.
При установлении соединения участники обмениваются окнами приёма, в этом окне указывается сколько байтов разрешается отправить с момента получения последней квитанции. Из потока байтов, поступающих от приложения в выходной буфер, модуль TCP нарезает последовательность сегментов и поочерёдно отправляет их приложению-получателю. В этом потоке можно указать следующие логические границы:
Отделяет сегменты, которые уже были отправлены и на которые уже пришли квитанции.
Располагается вслед за 1-ой границей и определяется размером окна, т.е. количеством байт, составляющих сегменты, которые отправлены, но квитанции на которые ещё не получены
Это сегменты, которые не отправлены, но могут быть отправлены, т.к. входят в пределы окна
Указывает на начало последовательности сегментов, ни один из которых не может быть отправлен до тех пор, пока не придёт очередная квитанция и окно не будет сдвинуто.
