Кратко
Dateсообщает, когда создатель счёл сообщение завершённым и готовым к отправке, а не когда оно действительно начало передаваться.- Ретрансляторы Netnews должны ограничивать историю уже встреченных Message-ID. Проверка по времени написания способна объявить старой статью, которая только что вошла в сеть после долгого ожидания.
Injection-Dateдобавил время входа, не заменяяDate. Он улучшил основание для решения, но не подтвердил автора, точность часов или прибытие на все серверы.
Понедельник, пришедший в пятницу
Автор заканчивает текст без связи. Приложение ставит Date в понедельник, но posting agent может передать статью news server лишь в пятницу.
Для автора понедельник верен: тогда текст стал готов. Для relay с конечной базой истории та же дата похожа на старую статью, вернувшуюся после удаления записи о её Message-ID.
Замена даты на пятницу может помочь распространению, но перепишет историю создания. Сохранение понедельника может включить старое правило stale rejection. Один field оказался одновременно летописью автора и допуском в сетевой поток.
Injection-Date устранил ложный выбор: второе наблюдение было добавлено рядом, а не поверх первого.
Какое событие обозначал Date
RFC 1036 в 1987 году называл Date, ранее Posted, датой первоначальной публикации сообщения в сети. Она оставалась неизменной при распространении, чтобы каждый промежуточный узел не начинал хронологию заново.
RFC 5322 точнее разделил завершение и перевозку. Origination date — момент, когда создатель указал, что сообщение окончено и готово войти в систему доставки. В примере с отключённым переносным компьютером дата относится к постановке в очередь, не к последующему подключению.
Такой смысл сохраняет авторскую хронологию. Но он ограничивает пригодность поля для сетевого допуска. Локальные часы могут ошибаться, значение может быть ложным, а законная задержка — долгой. Даже точная отметка отвечает не на тот вопрос, который задаёт relay.
Историю дубликатов нельзя было хранить вечно
Независимые relaying agents и serving agents обмениваются статьями Netnews. RFC 5537 требует хранить историю уже принятых статей и отклонять повторное предложение той же статьи. Ключом служит Message-ID.
Сохранение всех идентификаторов навсегда дало бы неограниченный рост. Поэтому протокол допускает cutoff interval. Статьи старше окна можно отвергнуть, а их прежние записи удалить: возврат остановит временная проверка. RFC называет не менее семи дней обычной практикой Usenet и предупреждает, что окно короче распространения может отвергнуть статью, которую сервер ещё не видел.
Дата не доказывает повтор. Она ограничивает срок хранения доказательства, позволяющего повтор распознать. Короткое окно быстрее освобождает ресурс, но теряет медленные первые приходы. Длинное защищает задержки ценой памяти и поиска.
Если использовать только время написания, ожидание вне сети уже расходует сетевое окно.
Вторые часы получили узкие полномочия
RFC 5536 определяет Injection-Date как дату и время ввода статьи в сеть. Цель — дать news servers для stale checks отметку, добавленную сервером при injection, вместо отметки user agent при написании.
Поле обязательно добавляется при вводе. Однако ради старого ПО агенты должны принимать статьи без него; тогда RFC 5537 использует Date. Совместимость позволила расширить смысл без одновременного разрыва со всеми peers.
Главное ограничение — запрет замены. При добавлении Injection-Date нельзя менять существующий Date. Часы разных agents могут быть не синхронизированы, поэтому время входа иногда выглядит более ранним. Отрицательная разность сначала говорит о качестве часов, а не о нарушении причинности.
Документированное поле заменило использовавшийся без спецификации NNTP-Posting-Date, объявленный deprecated. Общий термин согласовал значения, но не источники времени.
Три времени принадлежат трём границам
В распространённой оптимизации истории RFC 5537 считает датой статьи Injection-Date, если он есть, иначе Date. Ретрансляторы и серверы проверяют слишком далёкое будущее и при cutoff сравнивают значение со своим окном.
Другая стратегия удаляет запись по времени, когда конкретный сервер впервые увидел статью. В описанной схеме retention должен быть как минимум на 24 часа длиннее cutoff, чтобы учесть разрешённую будущую погрешность. Это уже третья перспектива.
RFC 3977 определяет локальный arrival timestamp и порядок выдачи локальных номеров статей. Такая отметка принадлежит одному серверу.
Dateсохраняет объявление создателя о завершении.Injection-Dateсохраняет переход в Netnews.- arrival time сохраняет приём и порядок на данном сервере.
Их объединение превращает задержку пути в задержку автора, а offline-ожидание — в сетевую рециркуляцию.
Несколько входов не создавали новый возраст
Для резервирования или раздельных сетей одну статью можно было предложить нескольким injecting agents. Целью оставалась одна публикация. При схождении путей Message-ID должен был обеспечить единственный приём.
RFC 5537 требует идентичных Message-ID, Date и Injection-Date во всех копиях proto-article. Если уже введённая статья готовится для входа в другую сеть, эти три поля сохраняются без изменений. Обновление второй даты у каждого gateway снова и снова омолаживало бы одну статью.
Значит, Injection-Date — не просто «сейчас» любого последующего посредника. При multiple injection он входит в непрерывность одного акта публикации.
Совместимость сохранила старую неоднозначность
Ранние реализации игнорируют новое поле и продолжают применять cutoff к Date. RFC 5537 признаёт, что давно составленная статья может распространяться хуже даже с правильным временем ввода.
Если Message-ID и Date уже есть, posting agent должен добавить вторую отметку при нескольких injecting agents и рекомендуется сделать это после задержки более суток. Агент ввода проверяет чрезмерно будущие и прошлые значения и добавляет текущее время по условиям протокола. Рядом с poster он ещё может полезно объяснить отказ.
Но downstream legacy software не меняется. Совместимость сохранила обмен и приняла переходный период, когда одинаковая статья получает разные решения.
Реестр не удостоверяет часы
Injection-Date — временное утверждение агента на входной границе. Это не криптографическая подпись, не доказательство автора и не гарантия синхронизации. Поле не обозначает одобрение модератора, чтение человеком, каждое последующее прибытие или локальное удаление.
Текущий реестр полей сообщений IANA указывает Injection-Date как стандартное поле Netnews со ссылкой на RFC 5536. Реестр стабилизирует имя, но не подтверждает конкретное значение и всеобщее внедрение.
Историческое достижение заключалось в сдержанности. Создатель сохранил своё время; сеть добавила наблюдение для допуска; каждый сервер сохранил локальное прибытие. Вторая дата повысила точность именно потому, что не получила права стереть первую.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
