Когда Тим Бернерс-Ли в ранних 90-х представил технологии, определившие будущую Всемирную паутину, в мире уже не одно десятилетие существовала по-настоящему децентрализованная компьютерная сеть с довольно богатым контентом и открытым доступом, в отличие от окружённой мифами ARPANET. В этом посте мы вкратце расскажем о Usenet — проекте двух университетских выпускников, который всё ещё живет, не оглядываясь на новые технологии.
Началась эта история в Северной Каролине с двух друзей из Дьюкского университета, Джима Элиса и Тома Траскотта. Они работали над протоколом UUCP, Unix to Unix Copy Protocol. Их друг из университета Северной Каролины Стивен Белловин хотел создать софт, который позволил бы людям пользоваться этим протоколом, и тоже вошёл в основную команду.
Проект оказался довольно успешен: с помощью UUCP стало возможно отправлять файлы и сообщения между компьютерами и мини-компьютерами, соединёнными по сети. И, поскольку речь идёт о 1970-х, под компьютерами подразумеваются мейнфреймы, занимающие целую комнату или этаж. Мини-компьютеры же варьировались по размерам примерно от письменного стола до пары холодильников. Для своего времени они обеспечивали приличную вычислительную мощность, но до мейнфреймов им было далеко.
Мини-компьютеры были значительно дешевле мейнфреймов и поэтому в те годы ими стали оснащать специализированные учебные заведения в США. Большой популярностью пользовалась модель PDP-11 производства Digital Equipment Corporation (куплена Compaq в 1998 г.). Мини-компьютеры могли выполнять много интересных задач, но для исследовательских целей были слабоваты.
Чтобы соединять компьютеры между собой в рамках проекта Usenet, создатели использовали акустические модемы. В их основе лежит акустический преобразователь, превращающий электрические сигналы в звук и наоборот. Когда нужно было установить соединение между компьютерами, то на преобразователе одного компьютера набирался номер другого компьютера с подобным преобразователем. После установки связи последовательность бит передавалась через звуковые сигналы. Для надёжности передачи такие модемы оборудовались звукоизолирующими резиновыми прокладками.
Выглядит как странная альтернатива обычному коммутируемому доступу. Почему бы не использовать для этого телефонные сети, которые были очень развиты в то время? Всё дело в AT&T, телефонном монополисте США того времени, который установил очень высокие цены на передачу данных через коммутируемый доступ по своим линиям. Акустические модемы соединялись, по сути, с помощью голосовых вызовов, что было гораздо дешевле. Впоследствии AT&T, кстати, узнала об этой лазейке, но в итоге не выиграла суд.
Техстек понятен, вернёмся к нашим героям. Итак, на основе UUCP-протокола Стивен Белловин написал софт, нечто вроде браузера, но без графической оболочки. С его помощью стало возможным обмениваться данными между мини-компьютерами. Первые три компьютера, соединённые таким образом, располагались в Дьюкском университете, школе медицины университета Дьюка и в университете Северной Каролины. Так образовалась начальная версия Usenet.
По своей сути Usenet очень напоминал современный Reddit и, в целом, уходящие в прошлое форумы. Сеть состояла из групп обсуждения — news groups (сабреддитов). Каждая такая группа была посвящена какой-нибудь теме. Пользователи могли читать эти потоки и, обычно, писать в них.
Проектируя обмен данными, Стивен Белловин рассчитывал, что пользователям будет достаточно получать обновления только по той группе, той ветке, на которую они подписаны. Скажем, раз в день они бы подключались к нужной группе, и на основе времени предыдущего визита, переданного в журналах, получали всё, что опубликовано после — одно-два сообщения в день по каждой теме. Примерно на такой объём трафика рассчитывал Стивен. И это вполне соответствовало модели использования мини-компьютеров того времени: каждый студент работал с ними в определённые часы и успевал получить новый контент из интересующей его группы.
Сначала через Usenet можно было передавать только неформатированный текст, но впоследствии появилась поддержка передачи бинарных файлов. Для этого придумали алгоритм преобразования файла в текст. Таким образом вполне можно было передавать нормальные по тем временам программы — также в виде обновлений к веткам. Да, здесь требовалась конвертация из бинарного кода в текст и обратно — а в случае с акустическими модемами ещё и в звук, — но это, в целом, стабильно работало. Проблемой передачи файлов в Usenet стала не стабильность, а увеличение размера файла при кодировании на целых 40 %, но со временем алгоритмы усовершенствовали и размер удалось уменьшить.
Важной особенностью Usenet была децентрализация. Это роднит его уже не с Reddit, а с P2P-сетями для обмена данными, которые были популярны на заре широкополосного интернета. Каждый пользователь мог создать сервер Usenet, загрузив необходимое ПО. Он соединял его с глобальной сетью Usenet и выбирал приоритетные ветки для своего сервера. Затем его сервер начинал регулярно опрашивать более крупные серверы сети на предмет обновления веток и скачивать их. И эти обновления с нового сервера уже скачивали конечные пользователи. Таким же образом они могли начать свою ветку, и уже другие серверы подключались бы к новому серверу для обновлений.
Проблемой такой архитектуры, конечно же, была синхронизация данных. По пути до ветки ваш ответ мог уже стать неактуальным или продублировать более ранний ответ. Особенно если изначально вся группа хостилась на другом сервере. С другой стороны, как и любая децентрализованная сеть, Usenet был естественным образом защищён от цензуры; остановить поток информации могло только закрытие хост-сервера.
В потоке групп было бы совсем неудобно ориентироваться без какой-либо категоризации. Вначале было выделено всего три префикса для трёх категорий групп:
Net.
предназначался для обсуждений самой сети — этот префикс появился первым. Но со временем здесь появились офтоп-ветки net.jokes, net.rumor и множество других веток вроде net.startrek или даже net.abortion.Fa.
содержал импортированные в Usenet рассылки из ARPANET. Эти группы появились в 1980 году, когда выпускник Калифорнийского университета в Беркли Марк Хортон начал добавлять материалы из рассылочных списков ARPANET в Usenet. ARPANET в то время имела довольно высокий порог входа, и новый тип групп давал возможность посмотреть на «прадедушку интернета» изнутри. Изначально право публиковать в таких группах имел только очень ограниченный круг пользователей.Префикс
mod.
появился, когда в сети стало слишком много офтопов. Основателями и модераторами mod.-групп становились те пользователи Usenet, которые брали общий поток сообщений из другой ветки, фильтровали его на предмет интереса в рамках какой-то другой темы и выносили отдельно. Среди первых таких групп были mod.announce и mod.newprod, посвящённые новинкам компьютерного рынка.
В 1986 году выпускники Калифорнийского университета в Сан-Диего опубликовали в Usenet спецификацию NNTP (Network News Transfer Protocol). Этот протокол адаптировал Usenet для персональных компьютеров — эпоха доступа по расписанию через «холодильные шкафы» уже уходила, да и сам проект давно вышел за пределы университетов.
Использование NNTP сильно расширило аудиторию Usenet, и в 1987 году была проведена реформа групп. В новой иерархии Usenet было выделено семь основных категорий — comp. (компьютеры), misc. (разное), news. (новости Usenet), rec. (отдых и развлечения), sci. (естественные науки), soc. (социальные темы), talk. (просто холивары). В 1997 году к ним присоединилась восьмая, humanities. — гуманитарные науки. Как и раньше, у этих больших групп сохранились многоуровневые подгруппы, которые создавали уже сами пользователи. Например, ветка, посвящённая композитору Вагнеру, имеет адрес humanities.music.composers.wagner, а африканской культуре — soc.culture.african.
Растущая популярность Usenet неизбежно поставила под вопрос его децентрализацию. Администраторы крупнейших серверов объединились в организацию Backbone Cabal, некое «Системообразующее Тайное Общество», занимавшееся развитием веток Usenet и поддержкой их доступности. Они могли закрывать неугодным группам доступ к крупнейшим серверам Usenet и, соответственно, к большой части аудитории. Но доподлинно мы знаем о них, в основном, с хорошей стороны: именно Backbone Cabal проработала и реализовала описанную выше реформу групп. Среди пользователей (и уже историков) Usenet всё ещё достаточно популярно мнение, что это миф и никаких иллюминатов Usenet в принципе не существовало.
Usenet активно развивался долгие годы, даже когда распространение получили более продвинутые веб-технологии. Именно ему, кстати, мы обязаны существованием IMDB.com — этот проект начинался как обычная группа Usenet. Но прогресс всё-таки взял своё, и в течение 2000-х крупнейшие сетевые провайдеры США, со временем ставшие хостами многих основных серверов Usenet, объявили об их закрытии. Сейчас архивы Usenet с 1981 года можно найти в Google Groups (да, у гугла есть и такой проект).
Несмотря на моральное устаревание, проект кое-как продолжает жить, и некоторые провайдеры всё ещё предоставляют полноценный доступ в Usenet. В последние годы сеть снова обрела некоторую популярность в США благодаря тем, кто устал от всевидящего ока современного интернета, и тем, кто готов пожертвовать удобством, чтобы в какой-то степени вернуть себе «старый добрый» веб.
Если вы хотите узнать больше о развитии Usenet, советуем почитать серию статей Стивена Белловина "The Early History of Usenet".