根据RFC 3977,一篇文章的Message ID在整个Usenet网络中应该是全局唯一的。
我很好奇 NNTP 服务器在分配消息 ID 时如何确保其全局唯一性。
我认为我的问题可以进一步细分为:
谁负责创建消息 ID?发布文章的客户端还是从发布客户端接收文章的 NNTP 服务器?
创建消息 ID 的程序如何确保其在所有 Usenet 服务器上的全局唯一性?消息 ID 冲突可以避免吗?
如果可能出现消息 ID 冲突,那么两个 NNTP 服务器之间的文章传播如何处理这种情况?这是否意味着两个 NNTP 服务器可以对具有相同消息 ID 但不同正文的文章进行分区视图?
答案1
谁负责创建消息 ID?发布文章的客户端还是从发布客户端接收文章的 NNTP 服务器?
最初接收消息的新闻服务器创建消息 ID。
创建消息 ID 的程序如何确保其在所有 Usenet 服务器上的全局唯一性?消息 ID 冲突可以避免吗?
事实并非如此。Usenet 是一个简单的基于信任的系统。当它成立时,只有大学和大型科技公司才能买得起能够成为 Usenet 服务器的硬件。如果你的服务器发送了一条消息,那么它就被认为是合法的,因为它的数量相对较少。如果一台服务器行为不当,那么它可能被踢出网络。
如果可能出现消息 ID 冲突,那么两个 NNTP 服务器之间的文章传播如何处理这种情况?这是否意味着两个 NNTP 服务器可以对具有相同消息 ID 但不同正文的文章进行分区视图?
除了运行服务器的人仍然不多之外,没有什么可以阻止这种情况发生。新闻服务器管理员可以使用伪造的 ID 发送新文章,一开始没有人可以阻止他们。当然,如果他们成为滋扰,他们可能会失去所有网络同伴并被踢出网络,这仍然是事实。但从技术上讲,没有什么可以阻止这种情况发生。
另外,阅读克雷姆瓦克斯恶作剧,第一次发送欺骗性消息。这远在互联网出现之前。