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).