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

RFC 1036

RFC 1036 — это стандарт Интернета (Request for Comments), опубликованный в декабре 1987 года, который определяет формат сообщений в сетях новостей Usenet (сетевых новостях). Он является преемником более раннего стандарта RFC 850 и устанавливает правила для заголовков, тела сообщений и протокола обмена между серверами Usenet. RFC 1036 был разработан Марком Хортоном и Риком Адамсом и оставался основным документом, регламентирующим работу Usenet, до появления более современных спецификаций, таких как RFC 3977 (2006 год) и RFC 5536 (2009 год).

История

Usenet, как одна из первых систем распределённого обсуждения, возникла в 1979 году. Первоначально сообщения передавались в неформальном формате, который со временем эволюционировал. В 1983 году был опубликован RFC 850, который стандартизировал основные элементы заголовков новостей. Однако с ростом сети и появлением новых требований (например, поддержка бинарных вложений, расширенных кодировок, управление модерацией) возникла необходимость в обновлении стандарта.

RFC 1036 был выпущен в декабре 1987 года и заменил RFC 850. Он внёс ряд уточнений и дополнений, включая формализацию поля Message-ID, обязательное указание даты и времени, а также определение правил для таких заголовков, как References (для отслеживания цепочек ответов) и Path (для маршрутизации). Документ был написан Марком Хортоном (Mark Horton) и Риком Адамсом (Rick Adams) и опубликован как часть серии RFC под номером 1036.

Несмотря на то, что RFC 1036 был широко принят, с течением времени он устарел. В 2006 году был опубликован RFC 3977 («Network News Transfer Protocol»), который заменил протокольную часть, а в 2009 году — RFC 5536 («Netnews Article Format»), который полностью пересмотрел формат сообщений, отменив RFC 1036.

Структура сообщения

Согласно RFC 1036, сообщение Usenet состоит из двух основных частей: заголовка и тела. Заголовок содержит метаданные, необходимые для маршрутизации, сортировки и отображения статьи, а тело — собственно текст сообщения.

Заголовки

RFC 1036 определяет обязательные и опциональные заголовки. Обязательные заголовки должны присутствовать в каждом сообщении:

  • From: — адрес электронной почты автора сообщения (например, user@example.com).
  • Date:дата и время отправки сообщения в формате RFC 822 (например, Mon, 14 Dec 1987 12:00:00 GMT).
  • Newsgroups:список групп новостей, в которые отправляется сообщение (например, comp.lang.c, misc.test).
  • Subject: — тема сообщения.
  • Message-ID:уникальный идентификатор сообщения, используемый для ссылок и дедупликации (например, 12345@example.com).
  • Path: — путь, который прошло сообщение от сервера к серверу, используется для предотвращения петель маршрутизации.

Опциональные заголовки включают:

  • References: — список Message-ID предыдущих сообщений, на которые отвечает данное (используется для построения цепочек обсуждений).
  • Reply-To: — адрес для ответов, если он отличается от From:.
  • Followup-To:группа новостей, в которую следует направлять ответы (например, poster для ответов только автору).
  • Keywords:ключевые слова для поиска.
  • Summary: — краткое содержание сообщения.
  • Expires: — дата, после которой сообщение может быть удалено.
  • Control: — управляющее сообщение (например, для создания или удаления группы новостей).

Тело сообщения

Тело сообщения отделяется от заголовка пустой строкой. Согласно RFC 1036, тело должно быть в формате обычного текста (US-ASCII). Для передачи бинарных данных (например, изображений) использовалось кодирование, такое как uuencode, хотя RFC 1036 напрямую не описывал методы кодирования. Позднее, с развитием MIME (Multipurpose Internet Mail Extensions), Usenet адаптировал поддержку вложений и многокомпонентных сообщений.

Протокол обмена

RFC 1036 также описывает основы протокола обмена сообщениями между серверами Usenet, хотя основная часть протокольной спецификации была позже вынесена в RFC 977 (NNTP — Network News Transfer Protocol). В RFC 1036 упоминаются такие аспекты, как:

  • Формат передачи: сообщения передаются в виде текстовых строк, разделённых символами перевода строки (CRLF).
  • Маршрутизация: используется поле Path для отслеживания пути и предотвращения дублирования.
  • Управляющие сообщения: специальные сообщения с заголовком Control позволяют администраторам управлять группами новостей (например, cancel для удаления сообщения, newgroup для создания группы).

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

RFC 1036, будучи продуктом своего времени, имел ряд недостатков, которые стали очевидны с ростом Usenet:

  • Ограниченная поддержка интернационализации: стандарт предполагал только US-ASCII, что затрудняло использование нелатинских алфавитов (кириллица, иероглифы и т.д.). Позднее эту проблему решали с помощью кодировок, таких как UTF-8, но RFC 1036 их не поддерживал.
  • Отсутствие строгой спецификации MIME: хотя MIME начал использоваться в Usenet, RFC 1036 не включал его в себя, что приводило к несовместимости между разными программами (newsreaders).
  • Неоднозначность в обработке бинарных данных: стандарт не определял единого способа кодирования бинарных вложений, что приводило к фрагментации (использовались uuencode, Base64, yEnc и другие).
  • Проблемы с масштабированием: поле Path могло стать очень длинным, а механизмы предотвращения дублирования были неэффективны при большом количестве серверов.

Влияние и наследие

RFC 1036 сыграл ключевую роль в становлении Usenet как глобальной системы обсуждений. Он обеспечил совместимость между различными реализациями серверов и клиентов, что позволило Usenet расти и развиваться в 1980-х и 1990-х годах. Многие концепции, заложенные в RFC 1036 (например, Message-ID, References, Path), были перенесены в более поздние стандарты, такие как RFC 5536.

Несмотря на то, что RFC 1036 был официально заменён, его влияние ощущается до сих пор. Многие современные системы, такие как электронная почта и форумы, используют аналогичные принципы форматирования и маршрутизации сообщений.

Источники

  • RFC 1036 — «Standard for Interchange of USENET Messages» (декабрь 1987, Марк Хортон, Рик Адамс).
  • RFC 850 — «Standard for Interchange of USENET Messages» (июнь 1983, Марк Хортон).
  • RFC 5536 — «Netnews Article Format» (ноябрь 2009, К. Линдси, С. Барбер, М. Костова, Дж. Грубер).
  • RFC 3977 — «Network News Transfer Protocol (NNTP)» (октябрь 2006, К. Фейербах, С. Барбер).
  • Спенсер, Генри; Лоуренс, Дэвид. «Usenet: A Guide to the Global Network of Discussion Groups» (1993).