5.1 Поток по образцу.
Если приемник может перенаправить последовательный в/в на
диск и если передатчик может использовать обратный канал для
контроля наличия данных без ожидания,то можно использовать
полный поток без ответной Attn последовательности.Передатчик
начинает передавать с ZDATA заголовка и продолжает ZCRCG
подпакетом данных.Когда приемник обнаруживает ошибку он
посылает Attn последовательность и затем посылает ZRPOS
заголовок с корректной позицией в файле.
В конце каждого передаваемого подпакета данных передатчик
проверяет присутствие заголовка ошибок от приемника.Обнаружив
его передатчик выбирает из данных обратного канала ZPAD или CAN
и выполняет требуемые действия.
Другие символы инкримируют счетчик,который сбрасывается
когда передатчик ждет заголовок от приемника.Если счетчик
переполняется передатчик посылает следующий подпакет как ZCRCW
и ждет ответа.
ZPAD индицирует ошибку приемника.CAN это попытка
пользователя остановить передачу.Если один из этих символов
будет обнаружен,то посылается пустой пакет ZCRCE.Обычно
приемник посылает ZRPOS или другой ошибочный заголовок,который
заставляет передатчик прекратить передачу и выполнить команду.
Если ZPAD или CAN не обнаружен в течении таймаута,то
посылается ZRPOS заголовок.Затем читается ответный заголовок и
выполняется команда.
ZRPOS заголовок сбрасывает текущее смещение в файле на
корректную позицию.Если возможно,то передатчик должен очистить
выходной буфер и/или сеть от не переданных данных.Приемник
должен так-же сбросить буфер,прежде чем начнется передача
корректных данных.Следующие передаваемые данные должны быть
ZCRCW фреймом для гарантированного полного заполнения сетевой
памяти.
Если приемник дает ZACK заголовок с адресом,который не
совпадает с адресом передатчика,он игнорируется и передатчик
ждет другой заголовок.ZFIN,ZABORT или ZTIMEOUT завершают
секцию.ZSKIP завершает процесс для данного файла.
5.2 Полный поток с обратным прерыванием.
Выше описанный метод не может быть использован если нет
возможности принимать обратный поток данных.Алтернативный метод
заставляет приемник прерывать передатчик,когда обнаружена
ошибка.
Приемник может прервать передатчик контрольным символом,
break сигналом и/или их комбинацией как указано в Attn
последовательности.После этого приемник посылает ZRPOS
заголовок, заставляя передатчик повторно передать потерянные
данные.
Когда передатчику отвечают прерыванием он читает заголовок и
выполняет действия описанные в предыдущем парагрофе.
5.3 Полный поток со скользящими окнами.
Если не один из описанных методов не применим,то не все
потеряно.Если передатчик может буферизировать ответы премника,
то передатчик может использовать ZCRCQ подпакеты,чтобы получить
ACK от приемника без прерывания передаваемых данных.После
достаточного количества ZCRCQ передатчик может прочитать
заголовки, которые поступили.
Проблема этого метода вероятно состоит в черезмерном
количестве ответов.Это может привести к переполнению приемного
буфера передатчика прежде чем будет послан ZRPOS.
5.4 Сегментированный поток.
Если приемник не может перенаправить выходной поток на диск,
тогда используется ZRINIT фрейм определенной длинны который не
переполняет буфер.Передающая программа посылает ZCRCW подпакет
и ждет ZACK заголовок прежде чем послать следующий сегмент
файла.
Если передающая программа может принимать обратный поток
данных,тогда можно снова передавать большие блоки.
|