UUCP ( копирование Unix-to-Unix ) [1] — это набор компьютерных программ и протоколов , позволяющих удаленно выполнять команды и передавать файлы , электронную почту и сетевые новости между компьютерами .
Названная команда uucp
является одной из программ пакета; он предоставляет пользовательский интерфейс для запроса операций копирования файлов. Пакет UUCP также включает в себя uux
(пользовательский интерфейс для удаленного выполнения команд), uucico
(программу связи, которая выполняет передачу файлов), uustat
(сообщает статистику о недавних действиях), uuxqt
(выполняет команды, отправленные с удаленных компьютеров) и uuname
(сообщает имя UUCP локальная система). Некоторые версии пакета включают uuencode
/ uudecode
(преобразование 8-битных двоичных файлов в 7-битный текстовый формат и наоборот).
Хотя UUCP изначально был разработан для Unix в 1970-х и 1980-х годах и наиболее тесно связан с Unix-подобными системами, реализации UUCP существуют для нескольких не-Unix-подобных операционных систем, включая DOS , OS/2 , OpenVMS (только для оборудования VAX). ), AmigaOS , [2] классическая Mac OS и даже CP/M .
UUCP был первоначально написан Майком Леском в AT & T Bell Laboratories . [3] К 1978 году он использовался на 82 машинах UNIX внутри системы Bell, в основном для распространения программного обеспечения. Он был выпущен в 1979 году как часть версии 7 Unix . [4]
Первые электронные письма UUCP из США прибыли в Соединенное Королевство в 1979 году, а электронная почта между Великобританией, Нидерландами и Данией началась в 1980 году, а в 1982 году стала регулярной службой через EUnet . [5] [6]
Оригинальный UUCP был переписан исследователями AT&T Питером Ханиманом, Дэвидом А. Новицем и Брайаном Редманом примерно в 1983 году. Переписанный вариант называется HDB или HoneyDanBer uucp, который позже был улучшен, исправлены ошибки и переупакован как BNU UUCP (« Основные сетевые утилиты»). [7]
Каждая из этих версий распространялась как проприетарное программное обеспечение, что вдохновило Яна Лэнса Тейлора написать новую версию свободного программного обеспечения с нуля в 1991 году . [8] Taylor UUCP был выпущен под лицензией GNU General Public License . Тейлор UUCP устранил дыры в безопасности, которые позволяли некоторым оригинальным сетевым червям удаленно выполнять неожиданные команды оболочки. Taylor UUCP также включил в себя функции всех предыдущих версий UUCP, что позволяет ему взаимодействовать с любой другой версией и даже использовать аналогичные форматы файлов конфигурации из других версий.
UUCP был также реализован для операционных систем, отличных от UNIX , особенно для систем DOS . Такие пакеты, как UUSLAVE/GNUUCP ( Джон Гилмор , Гарри Паксинос, Тим Позар), UUPC/extended (Дрю Дербишир из Kendra Electronic Wonderworks) и FSUUCP (Кристофер Эмблер из IODesign), обеспечили раннее подключение к Интернету персональных компьютеров, расширив сеть за пределы взаимосвязанные университетские системы. FSUUCP лег в основу многих пакетов систем досок объявлений (BBS), таких как Major BBS от Galacticomm и Wildcat от Mustang Software ! BBS для подключения к сети UUCP и обмена электронной почтой и трафиком Usenet . Например, UFGATE (Джон Галвин, Гарри Паксинос, Тим Позар) представлял собой пакет, который обеспечивал шлюз между сетями, использующими протоколы Fidonet и UUCP.
FSUUCP был единственной реализацией расширенного протокола «i» Тейлора, что было значительным улучшением по сравнению со стандартным протоколом «g», используемым в большинстве реализаций UUCP. [ нужна цитата ]
До широкого распространения доступа в Интернет компьютеры были подключены только к небольшим локальным сетям внутри компании или организации. Они также часто были оснащены модемами , поэтому их можно было использовать удаленно с терминалов с символьным режимом через телефонные линии с коммутируемым доступом . UUCP использовал модемы компьютеров для подключения к другим компьютерам, устанавливая между ними временные соединения «точка-точка». Каждая система в сети UUCP имеет список соседних систем с номерами телефонов, именами входа, паролями и т. д. Когда работа (запросы на передачу файлов или выполнение команд) ставится в очередь для соседней системы, программа обычно вызывает эту систему для обработки работа. Программа также может периодически опрашивать своих соседей, чтобы проверить работу, стоящую в очереди на их стороне; это позволяет соседям, не имеющим возможности дозвона, участвовать.uucico
uucico
Со временем коммутируемые каналы были заменены подключениями к Интернету, и UUCP добавил ряд новых протоколов канального уровня . Эти новые соединения также вообще снизили потребность в UUCP, поскольку были разработаны новые протоколы приложений, позволяющие использовать преимущества новых сетей. Сегодня UUCP редко используется по коммутируемым каналам связи, но иногда используется по TCP/IP . [9] [10] Число задействованных систем по состоянию на начало 2006 года составляло от 1500 до 2000 сайтов на 60 предприятиях. Долговечность UUCP можно объяснить его низкой стоимостью, обширным журналированием, встроенным переключением на коммутируемый доступ и постоянным управлением очередями.
UUCP обычно запускается после входа пользователя в целевую систему и последующего запуска программы UUCP. В большинстве случаев это автоматизируется путем входа в известную учетную запись пользователя, используемую для переводов, для оболочки которой установлено значение uucico
. Таким образом, для автоматической передачи другая машина просто должна открыть модемное соединение с вызываемой машиной и войти в известную учетную запись.
Когда uucico запускается, он ожидает получения команд от другой программы UUCP на машине вызывающего абонента и начала сеанса. Сеанс состоит из трех отдельных этапов:
При запуске uucico ответит отправкой идентификационной строки, где \20 — это символ управления-P, а \0 — завершающий нуль. UUCP вызывающей стороны отвечает , где options — это строка, содержащая ноль или более Unix-подобных переключателей опций. К ним могут относиться размеры пакетов и окон, максимальный поддерживаемый размер файла, параметры отладки и другие.\20Shere=hostname\0
\20Scallername options\0
В зависимости от настройки двух систем звонок может завершиться здесь. Например, когда вызывающий абонент отвечает именем своей системы, вызываемая система может дополнительно повесить трубку, если она не распознает вызывающего абонента, отправив RYou are unknown to me\0
строку ответа, а затем отключившись.
Если две системы успешно установили соединение, вызывающая сторона начнет отправлять серию запросов файлов. Существует четыре типа:
После отправки команды H вызывающая система отправляет последний пакет \20OOOOOO\0
(control-P, шесть ой, нулевой терминатор), а вызываемая система отвечает \20OOOOOO\0
(control-P, семь ой, нулевой терминатор). Некоторые системы просто зависают при успешном приеме команды H и не утруждают себя финальным рукопожатием.
В наборе протоколов UUCP базовый g-протокол отвечает за передачу информации в безошибочной форме. Протокол возник как система общего назначения для доставки пакетов и, таким образом, предлагает ряд функций, которые не используются пакетом UUCP в целом. К ним относятся вторичный канал, который может отправлять командные данные вперемежку с передачей файлов, а также возможность повторно согласовывать размеры пакетов и окон во время передачи. Эти дополнительные функции могут быть недоступны в некоторых реализациях стека UUCP. [11]
Формат пакета состоял из 6-байтового заголовка и полезной нагрузки длиной от 0 до 4096 байт. Пакет начинается с одного символа \020 (control-P). За ним следует один байт, известный как «K», содержащий значение от 1 до 8, указывающее размер пакета от 32 до 4096 байт, или 9, указывающее управляющий пакет. Многие системы поддерживали только K=2, что означает 64 байта. Следующие два байта представляли собой 16-битную контрольную сумму полезной нагрузки, не включая заголовок. Следующий байт — это тип данных, и, наконец, последний байт — это XOR заголовка, что позволяет проверять его отдельно от полезных данных. [11]
Управляющий байт состоит из трёх битовых полей формата TTXXXYYY. TT — это тип пакета, 0 — для пакетов управления (для корректности которого также требуется K=9), 1 — для альтернативных данных (не используется в UUCP), 2 — для данных, а 3 — короткий пакет, который переопределяет значение К. В пакете данных ХХХ — номер этого пакета от 0 до 7, а YYY — последний, который был принят правильно. Это обеспечивает до 8 пакетов в окне. В управляющем пакете XXX указывает команду, а YYY используется для различных параметров. Например, передача начинается с отправки короткого управляющего пакета с TT=0 (управление), XXX=7 и YYY (количество пакетов в окне), затем отправляется еще один пакет с XXX=6 и YYY в качестве длины пакета (закодированный как это будет в K), а затем третий пакет, идентичный первому, но XXX=5. [11]
g-протокол использует простую систему скользящих окон для борьбы с потенциально длительными задержками между конечными точками. Протокол позволяет пакетам иметь размер от 64 до 4096 8-битных байт, а также окнам, включающим от 1 до 7 пакетов. Теоретически система, использующая пакеты 4 тыс. и 7 пакетных окон (4096x7), будет обеспечивать производительность, соответствующую или превосходящую лучшие протоколы передачи файлов, такие как ZMODEM . На практике многие реализации поддерживали только одну настройку — 64x3. В результате g-протокол имеет незаслуженную репутацию неэффективного. Путаница по поводу размеров пакетов и окон привела к созданию G-протокола, отличающегося только тем, что он всегда использовал 4096x3. Тейлор UUCP не поддерживал G, но поддерживал любой действительный запрошенный размер окна или пакета, поэтому удаленные системы, запускающие G, могли нормально работать с Тейлором g, в то время как две системы Тейлора могли согласовывать еще более быстрые соединения. [11]
Модемы Telebit использовали подмену протокола для повышения производительности передачи по g-протоколу, замечая маркеры конца пакета, отправляемые в удаленную систему, и немедленно отправляя обратно ACK
на локальный хост, делая вид, что удаленная система уже получила пакет и декодировала его. это правильно. Это заставило программный стек отправить следующий пакет так быстро, что передача стала почти непрерывной. Данные между двумя модемами исправлялись с использованием собственного протокола, основанного на MNP , который работал через полудуплексные соединения Telebit гораздо лучше, чем обычно это делает g-протокол, [11] потому что в обычном случае 64x3 удаленная система отправляла бы постоянный поток с ACK
, который переполнил бы низкоскоростной обратный канал. В сочетании с естественно более высокой скоростью передачи данных модема они значительно улучшили общую пропускную способность и обычно работали примерно в семь раз быстрее, чем модем со скоростью 2400 бит/с. [12] Они широко использовались на хостах UUCP, поскольку могли быстро окупить себя за счет снижения платы за междугороднюю связь.
Реализации UUCP также включают другие протоколы передачи для использования по определенным каналам.
f-протокол предназначен для работы по 7-битным каналам с исправлением ошибок. Первоначально он предназначался для использования на каналах X.25 , которые были популярны какое-то время в 1980-х годах. Он не пакетирует данные, вместо этого весь файл отправляется как одна длинная строка, за которой следует контрольная сумма всего файла. Похоже, что аналогичный x-протокол практически не нашел применения. d-протокол был похож на x, но предназначался для использования в сетях Datakit , соединяющих многие офисы Bell Labs . [11]
t-протокол возник в BSD-версиях UUCP и, как и некоторые аналогичные протоколы, предназначен для работы по 8-битным безошибочным каналам TCP/IP . В нем вообще нет исправления ошибок, и протокол состоит просто из разбиения данных команд и файлов на пакеты по 512 или 1024 байта, чтобы легко уместиться в типичные кадры TCP.
Электронный протокол («e» для Ethernet) был разработан Клемом Коулом в MASSCOMP и широко распространен Брайаном Редманом в более поздних версиях HoneyDanBer. Он был разработан и выпущен до появления t-протокола, но t-протокол использовался чаще, поскольку версия UUCP для BSD была доминирующей реализацией. Электронный протокол отличается от t-протокола только тем, что команды не пакетируются и вместо этого отправляются как обычные строки, а файлы дополняются до ближайших 20 байтов. [11] [13]
Возможности uucp
и uuxqt
можно использовать для отправки электронной почты между компьютерами с помощью подходящих пользовательских интерфейсов почты и программ-агентов доставки. Простой почтовый адрес UUCP формировался из имени соседней машины, восклицательного знака (часто произносится как «бах» ) и имени пользователя на соседней машине. Например, адрес barbox!user будет относиться к пользователю пользователя на соседнем компьютере barbox . [14]
Кроме того, почта может маршрутизироваться через сеть, проходя любое количество промежуточных узлов, прежде чем достичь пункта назначения. Изначально это нужно было сделать, указав полный путь со списком имен промежуточных хостов, разделенных челкой. Например, если машина barbox не подключена к локальной машине, но известно, что barbox подключен к машине foovax , которая взаимодействует с локальной машиной, подходящим адресом для отправки почты будет foovax!barbox!user .
Пользователь barbox!user обычно публикует свой адрес электронной почты UUCP в такой форме, как …!bigsite!foovax!barbox!user . Это предписывает людям направлять свою почту на машину bigsite (предположительно, хорошо известную и хорошо подключенную машину, доступную каждому), а оттуда через машину foovax к учетной записи пользователя user на barbox . Публиковать полный путь было бы бессмысленно, поскольку он был бы разным в зависимости от того, где находился отправитель. (например, Энн на одном сайте, возможно, придется отправить по пути gway!tcol!canty!uoh!bigsite!foovax!barbox!user , тогда как где-то еще Билл должен отправить по пути pdp10!router22!bigsite!foovax!barbox! пользователь ). Многие пользователи предлагают несколько маршрутов с различных крупных известных сайтов, обеспечивая еще лучшее и, возможно, более быстрое соединение с отправителем почты.
Адрес электронной почты этой формы был известен как путь взрыва . Пути взрыва из восьми-десяти машин (или переходов ) не были редкостью в 1981 году, а ночные коммутируемые каналы UUCP могли привести к тому, что передача данных длилась неделю. Пути взрыва часто выбирались как по времени передачи, так и по надежности, поскольку сообщения часто терялись. Некоторые хосты зашли так далеко, что попытались « переписать » путь, отправляя почту по «более быстрым» маршрутам — подобная практика, как правило, не одобрялась.
Окончание .uucp «псевдодомена» иногда использовалось для обозначения имени хоста, доступного по сети UUCP, хотя оно никогда официально не регистрировалось в системе доменных имен (DNS) как домен верхнего уровня . Сообщество uucp самоуправлялось и не очень хорошо сочеталось с методами администрирования и правилами, регулирующими DNS; .uucp работает там, где нужно [ где? ] ; некоторые хосты [ какие? ] отправлять почту из очереди SMTP в очереди uucp на машинах шлюза, если адрес .uucp распознается во входящем SMTP-соединении. [ нужна цитата ]
Трафик Usenet изначально передавался по протоколу UUCP с использованием bang-путей. Они все еще используются в строках заголовка Path формата сообщений Usenet . Теперь они имеют только информационную цель и не используются для маршрутизации, хотя их можно использовать для предотвращения возникновения петель.
В общем, как и другие старые форматы адресов электронной почты , пути передачи теперь заменены нотацией «@ », даже на сайтах, все еще использующих UUCP. Сайт, поддерживающий только UUCP, может зарегистрировать доменное имя DNS, а DNS-сервер, который обрабатывает этот домен, предоставляет записи MX , которые обеспечивают доставку почты Интернета на этот сайт на хост UUCP в Интернете, который затем может доставлять почту на UUCP. сайт.
UUCPNET — это название всей сети компьютеров, соединенных посредством UUCP. Эта сеть была очень неформальной и поддерживалась в духе взаимного сотрудничества между системами, принадлежащими тысячам частных компаний, университетов и так далее. Часто, особенно в частном секторе, связи UUCP устанавливались без официального одобрения высшего руководства компаний. Сеть UUCP постоянно менялась: добавлялись новые системы и каналы коммутируемого доступа, удалялись другие и т. д.
Проект сопоставления UUCP был добровольной и в значительной степени успешной попыткой построить карту соединений между машинами, которые были открытыми ретрансляторами почты , и создать управляемое пространство имен. Каждый системный администратор отправлял по электронной почте список систем, к которым будет подключаться его система, а также рейтинг каждого такого соединения. Эти представленные записи карты были обработаны автоматической программой, которая объединила их в единый набор файлов, описывающих все соединения в сети. Эти файлы затем ежемесячно публиковались в группе новостей , посвященной этой цели. Файлы карт UUCP затем могут использоваться программным обеспечением, таким как «pathalias», для расчета наилучшего пути маршрута от одного компьютера к другому для почты и автоматического предоставления этого маршрута. На картах UUCP также указана контактная информация сайтов, что дает сайтам, желающим присоединиться к UUCPNET, простой способ найти потенциальных соседей.
Многие хосты UUCP, особенно в университетах, также были подключены к Интернету в первые годы его существования, и были разработаны шлюзы электронной почты между почтой на основе SMTP в Интернете и почтой UUCP. Таким образом, пользователь системы с соединениями UUCP может обмениваться почтой с пользователями Интернета, а каналы Интернета могут использоваться для обхода больших участков медленной сети UUCP. «Зона UUCP» была определена в пространстве имен домена Интернета для облегчения этих интерфейсов.
При наличии этой инфраструктуры преимущество UUCP заключалось в том, что он позволял сайту получать доступ к электронной почте Интернета и подключению к Usenet с помощью только модемного соединения с другим сотрудничающим компьютером. Это было в то время, когда для настоящего доступа в Интернет требовалась арендованная линия передачи данных , обеспечивающая соединение с точкой присутствия в Интернете , что было дорого и трудно организовать. Напротив, связь с сетью UUCP обычно можно установить с помощью нескольких телефонных звонков администраторам потенциальных соседних систем. Соседние системы часто располагались достаточно близко, чтобы избежать всех расходов на телефонные звонки, кроме самых элементарных.
uux — удаленное выполнение команд через UUCP. Команда uux используется для выполнения команды в удаленной системе или для выполнения команды в локальной системе с использованием файлов из удаленных систем. Команда запускается демоном uucico
, который обрабатывает запросы на удаленное выполнение как просто еще один тип файла, который отправляется в пакетном режиме в удаленную систему всякий раз, когда доступен узел следующего перехода. Затем удаленная система выполнит запрошенную команду и вернет результат, когда исходная система станет доступна. Обе эти передачи могут быть косвенными, через многопереходные пути, с произвольными окнами доступности. Даже при выполнении команды на всегда доступном соседе uux не происходит мгновенно.
Использование UUCP начало исчезать с появлением провайдеров Интернет-услуг , предлагающих недорогие услуги SLIP и PPP . Картографический проект UUCP был официально закрыт в конце 2000 года.
Протокол UUCP в настоящее время в основном заменен протоколами Интернета на основе TCP/IP SMTP для почты и NNTP для новостей Usenet.
В июле 2012 года голландский интернет-провайдер XS4ALL закрыл свою услугу UUCP, заявив, что он «вероятно, один из последних провайдеров в мире, которые все еще предлагали ее»; На тот момент у него было всего 13 пользователей (до закрытия он несколько лет отклонял запросы от новых пользователей). [15]
Одной из сохранившихся особенностей UUCP является формат файла чата, во многом унаследованный программным пакетом Expect .
UUCP использовался на дорогостоящих каналах специального назначения (например, на морских спутниковых каналах) еще долгое время после его исчезновения в других местах [16] и до сих пор используется в прежних версиях. [ нужна цитата ] Помимо устаревшего использования, в 2021 году будут расти новые и инновационные варианты использования UUCP, особенно для телекоммуникаций в КВ- диапазоне, например, для сообществ в тропических лесах Амазонки для обмена электронной почтой и других целей. Исправление UUCP Яна было включено в пакет UUCP Debian Linux [17] для адаптации к проекту HERMES (высокочастотная система обмена мультимедиа в чрезвычайных ситуациях и в сельской местности), который обеспечивает HF-соединение UUCP. [18]
В середине 2000-х годов был предложен протокол UUCP поверх TCP/IP (часто зашифрованный с использованием протокола SSH [10] ) [ по мнению кого? ] для использования, когда компьютер не имеет фиксированных IP-адресов , но по-прежнему готов запускать стандартный агент передачи почты (MTA), такой как Sendmail или Postfix .
Пути типа Bang все еще используются в сети Usenet , но не для маршрутизации; они используются для записи в заголовке сообщения узлов, через которые прошло это сообщение, а не для указания того, куда оно пойдет дальше. [19] «Путь взрыва» также используется как выражение для любого явно указанного пути маршрутизации между сетевыми хостами. Это использование не обязательно ограничивается UUCP, IP-маршрутизацией, обменом сообщениями электронной почты или Usenet.
Концепция сетевых протоколов, устойчивых к задержкам, была пересмотрена в начале 2000-х годов. [20] Методы, аналогичные тем, которые используются UUCP, могут применяться и к другим сетям, в которых возникают задержки или значительные сбои.
Фактическая пропускная способность составляет около 14400 бит/с.