摘要
- RFC 3977 要求客户端先执行
DATE,暂存服务器给出的时间;随后仍用上一次会话保存的时间戳执行NEWNEWS。 - 这个顺序让相邻查询故意重叠。重复的 Message-ID 有名字、能核对、可合并;被检查点跳过的文章则可能永远不留下缺失证据。
- 查询结果只说明某台服务器在指定到达时间之后、指定新闻组范围内可报告的标识符,并不等于全网历史或文章正文交付。
八秒钟可以藏住什么
设想服务器在十二点整开始处理查询,八秒后发完结果。就在这八秒里,一篇文章抵达服务器。如果服务器形成候选集合时还没看见它,它不会出现在本轮结果;如果客户端把十二点零八秒作为下次起点,它又会因为“早于起点”而被排除。两轮查询都能正常结束,状态码也都正确,但本地档案从此少了一篇文章。
这类问题难以追查,因为缺口没有记录。客户端不知道该寻找哪个 Message-ID,也没有失败对象可重试。真正的问题不是钟表差了八秒,而是客户端把从未完整观察过的时间段宣布为已经处理。
RFC 3977 给出的次序恰好相反:进入会话后先向服务器询问 DATE,把返回值放在临时位置;再使用前一次会话留下的检查点执行 NEWNEWS;接收和处理完结果之后,才让先前暂存的时间成为新检查点。下一轮由此会从本轮查询开始之前重新覆盖一小段时间。
最初返回的是名字,不是文章
1986 年的 RFC 977 已经定义了 NEWNEWS。客户端给出新闻组、日期和时间,服务器逐行返回在此后发布或收到的文章 Message-ID。星号可以扩展匹配范围,以感叹号开头的模式可以排除分支;没有结果也是合法答案。
返回形式限定了这条命令的权力。它提供文章标识符,而不是文章正文。客户端拿到的是一份“可能需要继续取回”的目录,不是保管凭证。标识符曾被列出,不表示正文已经下载、验证或会一直留在服务器上。
早期语法还带有可选的 distribution 参数。RFC 2980 后来记录,不同实现对它的含义并不一致;同一文档还指出,NEWNEWS 经常被管理员禁用。因此,标准存在只能证明机制有共同名称,不能反推出每台服务器都开放同样的查询面。
“新”是相对哪一台服务器
RFC 3977 区分三类检索键:Message-ID 面向跨服务器的文章身份;新闻组名与文章号的组合只在特定服务器成立;到达时间戳则记录文章何时进入这台服务器。NEWNEWS 使用第三种。
这意味着作者写在文章里的日期不决定是否入选。一篇内容很早、转送很慢的文章,今天仍可能是这台服务器的新到达。同一篇文章经过不同中继,也会拥有不同的本地到达时间。查询讲述的是一个观察点的历史,而不是 Usenet 的唯一年表。
既然到达时间由服务器判定,检查点也必须进入同一坐标系。RFC 2980 把 DATE 规定为服务器视角的 GMT 时间;RFC 3977 进一步要求它与标记文章到达和新闻组创建的时钟相同。DATE 不是 NTP 的替代品。它的任务是让客户端用裁判自己的钟来画边界。
重叠不是瑕疵,而是恢复面
旧检查点在本轮完成以前持续有效。若客户端中途断线,或结果尚未持久化就崩溃,它重启后会再次询问旧区间。重复工作变多,却不会把“已发出请求”误当成“已可靠接收”。
RFC 3977 甚至允许客户端把时间向前回退两三分钟,以容纳小误差。规范示例中,同一个 Message-ID 连续两轮出现。它没有被描述成异常;重复正是安全余量留下的可见痕迹。
同一轮结果内部也可能重复。规范说明,返回顺序没有特定含义,同一会话中也可能变化;一个 Message-ID 可以出现多次,多次出现与一次出现意义相同。客户端不能把行号或排列当作时间证据,只能以身份集合做归并。
检查点不能替查询范围负责
重叠只修复时间竞态。新闻组模式写错,结果仍会缺失;服务器不声明 NEWNEWS 能力,客户端就不能假设命令可用;服务器已经无法报告的旧材料,也不会因时间戳回退而重现。多行响应若中途截断,检查点更不能前移。换一台服务器,等于换了到达历史的见证者。
IANA 的 NNTP 参数注册表 把 NEWNEWS 登记为表示该命令可用的能力。注册表给互操作提供权威名称,却不担保某次部署的开放状态、性能或档案完整性。
这套设计真正保护的是失败的可见性。重复项带着 Message-ID,能够计数、比对和折叠;越过检查点的遗漏没有名字,安静得像那段时间从未发生过任何事。
检查点是一项已经看完的声明
增量系统常把游标描绘成一个中性的“当前位置”。其实游标宣布:它之前的范围已经足够完整地被接收,可以不再回看。若在查询结束时随手取当前时间,客户端便可能对未曾覆盖的区间作出这个声明。
NNTP 选择了可恢复的麻烦。先记下未来的检查点,让旧检查点在结果飞行期间继续掌权,确认接收后再交接。它没有消灭不确定性,而是让不确定性尽量以重复标识符出现,而不是以历史空洞出现。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
