Открыть сервис

Протокол NNTP

NNTP (Network News Transfer Protocol) — это протокол прикладного уровня, предназначенный для передачи сообщений в сетях новостей Usenet, а также для их чтения, публикации и распространения между серверами. Работает поверх TCP. Определён в RFC 3977 (актуальная версия) и RFC 977 (первая спецификация).

История

Протокол NNTP был разработан в 1986 году Ларри Уоллом, Стэном Барбером и Эриком Фэром для замены более ранних методов обмена новостями, основанных на UUCP (Unix-to-Unix Copy). Основной целью было создание протокола, работающего в реальном времени по сети TCP/IP, что позволяло пользователям получать доступ к новостным группам напрямую с сервера, а не через пакетную передачу файлов.

Первая стандартизация была выполнена в RFC 977 (1986). В 2006 году вышла обновлённая спецификация RFC 3977, которая уточнила команды, добавила поддержку расширений (например, STARTTLS для шифрования) и исправила неоднозначности.

С развитием веб-форумов и социальных сетей популярность Usenet и NNTP снизилась, однако протокол продолжает использоваться в специализированных сообществах, для распространения файлов (например, в бинарных группах) и в корпоративных системах обмена сообщениями.

Архитектура и принцип работы

NNTP использует клиент-серверную архитектуру. Сервер новостей (новостной сервер) хранит сообщения (статьи) иерархически организованных новостных групп. Клиент (например, почтовая программа или специализированный новостной ридер) подключается к серверу по TCP-порту 119 (или 563 для NNTP через SSL/TLS — NNTPS).

Основные операции

  • Чтение новостей: Клиент запрашивает список доступных групп, затем список статей в выбранной группе, а затем — содержимое конкретных статей.
  • Публикация статей: Клиент отправляет новую статью на сервер. Сервер проверяет её на соответствие правилам (например, размер, наличие заголовков) и добавляет в соответствующую группу.
  • Распространение (feed): Серверы обмениваются статьями между собой. Когда один сервер получает новую статью, он передаёт её другим серверам, с которыми у него установлены связи. Это обеспечивает глобальную репликацию контента Usenet.

Команды и ответы

Протокол является текстовым (ASCII). Команды отправляются строками, ответы сервера начинаются с трёхзначного кода состояния (аналогично HTTP или SMTP). Примеры команд:

  • LIST — получить список групп.
  • GROUP <groupname> — выбрать группу.
  • ARTICLE <message-id> — получить статью по её идентификатору.
  • POST — начать публикацию новой статьи.
  • NEWNEWS — получить список новых статей за определённый период.

Ответы сервера кодируются по стандартной схеме: 1xx — информационные, 2xx — успешное выполнение, 3xx — требуется дополнительная команда, 4xx — временная ошибка, 5xx — постоянная ошибка.

Формат сообщений

Сообщения в NNTP, как и в Usenet в целом, имеют формат, основанный на RFC 5322 (Internet Message Format), с дополнительными заголовками, специфичными для новостей.

Основные заголовки

  • From: — адрес отправителя.
  • Newsgroups: — список групп, в которые публикуется статья.
  • Subject: — тема сообщения.
  • Message-ID:уникальный идентификатор статьи (обязателен).
  • Date: — дата и время публикации.
  • Path: — путь, по которому прошла статья (список серверов).
  • References: — ссылки на родительские сообщения (для организации обсуждений в виде дерева).

Тело сообщения отделяется от заголовков пустой строкой. В бинарных группах (например, alt.binaries.*) тело может содержать закодированные в Base64 или yEnc файлы.

Классификация новостных групп

Новостные группы Usenet организованы в иерархию, где каждая группа имеет имя, разделённое точками. Наиболее известные иерархии:

  • **comp.* — компьютерные технологии и программирование.
  • **sci.* — научные обсуждения.
  • **rec.* — хобби, развлечения, спорт.
  • **soc.* — социальные и культурные темы.
  • **talk.* — дискуссии на острые темы.
  • **alt.* — альтернативные группы (не проходят строгую модерацию, могут содержать любой контент).
  • **news.* — обсуждение самого Usenet и NNTP.
  • **misc.* — разное.

В России и русскоязычном сегменте исторически была популярна иерархия **relcom.* (Relcom — одна из первых российских компьютерных сетей), а также **fido7.* (для обмена сообщениями из сети Фидонет).

Применение

  • Usenet: Основная сфера применения. NNTP обеспечивает работу глобальной системы новостных групп, используемой для обсуждений, обмена информацией и файлами.
  • Корпоративные системы: Некоторые организации используют NNTP для внутренних досок объявлений, обсуждений проектов или распространения технической документации.
  • Архивирование: NNTP используется для доступа к архивам новостных групп, например, в проекте Google Groups (ранее Deja News).
  • Распространение файлов: Бинарные группы Usenet (например, alt.binaries.*) активно используются для распространения больших файлов, часто с использованием утилит для восстановления повреждённых данных (PAR2) и архиваторов (RAR).

Критика и ограничения

  • Отсутствие встроенной аутентификации и шифрования: В базовой спецификации RFC 977 не предусмотрена защита. Пароли и данные передаются в открытом виде. Расширение STARTTLS (RFC 4642) частично решает эту проблему, но не все серверы его поддерживают.
  • Спам: Usenet исторически страдает от массовой рассылки спама. Для борьбы используются фильтры, блокировки по IP и ручная модерация групп.
  • Управление трафиком: Глобальный обмен новостями требует значительных ресурсов серверов и каналов связи. Бинарные группы особенно требовательны к объёму хранилища и пропускной способности.
  • Сложность настройки: Для полноценного использования Usenet требуется подключение к новостному серверу (часто платному), настройка клиента и понимание иерархии групп.

Сравнение с другими протоколами

  • NNTP vs HTTP: HTTP используется для передачи веб-страниц и не поддерживает встроенную иерархию групп и механизм распространения (feed). NNTP оптимизирован для массового обмена сообщениями.
  • NNTP vs SMTP: SMTP предназначен для индивидуальной переписки (email), а NNTP — для публичных обсуждений. SMTP не имеет механизма группировки сообщений по темам.
  • NNTP vs IMAP/POP3: IMAP и POP3 предназначены для доступа к почтовым ящикам, а NNTP — к новостным группам.

Источники

  1. RFC 977 — Network News Transfer Protocol (1986).
  2. RFC 3977 — Network News Transfer Protocol (NNTP) (2006).
  3. RFC 4642 — Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP).
  4. RFC 5322 — Internet Message Format.
  5. Spencer, H. (1998). The Usenet Handbook. O'Reilly Media.
  6. Громов, А. (2000). Usenet: сеть новостей.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →