Логическое взаимодействие передатчика и приемника при передаче данных. Механизмы "окна",
"тайм-аута" и циклической нумерации

Back Оглавление

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

Обмен блоками между передатчиком и приемником

Рис.1

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

Механизм тайм-аут

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

ПРД - передатчик (узел-источник)
ПРМ - приемник (узел-приемник)
ask - подтверждение (квитанция)
noask - подтверждение не поступало
Рис.2

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

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

Механизм окна

Чтобы соотнести блоки и квитанции, последовательность передаваемых блоков должна быть пронумерована: первому блоку присваивается номер 0, второму - 1 и т.д. Предварительное число блоков, передаваемых до получения подтверждения, называется шириной окна (W).
Перед началом передачи в передатчике и приемнике должны быть установлены одинаковые начальные номера 0. В момент времени t порядковый номер передаваемого блока будет равен Nt, а номер блока, ожидаемого в приемнике, - Nr. В начальный период времени узел передает блоки с номерами 0 <= Nt < W, где W - ширина окна. Приемник все прибывшие блоки проверяет на наличие ошибок, и искаженные блоки считаются потерянными. Передатчик реагирует на квитанции следующим образом. При поступлении очередной квитанции с номером блока N соответствующий блок уничтожается и передается очередной блок. С учетом порядка работы приемника получение подтверждения о приеме блока с номером N, большим номера предыдущего подтвержденного блока, свидетельствует о приеме всей последовательности блоков до N включительно. Копии этих блоков уничтожаются. Для каждой хранимой в узле-источнике копии блока назначается тайм-аут. Если он истекает до получения квитанции, блок повторно направляется получателю и за ним направляются все блоки с последующими номерами, так как приемник игнорирует передачи блоков, поступивших вслед за потерянным. Этот порядок передачи блоков гарантирует прием блоков в той последовательности, в которой они передавались узлом-источником.

Пример:
Рис.3

Ширина окна равна 3 блокам. Узел А высылает блоки 3, 4, 5, причем последний еще находится в канале передачи к узлу В. Узел В принял все блоки до 4 включительно. Он высылает подтверждение о приеме блоков 3 и 4 и сдвигает окно для приема блоков 5, 6 и 7, которые должны прибыть именно в этом порядке. Когда узел А получит 3 и 4, он может последовательно передать блоки 6 и 7.

Механизм циклической нумерации

Для кодирования номеров блоков отводится конечное число битов k и нумерация производится циклически: 0, 1, ..., 2k - 1,0, 1, ..., 2k - 1, ... Ширина окна W определяет число блоков, копии которых сохраняются после передачи в узле-источнике, и одновременно число буферов, используемых в узле для хранения блоков. Чем больше значение W, тем эффективнее используется пропускная способность канала, но это достигается за счет увеличения в узлах емкости памяти, обеспечивающей работу канала. Ширина окна должна быть тем больше, чем пропускная способность и протяженность канала.


Prev Предыдущий Next Следующий
Hosted by uCoz