Логическое взаимодействие передатчика и приемника при передаче данных.
Механизмы "окна", "тайм-аута" и циклической нумерации
|
Оглавление
|
Интенсивность передачи блоков данных источником должна быть согласована
с интенсивностью обработки пакетов получателем. Если интенсивность передачи
превышает интенсивность обработки, блоки будут накапливаться в сети, что
сначала приведет к снижению пропускной способности сети, а в конце концов
- к блокировке участка сети и сети в целом из-за переполнения буферной
памяти, используемой для промежуточного хранения данных. Эту ситуацию можно
исключить, если не допускать передачи блоков с интенсивностью, превышающей
интенсивность обработки. Согласование обеспечивается за счет управления
потоком блоков между передатчиком и приемником.
Управление потоком основывается на механизме квитанций - сообщений,
подтверждающих прием блоков приемником.
Обмен блоками между передатчиком и приемником
Рис.1
Основной принцип управления состоит в следующем. Передаваемый блок
сохраняется в памяти передатчика, ожидая прихода подтверждения о правильном
приеме блока приемником. По прибытии подтверждения блок уничтожается. Если
из-за наличия шумов в канале связи блок прибудет в принимающий узел с ошибками
или окажется, что буферная память этого узла уже заполнена, то подтверждение
о приеме блока не может быть выслано и источник должен через какое-то время
переслать копию того же блока. Передача может быть повторена с помощью
механизма тайм-аута.
Механизм тайм-аут
Тайм-аут - промежуток времени, отводимый для получения сигнала, подтверждающего
выполнение соответствующего действия. Если в течении тайм-аута подтверждение
в узел-источник не поступило, предпринимается повторная передача последнего
переданного блока.
ПРД - передатчик (узел-источник)
ПРМ - приемник (узел-приемник)
ask - подтверждение (квитанция)
noask - подтверждение не поступало
Рис.2
Естественно, что в реальных сетях могут быть искажены не только блоки
данных, но и сигналы подтверждений, поскольку они передаются по тому же
каналу. Таким образом, правильно принятый блок может оказаться неподтвержденным.
В некоторых случаях квитанция может прийти в узел-источник слишком поздно.
В этих обстоятельствах происходит повторная передача, что может привести
к появлению в приемнике двух копий одного блока. Поэтому необходимо предусмотреть
средства, позволяющие приемнику отличить новые блоки от копий уже принятых
блоков. Это можно обеспечить введением в заголовок блоков "переменного
бита". Он представляет собой один двоичный разряд в заголовке блока, значение
которого меняется на противоположное при последовательной передаче каждого
нового блока данных. Переменный бит включается также и в сигнал квитанции,
указывая передающему узлу, к какому информационному блоку относится данное
подтверждение.
Недостатком такой передачи блоков данных по каналу является то,
что следующий блок передается только после подтверждения о приеме предыдущего.
В таком случае пропускная способность канала используется лишь частично
и потери ее возрастают с увеличением скорости передачи и протяженности
канала. Во избежании этого допускается передача совокупности блоков, прежде
чем придет квитанция, подтверждающая прием первого из них.
Механизм окна
Чтобы соотнести блоки и квитанции, последовательность передаваемых блоков
должна быть пронумерована: первому блоку присваивается номер 0, второму
- 1 и т.д. Предварительное число блоков, передаваемых до получения подтверждения,
называется шириной окна (W).
Перед началом передачи в передатчике и приемнике должны быть установлены
одинаковые начальные номера 0. В момент времени t порядковый номер передаваемого
блока будет равен Nt, а номер блока, ожидаемого в приемнике, - Nr. В начальный
период времени узел передает блоки с номерами 0 <= Nt < W, где W
- ширина окна. Приемник все прибывшие блоки проверяет на наличие ошибок,
и искаженные блоки считаются потерянными.
- Если поступил блок с номером N = Nr, то он будет принят в правильной последовательности,
о чем посылается квитанция, содержащая номер N.
- Если N > Nr, то принятый блок опережает правильную последовательность и,
следовательно, предшествующий блок утерян. В этом случае квитанция о приеме
блока N не высылается.
- Если N < Nr, то блок N является копией предыдущего блока, повторная
передача которого произошла из-за потери квитанции. Поэтому приемник посылает
подтверждение о приеме блока N, а принятая копия уничтожается.
Передатчик реагирует на квитанции следующим образом. При поступлении очередной
квитанции с номером блока 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, тем эффективнее используется
пропускная способность канала, но это достигается за счет увеличения в
узлах емкости памяти, обеспечивающей работу канала. Ширина окна должна
быть тем больше, чем пропускная способность и протяженность канала.
Предыдущий
|
|
Следующий
|