Кратко

  • NNTP отделил глобально уникальный Message-ID от локального ключа «группа новостей плюс номер статьи». Поэтому один кросспост мог иметь несколько номеров, не превращаясь в несколько статей.
  • Xref собирал места хранения, назначенные последним сервером, чтобы программа чтения не обрабатывала один кросспост повторно.
  • Сервер выдачи обычно удалял полученный Xref и записывал собственный. Менялась локальная квитанция размещения, а не текст или глобальная идентичность статьи.

Второе появление

Читатель заканчивает статью в одной группе и затем открывает другую подписку. Там снова тот же заголовок и тот же текст, но номер иной. Если программа запомнила только первый номер, вторая координата выглядит как вторая статья.

В Netnews было более точное объяснение: автор разместил одну статью сразу в нескольких группах. Сервер обычно хранил единственный экземпляр, создавая отдельную индексную позицию в каждой группе. Разные номера описывали разные полки, а не разные произведения.

Xref служил компактной квитанцией такого размещения. Поле называло создавший его сервер, а затем перечисляло группы и локаторы, под которыми статья была доступна на этом сервере. Оно не создавало новую идентичность, а связывало несколько локальных входов с одной статьёй.

Граница принципиальна: идентичность отвечает, что это за статья; местоположение — где данный сервер показывает её сейчас. Распределённая система нуждается в обоих ответах, но не должна передавать полномочия одного другому.

Три ключа разного масштаба

RFC 3977 описывает три вида ключей для хранения и получения статей по NNTP. Message-ID глобально уникален. Второй ключ состоит из имени группы и номера статьи внутри неё. Третий — время поступления, которое ведёт сервер.

Ключ «группа-номер» строг в локальной области. На одном сервере в одной группе номер указывает только на одну статью, и статья не может иметь два номера в той же группе. Но кросспост входит в несколько групп и может получить отдельный, в том числе отличный, номер в каждой.

За пределами сервера уникальность прекращается. Одинаковая пара группы и номера на разных серверах может обозначать разные статьи. Нумерация следует локальному порядку поступления. Смена сервера означает смену системы координат даже при неизменном Message-ID.

Ответ GROUP сообщает нижнюю и верхнюю отметки и оценку количества, но не обещает заполненность всех номеров между ними. Статьи удаляются, а прежняя статья при определённых условиях может быть восстановлена под старым номером. Пробел не доказывает глобальное удаление, а большой номер — общемировую новизну.

Одна статья на нескольких полках

RFC 5536 различает кросспост одной статьи в несколько групп и отдельные публикации одинакового текста. В первом случае сохраняется одна статья с одним Message-ID, к которой ведут несколько групповых индексов.

Xref описывает такое разветвление. Сначала идёт идентичность создавшего поле новостного сервера, затем одно или несколько мест. Каждое связывает группу с локатором статьи. Традиционный NNTP-локатор — десятичный номер, но формат может зависеть от реализации.

Имя сервера задаёт область координат. Без него внешне одинаковая позиция на другом сервисе может привести к иной статье. С ним клиент понимает, что несколько мест в одной локальной карте сходятся к одной статье.

RFC 5536 отмечает, что пользовательские агенты часто применяют Xref, чтобы не обрабатывать кросспост многократно. Показав статью в одной группе, программа может согласовать состояние остальных связанных мест. Одна реплика, обращённая к нескольким аудиториям, остаётся одной репликой.

Объявленные группы и фактическое хранение

Newsgroups объявляет, в какие группы статья была направлена. Xref показывает, где последний сервер фактически её разместил. RFC 5536 прямо допускает различие этих множеств.

Так становится видима локальная власть. Сервер может не обслуживать все группы, отказать в размещении по своей политике или изменить доступный набор из-за срока хранения и модерации. Простое копирование декларации автора в квитанцию скрыло бы решения сервера.

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

Квитанция, рассчитанная на замену

RFC 1036 в 1987 году описывал Xref как имя хоста и пары «группа-номер» из локального spool-каталога. Информация считалась полезной только локальной системе и не должна была передаваться. В примере одно сообщение имело разные номера в двух группах.

Поздняя архитектура упорядочила обращение с полем, не сделав его постоянной идентичностью. RFC 5537 разрешает ретранслятору удалить существующий Xref и добавить свой. Сервер выдачи обычно обязан удалить входящее поле — кроме специальной настройки сохранения локаторов отправителя — и может, как правило, записать собственное перед хранением.

Замена не изменяет статью. Тот же RFC запрещает ретрансляторам и серверам выдачи менять её части, кроме узких исключений Path и Xref, и запрещает править тело. Локальная карта меняется, статья остаётся прежней.

Возможность переписать поле на границе хранения указывает на владельца утверждения: квитанция описывает решение сервера, а не долговечное высказывание автора.

Область действия — не печать подлинности

Названный в поле сервер не доказывает происхождение. Его имя сообщает, в какой системе толковать локаторы. Это не криптографическая подпись, не проверка автора и не подтверждение первого пункта приёма.

Право удалить и заново создать поле не позволяет считать его неизменной историей. Вывод об отсутствии аутентификации осторожно следует из правил перезаписи и отсутствия соответствующего договора в стандарте. Xref свидетельствует о локальном виде только внутри контекста доверия к данному сервису.

Действующий реестр заголовков IANA сохраняет Xref как стандартное поле Netnews со ссылкой на RFC 5536. Message-ID и Newsgroups зарегистрированы отдельно. Реестр закрепляет общий словарь, но не объединяет идентичность, заявленное распространение и локальное место в одну власть.

Номер означал «здесь»

Достижение Xref заключалось не в ещё более сильном идентификаторе. Поле позволило распределённой системе признать: одна статья имеет несколько координат, а следующий сервер может заменить их, не заменяя статью.

Если место принять за идентичность, каждый кросспост и перенос создаёт дубликаты. Если идентичность принять за место, глобальное имя начинает обещать универсальный адрес. NNTP сохранил два слоя и ограничил значение каждого.

Официальные источники не показывают нынешнюю распространённость Xref и практику конкретных провайдеров. Они не объясняют сами по себе исчезновение отдельного номера. Но граница установлена: Message-ID отвечает, какая это статья; Xref — где данный сервер её разместил. Надёжность возникает из этого ограничения.