Протоколы низкого уровня UUCP

Чтобы осуществлять контроль за приемом и передачей файлов, uucico использует набор стандартизированных сообщений. Этот набор иначе называется протоколом верхнего уровня (high-level protocol). В течение фазы инициализации и фазы авторизации они просто передаются как строки. Однако, в течение реальной фазы передачи использован дополнительный протокол низкого уровня, который является обычно прозрачным для более высоких уровней. Он должен делать проверки на наличие ошибок, возможных при использовании ненадежных линий.

Краткий обзор протоколов

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

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

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

Ширина канала данных также дает различие. Иногда посылка восьмибитовых символов через последовательное соединение невозможна, например, если соединение использует простой сервер терминала. В этом случае символы с восьмым набором битов должны кодироваться при передаче. Когда Вы передаете восьмибитовые символы по соединению с семью линиями, они должны быть согласно предположениям с самым плохим случаем, это удваивает количество данных, которые будут переданы, хотя сжатие, выполненное аппаратными средствами, может компенсировать это. Строки, которые могут передавать произвольные восьмибитовые символы, обычно называются восьмибитовыми чистыми (8-bit clean). Дело обстоит так для всех соединений TCP, также как для большинства соединений модема.

Следующие протоколы доступны в Taylor UUCP 1.06:

g

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

i

Является двунаправленным пакетным протоколом, который может посылать и получать файлы одновременно. Требуется дуплексное соединение и восьмибитовый канал для данных. Он в настоящее время распознается только Taylor UUCP.

t

Протокол, предназначенный для использования над соединениями TCP или другими, свободными от ошибок. Использует пакеты в 1024 байта и требует восьмибитового чистого соединения.

e

Аналог t, но только потоковый.

f

Предназначен для использования с надежным X.25-соединением. Это потоковый протокол, желателен семибитовый канал данных. Восьмибитовые символы кодируются, что может сделать передачу неэффективной.

G

Реализация протокола g в System V Release 4. Также распознается и некоторыми другими версиями UUCP.

a

Протокол, схожий с ZMODEM. Требуется восьмиразрядное соединение, кодируются некоторые управляющие символы, подобно XON и XOFF.

Настройка протокола передачи

Все протоколы учитывают некоторое изменение в размерах пакета, блокировках по времени и т.п. Обычно значения по умолчанию, обеспечивающие работу при стандартных обстоятельствах, не оптимальны для вашей системы. Протокол g, например, использует размеры окна от 1 до 7 и размеры пакета в степенях 2 в пределах от 64 до 4096. Если ваша телефонная линия обычно настолько шумная, что теряется более 5% всех пакетов, Вы должны уменьшить размер пакета и сократить окно. С другой стороны, на очень хороших телефонных линиях непроизводительные затраты протокола при посылке запроса черз каждые 128 байт могут оказзаться расточительными, так что Вы можете увеличивать размер пакета до 512 или даже 1024.

Taylor UUCP обеспечивает механизм настройки этих параметров командой protocol-parameter в файле sys. Например, чтобы установить пакет протокола g в 512 байт при обмене с pablo:

system          pablo
...
protocol-parameter g  packet-size  512

Настраиваемые параметры и их названия изменяются от протокола к протоколу. Для полного списка изучите документацию, поставляемую с Taylor UUCP.

Выбор специфических протоколов

Не каждая реализация uucico понимает все протоколы, так что в течение начальной фазы авторизации оба процесса должны договориться об общем протоколе. Главный uucico предлагает подчиненому список обеспечиваемых протоколов, посылая Pprotlist, из которого подчиненный может выбирать.

Основываясь на типе используемого порта (модем, TCP или прямой), uucico составит заданный по умолчанию список протоколов. Для модема и прямых соединений этот список обычно включает i, a, g, G и j. Для соединений TCP это t, e, i, a, g, G, j и f. Вы можете изменить этот заданный по умолчанию список командой protocols, которая может быть определена в записи системы или порта. Например, Вы могли бы записать в файл port примерно следующее:

port            serial1
...
protocols       igG

Это требует от любого входящего или исходящего соединения через этот порт использовать i, g или G, если удаленная система не поддерживает никакой из них, диалог потерпит неудачу.