Внутренние действия uucico


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

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

Когда Вы выполняете из командной строки команду uucico -s system, сначала происходит физическое соединение. Предпринимаемые действия зависят от типа открываемого соединения. Например, при использовании телефонной линии, команда должна найти модем и набрать номер. Если используется TCP, uucico должна вызвать функцию gethostbyname, чтобы преобразовать имя в сетевой адрес, выяснить, какой порт открывать, и связать адрес с соответствующим сокетом.

После того, как соединение будет установлено, должна выполниться процедура идентификации пользователя. Она состоит из запроса удаленной системой имени, и, возможно, пароля. Все это называется login chat. Процедура идентификации выполняется обычным набором программ getty/login или (на сокетах TCP) непосредственно uucico. Если разрешение на вход получено, удаленная система запускает uucico. Локальная копия uucico, которая инициализировала соединение, назначается главной (master), а удаленная подчиненной (slave).

Затем следует фаза рукопожатия (handshake phase): главная копия посылает cвое hostname и некоторые флаги. Подчиненная система проверяет, имеет ли hostname право входить в нее, посылать и принимать файлы и т.д. Флаги описывают (кроме всего прочего) максимальный приоритет буферизации передаваемых файлов. Если возможно, счет диалога или проверка порядкового номера обращения происходит здесь. Благодаря этой возможности, обе копии поддерживают счет успешных соединений (call sequence number), которые сравниваются. Если они не соответствуют, рукопожатиe прерывается. Это помогает защищаться от самозванцев-хакеров.

В заключение uucico пытается установить общий протокол передачи (transfer protocol). Этот протокол обеспечивает способ перемещения данных, проверку на непротиворечивость и повторную передачу в случае ошибки. Имеется потребность в различных протоколах из-за отличающихся типов обеспечиваемых соединений. Например, телефонные линии требуют "безопасный" протокол, который включает в себя жесткую проверку ошибок в то время, как передача TCP по существу надежна и может использовать более эффективный протокол.

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

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

Мы не будем вникать во все детали: пожалуйста, обратитесь за ними к исходным текстам или к любой хорошей книге по UUCP. Есть также очень старая статья, касающаяся сети, написанной David A. Novitz, которая дает детализированное описание протокола UUCP. Taylor UUCP FAQ также обсуждает некоторые подробности UUCP. Это всегда есть в группе новостей comp.mail.uucp.



Содержание раздела