Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по алгоритмам передачи данных.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
307.05 Кб
Скачать

Повторная передача и скользящее окно

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

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

Недостаток метода простоя источника: простой оборудования

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

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

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

Реализация метода скользящего окна в протоколе tcp

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

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

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

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

  1. Отделяет сегменты, которые уже были отправлены и на которые уже пришли квитанции.

  2. Располагается вслед за 1-ой границей и определяется размером окна, т.е. количеством байт, составляющих сегменты, которые отправлены, но квитанции на которые ещё не получены

  3. Это сегменты, которые не отправлены, но могут быть отправлены, т.к. входят в пределы окна

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