Uucp

uucp (сокр. от ) — команда копирования файлов между двумя компьютерами под управлением операционной системы UNIX, использующая одноимённый протокол. Позже появились реализации этого протокола под другие операционные системы, в том числе DOS, Windows, OS/2.

Своё название uucp ведёт от имени команды копирования файлов в UNIX — cp — и фактически является её расширением, позволяя копировать файлы с локальной машины на удалённую и с удалённой на локальную, в первую очередь, посредством модемного соединения (позже появились реализации «UUCP over TCP»; они были как в виде встроенной в программу функции, так и в виде отдельного драйвера, эмулирующего модемный звонок посредством установки TCP-сессии). Достаточно быстро uucp стал использоваться для передачи почты и новостей (телеконференций).

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

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

Сегодня UUCP редко используется по каналам коммутируемого доступа, но иногда используется по TCP/IP. С начала 2006 года работало 1500—2000 сайтов через 60 предприятий. Долговечность UUCP может быть связана с её низкой стоимостью, подробным ведением логов, собственной отказоустойчивостью к коммутируемому доступу и постоянно управляемой очередью.

История 
UUCP был первоначально написан в AT&T Bell Laboratories Майком Леском. К 1978 году его использовали на восьмидесяти двух машинах UNIX в системе Bell, прежде всего для распространения программного обеспечения. Оно был выпущено в 1979 году как часть Unix версии 7. Исходный UUCP был переписан исследователями AT&T Питером Ханименом, Дэвидом А. Новицем и Брайаном Э. Редманом приблизительно в 1983 году. Перезапись упоминается как HDB или HoneyDanBer UUCP, которая впоследствии была улучшена, исправлены ошибки, и преобразована в BNU UUCP («Basic Network Utilities»).

Все эти версии распространялись как проприетарное программное обеспечение, что в 1991 году вдохновило Яна Лэнса Тейлора написать новую версию с нуля и выпустить её как свободное программное обеспечение. UUCP Тейлора был выпущен под общедоступной лицензией GNU General Public License. UUCP Тейлора закрыл дыры в системе безопасности, которые позволяли некоторым оригинальным сетевым червям удаленно выполнять непредусмотренные команды. UUCP Тейлора также включает функции всех предыдущих версий UUCP, позволив ему устанавливать связь с любой другой версией и даже использовать аналогичные форматы файлов конфигурации из других версий.

UUCP был также реализован для не UNIX операционных систем, прежде всего для системы MS-DOS. Пакеты, такие как UUSLAVE/GNUUCP (Джон Гилмор, Гарри Пэксинос, Тим Позэр), UUPC (Дрю Дербишир) и FSUUCP (Кристофер Амблер из IODesign), принесли первое интернет-подключение к персональным компьютерам, расширив сеть вне взаимосвязанных университетских систем. FSUUCP легли в основу многих электронных досок объявлений (BBS), таких как Galacticomm’s Major BBS и Mustang Software’s Wildcat! BBS, чтобы соединиться с сетью UUCP и обменяться электронными почтой и Usenet-трафиком. В качестве примера, UFGATE (Джон Гэльвин, Гарри Пэксинос, Тим Позэр) является пакетом, который обеспечивает шлюз между сетями, работающими с Fidonet протоколом UUCP.

FSUUCP был единственной реализацией Тейлора с расширенным 'i' протоколом, значительно улучшенным по сравнению со стандартом 'g' протокола, используемого в большинстве реализаций UUCP.

Маршрутизация почты 
UUCP и uuxqt можно использовать для того, чтобы отправлять электронные письма между машинами с соответствующими почтовыми пользовательскими интерфейсами и программами доставки. Простой почтовый адрес UUCP формируется из смежного имени машины, восклицательного знака (часто называемый «bang»), сопровождающегося именем пользователя на смежной машине. Например, адрес barbox!user обратился бы к пользователю user на смежной машине barbox.

Почта, кроме того, может быть направлена через сеть, проходя любое число промежуточных узлов прежде, чем прибыть к месту назначения. Первоначально, это должно было быть сделано определением полного пути со списком промежуточных имен хоста, разделенных воскл. знаками. Например, если машина barbox не соединена с локальной машиной, но известно, что barbox соединен с машиной foovax, который действительно связывается с локальной машиной, соответствующий адрес для отправки почты будет foovax!barbox!user.

Пользователь barbox!user может публиковать свой UUCP-адрес электронной почты в виде, например, !bigsite!foovax!barbox!user. Это направляет людей к маршруту их почты, чтобы механизировать bigsite (по-видимому, известная и хорошо соединенная машина, доступная для всех) и оттуда через машину foovax в учётную запись пользователя user на barbox. Публикация полного пути была бы бессмысленна, потому что она будет различаться в зависимости от того, где был отправитель. Многие пользователи предложили бы несколько маршрутов от различных известных сайтов, обеспечивая ещё лучшее и, возможно, более быстрое соединение с отправителем почты.

Bang path 
Адрес электронной почты этой формы был известен как Bang path. Bang path, содержащие от восьми до десяти имён машин, были весьма распространены в 1981 году.

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

Трафик Usenet был первоначально передан по протоколу UUCP, используя Bang paths. Они все ещё используются в строках заголовка Пути формата сообщения Usenet. Они теперь имеют только информационную цель и не используются для маршрутизации, несмотря на то, что они могут использоваться, чтобы гарантировать, чтобы циклы не возникали.

UUCPNET и отображение 
UUCPNET был именем для совокупности компьютеров в сети, соединенных через UUCP. Эта сеть была неофициальной, поддерживалась в духе взаимовыгодного сотрудничества между системами, принадлежавшим тысячам частных компаний, университетов и так далее. Часто, особенно в частном секторе, ссылки UUCP были установлены без официального одобрения высшего руководства компаний. Сеть UUCP постоянно изменялась как были добавлены новые системы, и каналы коммутируемого доступа, другие были удалены.

Проект Отображения UUCP был добровольным, и в основном сосредотачивался на том, чтобы построить карту соединений между машинами, которые были открытыми почтовыми релеями и устанавливают управляемое пространство имен. Каждый системный администратор будет предоставлять, по электронной почте, список систем, к которыми он будет подключаться, вместе с ранжированием для каждого такого соединения. Эти данные представленные на карте, были обработаны автоматической программой, которая объединила их в один набор файлов, описывающих все связи в сети. Эти файлы были тогда опубликованы ежемесячно в группе новостей, посвященной этой цели. Файлы карт UUCP могли тогда использоваться программным обеспечением, таким как «pathalias», чтобы вычислить путь оптимального маршрута от одной машины до другого для почты и автоматически предоставить этот маршрут. Карты UUCP также перечисляют контактную информацию для сайтов, и так делали сайты, стремящиеся присоединиться к UUCPNET простым способом, чтобы найти возможных соседей.

Соединение с Интернетом 
Много узлов UUCP, особенно в университетах, были также соединены с интернетом в его первые годы и почтовыми шлюзами между интернетом были разработаны, основанная на SMTP почта и почта UUCP. Пользователь в системе с соединениями UUCP мог, таким образом, обмениваться почтой с интернет-пользователями, а интернет-ссылки могли использоваться, чтобы обойти значительно медленные части сети UUCP. «Зона UUCP» была определена в пространстве имен интернет-домена, чтобы упростить эти интерфейсы.

Удаленные команды 
uux — удалённое выполнение команды по UUCP. uux команда используется, чтобы выполнить команду в удалённой системе или выполнить команду в локальной системе, используя файлы от удалённых систем.

Синтаксис 
Для указания места файла на удалённой машине в uucp используется синтаксис вида машина!файл, где машина — имя одного из известных данному компьютеру хостов, а файл — имя файла, возможно, с абсолютным или относительным путём до него.

Таким образом, вызов uucp в простейшем виде для копирования файла example.tar.gz с локальной машины на удалённую, имеющую имя remote, будет иметь вид:

 uucp example.tar.gz remote!example.tar.gz

uucp также позволяет выполнять транзитную передачу файлов. Например, для копирования файла example.tar.gz с удалённой машины remote2 через машину remote1 на локальную, вызов примет вид:

 uucp remote1!remote2!example.tar.gz example.tar.gz

Применения 
Широкое применение uucp получила для передачи электронной почты и новостей Usenet в период, предшествовавший широкому распространению TCP/IP.

В это время были созданы многочисленные клоны uucp для операционных систем DOS и OS/2, наиболее известны из которых и UUPC Андрея Чернова.

В России протокол uucp использовался в сети Релком для обмена электронной почтой. Адрес пользователя был в привычном для пользователей Internet формате «юзер@хост.домен», и пользователи uucp могли обмениваться почтой с пользователями Internet.

В настоящее время можно рекомендовать uucp для регионов, где прокладка выделенных линий и организация постоянных соединений затруднена, а телефонная связь уже есть. Кроме того, UUPC Андрея Чернова нормально работает под DOS на очень слабых машинах, начиная   В совокупности эти два фактора позволяют предоставить доступ к электронной почте для людей, выход в Интернет которым затруднителен.

Закат UUCP 
Использование UUCP начало вымирать с появлением интернет-провайдеров, предлагающих недорогие услуги SLIP и PPP. Проект отображения UUCP был официально закрыт в конце 2000 года.

Протокол UUCP был теперь главным образом заменен интернет протоколом SMTP для почты на основе TCP/IP протокола и NNTP для новостей Usenet.

В июле 2012 года голландский интернет-провайдер, XS4ALL закрыл свою службу UUCP, утверждая, что он был «вероятно, одним из последних провайдеров в мире, который все ещё предлагал эту службу»; у неё было только 13 пользователей в то время (однако, до завершения её работы, они отказывались от запросов новых пользователей в течение нескольких лет).

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

UUCP использовался на дорогостоящих каналах специального назначения (например, морские спутниковые линии) после его исчезновения, и все ещё используется.

В середине 2000-х годов UUCP по TCP/IP (часто в зашифрованном виде, используя протокол SSH) был предложен для использования, когда компьютер не имеет никаких фиксированных IP-адресов, но все ещё готов запустить стандартный агент передачи почты (MTA) как Sendmail или Postfix.

Bang path все ещё используются в сети Usenet, хотя и не для маршрутизации; они используются, чтобы записать узлы, через которые сообщение передалось, а не к прямому, куда оно пойдет затем. «Bang path» также используется в качестве выражения для любого явно указанного пути маршрутизации между сетевыми узлами. Это использование не обязательно ограничено UUCP, маршрутизацией IP, почтовым обменом сообщениями или Usenet.

Источники 
 Mark Horton (1986). RFC 976: UUCP Mail Interchange Format Standard. Internet Engineering Task Force Requests for Comment.

Примечания

Ссылки 
 RFC 976: UUCP Mail Interchange Format Standard
 UUPC Андрея Чернова
 UUCP Internals Frequently Asked Questions
 Taylor UUCP — GPL licensed UUCP package
 Taylor UUCP Documentation — it provides useful info about general UUCP and UUCP protocols.

Утилиты Unix
Сетевые протоколы