Сегодня, Usenet вырос до огромных размеров. Конечно, это требует намного больше, чем обмен файлами. Так что давайте рассмотрим способ, которым большинство систем Unix обрабатывают новости Usenet.
Новости распространяются по сети различными транспортами. Как историческая среда используется UUCP, но сегодня основной трафик несет Internet. Используемый алгоритм маршрутизации называется лавинной (flooding) маршрутизацией. Каждый сайт поддерживает ряд связей с другими абонентами. Любая статья, сгенерированная или полученная локальной системой новостей будет послана к ним (это называется подпиткой новостями, news feeds).
Чтобы отличать статьи и распознавать дубликаты, Usenet-статьи должны нести ID сообщения (заданный в поле заголовка Message-Id:), которое объединяет имя пункта регистрации и серийный номер в виде serial @site. Для каждой обработанной статьи, система новостей регистрирует ее ID в файле history, в котором проверяются все прибывающие статьи.
Поток между любыми двумя сайтами может быть ограничен в соответствии с двумя критериями. Во-первых, статье назначается область распространения (в поле заголовка Distribution:), которая может использоваться, чтобы ограничить рассылку некоторой группой сайтов. С другой стороны обмен новостями может быть ограничен системами получения и передачи. Набор групп новостей (конференций) и областей рассылки обычно хранится в файле sys.
Реальное число статей обычно требует, чтобы к вышеупомянутой схеме были сделаны уточнения. На сетях UUCP обычно статьи за некоторый период времени объединяются в один файл, который сжимается и посылается удаленному сайту. Это вызывается пакетированием (batching).
Альтернативная методика: протокол ihave/sendme, который не дает пересылась статьи дважды. Вместо того, чтобы помещать все статьи в пакетные файлы и посылать их, только ID сообщений будут объединены в сообщении "ihave" и посланы. Удаленный сайт читает это сообщение, сравнивает с файлом history и возвращает список статей, которые ему нужны в сообщении "sendme". Только запрошенные статьи будут посланы.
Конечно, ihave/sendme имеет смысл только, если это включает два больших сайта, которые получают новости из нескольких независимых источников каждый и опрашивают друг друга достаточно часто для эффективного потока новостей.
Сайты, которые находятся в Internet, полагаются на TCP/IP программное обеспечение, которое использует Network News Transfer Protocol (NNTP). NNTP описан в RFC-977. Он отвечает за передачу новостей между серверами новостей и обеспечивает Usenet-доступ одиночным пользователям.
NNTP знает три различных способа передать новости. Первый: версия ihave/sendme в реальном масштабе времени, также упоминаемого как выталкивание (pushing) новостей. Вторая методика названа pulling. Здесь пользователь запрашивает список статей в данной группе новостей (newsgroup) или иерархии, которые достигли сервера после определенной даты, и выбирает те, которых у него нет. Третья методика предназначена для интерактивных программ работы с новостями (newsreader). Она позволяет Вам или Вашему newsreader отыскивать статьи из определенных newgroups и передавать статьи с незавершенной информацией заголовка.
На кааждом сайте новости хранятся в иерархии каталога /var/spool/news, каждая статья в отдельном файле, и каждая newsgroup в отдельном каталоге. Имя каталога составлено из имени newsgroup с компонентами пути. Таким образом, статьи comp.os.linux.misc сохраняются в /var/spool/news/comp/os/linux/misc. Статьи получают номера в порядке поступления. Эти номера служат именами файлов. Диапазон номеров статей в настоящее время интерактивно сохраняется в файле active, который в то же время служит как список newsgroups, известных Вашему сайту.
Так как дисковое пространство конечный ресурс, Вы должны отбрасывать статьи после некоторого времени. Это называется expiring. Обычно статьи из некоторых групп и иерархий устаревают в течение фиксированного числа дней после того, как они прибывают. Это может быть изменено отправителем с помощью поля Expires: заголовка статьи.
Вы теперь имеете достаточно информации, чтобы выбрать, что читать дальше. Пользователи UUCP должны читать о C-News в главе 21. Если Вы используете TCP/IP сеть, читайте о NNTP в главе 22 . Если Вы должны передавать умеренные количества новостей по TCP/IP, сервера, описанного в этой главе может быть достаточно для Вас. Чтобы установить сверхпрочный сервер новостей, который может обрабатывать огромные объемы, прочитайте о InterNet News в главе 23.
Назад | Глобальное оглавление | Вперед |
Что такое Usenet? | Локальное оглавление | C-News |