@ Карта сайта News Автора!

Bog BOS: Архитектура Netnews (USENET, newsgroups, news)

Последние изменения:
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL
2024.10.22: sysadmin: Монтирование файловых систем: bind, shared и OverlayFS

Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2024.11.03

Bog BOS: Архитектура Netnews (USENET, newsgroups, news)

Netnews - это набор протоколов и стандартов, обеспечивающий распространение сообщений среди неопределенного круга участников. Именно неопределенностью круга участников отличается от почтовых списков рассылки - нет центрального сервера, хранящего список подписчиков и с которым необходимо взаимодействовать (нестандартизованным способом!) для подписки и отписки. Сообщения называются статьями (article) или новостями (news) и объединяются в иерархически организованные группы статей (newsgroups). Каждый участник может как читать, так и писать статьи.

Usenet - это открытая всемирная сеть обмена сообщениями на базе Netnews с определенными иерархиями новостных групп. Для подключения к Usenet надо договориться хотя бы с одним из ее участников. Usenet не имеет центрального администрирования - каждый узел управляется его владельцем.

Архитектура Netnews

Формат статьи похож (но не совпадает) на формат почтового сообщения и подробно описан здесь.

Каждая статья посылается в определенную группу новостей (или несколько групп, crossposting) в соответствии с темой статьи по выбиру отправителя и имеет уникальный идентификатор. Имена групп строятся по иерархическому принципу аналогично именам файлов. Разделителем простых имен является точка, например: fido.ru.unix.linux. Набор групп, имена которых начинаются с одинаковых компонент, называется иерархией. Подробнее формат имени группы описан здесь. Некоторые группы являются модерируемыми (используется предварительное модерирование, т.е. статья посылается электронной почтой модератору, который просматривает ее и затем посылает или не посылает ее в группу).

Компонентами сети являются отправитель (poster) - человек или программа, составляющий сообщение (в почтовой системе ему соответствует понятие автор); посылатель (sender) - обычно совпадает с отправителем, соответствует понятию секретарши; агент отправителя - клиентская программа, которая помогает составить сообщение в соответствии со стандартом и взаимодействует с инжектором; инжектор (injector, injecting agent) - программа, которая принимает статью от агента отправителя, проверяет ее на соответствие формальным критериям, добавляет недостающие поля заголовка и передает для распространения релею; релей (relayer, relaying agent) - программа, которая принимает статьи от инжекторов и других релеев и передает ее дальше другим релеям или обслуживающим серверам; обслуживающий сервер (serving agent) - хранит локальную базу статей, выдает их по запросу "своих" агентов читателя; агент читателя; читатель (человек или программа). Агент читателя и агент могут (обычно так и есть) объединяться в единую программу (к ним обычно добавляется программа для ответа автору статьи по электоронной почте). Инжектор, релеи и обслуживающий сервер также обычно объединяются в единый комплекс, часто называемый просто сервером новостей (news server). Сервера образуют направленный граф, пути распространения статей являются его дугами. Каждому пути соответствует шаблон имен групп, которые передаются по нему. Посланная клиентом статья вначале попадает в локальную базу "своего" сервера, а затем передается им соседям ("подписанным" на одну из групп, к которым принадлежит статья), те записывают статью в свою базу и передают своим соседям. Процесс повторяется до тех пор, пока статья не окажется на всех серверах. Каждый сервер хранит список ранее полученных статей, что предотвращает зацикливание.

Транспортным механизмом между серверами может служить UUCP (устарело) или NNTP. Ранее использовались и другие экзотические транспортные механизмы (FTP, перенос на магнитной ленте, широковещательная спутниковая передача). Во времена UUCP существовала возможность передавать статьи пакетами и в сжатом виде (можете поискать по ключевому слову cunbatch, а я хочу об этом побыстрее забыть ;). В качестве протокола обмена между сервером и клиентом используется NNRP (фактически, подмножество NNTP, даже порт TCP используется тот же самый).

Когда сервер принимает статью от соседа, то он проверяет ее корректность (наличие всех обязательных заголовков); отсутствие идентификатора статьи в журнале ранее принятых сообщений (history); что статья не слишком старая (не выходит за нижнюю границу журнала); что статья не устарела с точки зрения ее автора (поле Expires); принадлежность статьи к одной из желаемых групп. Принятая статья посылается тем соседям, имени которых нет в ее поле Path, и которые изъявили желание принимать одну из групп, к которым принадлежит статья (теоретически проверяется еще область распространения, но с этим такой бардак, что лучше не обращать на нее внимание). Для дополнительного ограничения траффика используются различные механизмы транспортного уровня (ihave/sendme).

Шлюз (gateway) позволяет преобразовывать статьи USENET в сообщения другого формата (например, посылать их в список рассылки) или преобразовывать сообщения другого формата (например, FIDO) в статьи USENET. Написание шлюза является более сложной задачей, чем написание обычного сервера, при этом необходимо обеспечить актуальность идентификаторов сообщений, на чем строится защита от зацикливания при распространении статьи.

Кроме обычных (информационных) статей бывают управляющие статьи (control messages), которые позволяют влиять на работу серверов: удалять статьи или группы, добавлять группы и т.д.. Формат управляющих статей описан здесь.

Об объеме трафика можно судить по статистике самого "толстого" news-сервера в России gamma.ru (около миллиона статей и более 130 ГБ в день!).

USENET не имеет единой администрации. Распространение статей от сервера к серверу есть результат доброй воли (иногда хорошо оплаченной ;) администраторов серверов. Каждый сервер должен обеспечивать обработку почты по адресам newsmaster@, usenet@ и news@.

Сервера

Клиенты

Администрация

Списки

news.lists.misc: List of Active Newsgroups
news.lists.misc: Alternative Newsgroup Hierarchies

Инфраструктура

Списки свободных nntp-серверов

Ссылки

@ Карта сайта News Автора!

Bog BOS: Архитектура Netnews (USENET, newsgroups, news)

Последние изменения:
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL
2024.10.22: sysadmin: Монтирование файловых систем: bind, shared и OverlayFS



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru