Общие принципы построения сетей. Физический уровень передачи данных. Технологии локальных сетей. Стек протоколов TCP/IP, страница 23

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

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

Для описания методов возвратного запроса и выборочно-отказного запроса необходимо рассмотреть метод скользящего окна.

Метод скользящего окна основывается на возможности передачи некоторого заранее определенного количества кадров, без ожидания подтверждения. Для контроля за подтверждением кадры получают последовательные номера. Станция получатель, подтверждает прием кадра отправляя подтверждение, содержащее либо порядковый номер следующего ожидаемого кадра, либо порядковый номер принятого кадра. Описанную схему можно использовать для подтверждения приема нескольких кадров - станция приемник может принять несколько кадров и передачей одного кадра одновременно подтвердить их получение. Таким образом, станция источник хранит список порядковых номеров кадров которые она может посылать, а станция приемник хранит список номеров кадров которые она готова принять. Каждый из этих списков можно рассматривать как окно кадров. Количество кадров содержащихся в окне называют размером окна. В процессе передачи происходит перемещение окна как у приемника так и у передатчика. Каждый раз, когда передатчику приходит подтверждение получения кадра, его окно сдвигается вправо, но размер окна остается постоянным. При получении кадра приемником, его окно также сдвигается, но без изменения размера. Так как данные передаются в пределах окна, размер которого фиксирован (или в более общем случае может варьироваться, но в определенном заданном диапазоне), то возможно ограничить нумерацию передаваемых кадров.

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