CASE 001 / ARPANET, 1980

第001期技术故障网络协议有原始事故报告

三个序列号,
让 ARPANET 陷入死循环

一个数字说自己比另一个新,另一个也说自己更新。直到三个数字首尾相接,网络陷入了一场永远结束不了的“消息更新”。

序列号 8、40、44 依照当时的规则首尾构成更新循环。

01 / THE INCIDENT重启之后,故障又回来了。

1980 年 10 月 27 日,ARPANET 大范围失灵。它是现代互联网的前身;计算机历史博物馆将这一天记录为一次持续约四小时的网络崩溃。[2]

工程师留下的事故报告里,有一个比“断网”更值得追问的现象:单个节点重启后可以恢复,却在重新接入网络时再次出问题。检查转储后,他们发现缓冲区堆满了路由更新。[1,pp. 2–4]

线索由此从一台机器,转向机器之间传递的消息。那些节点究竟收到了什么,为什么无法把它们当成旧消息丢掉?

本案范围 这是早期 ARPANET 的控制协议事故。以下“死循环”指路由更新反复传播,不表示今天的整个互联网曾被三个普通数据包击倒。

02 / RECONSTRUCTION一条可以追查的时间线

  1. ARPANET 大范围故障

    博物馆记录约四小时;原始报告写作“数小时”。两种时间口径同时保留。[2][1,p. 1]

  2. 当日 · 排障阶段

    更新队列指向 IMP 50

    报告记录队列中的更新来自 IMP 50,序列号反复出现 8、40、44。[1,pp. 8–9]

  3. 当日 · 恢复阶段

    让节点忽略 IMP 50 的更新

    工程师通过补丁恢复网络。原始报告没有说恢复必须依靠关闭整个网络。[1,p. 9]

  4. 事故分析收录为 RFC 789

    BBN 的 Eric C. Rosen 将症状、分析和改进思路写入公开文档。[1,文档信息]

  5. 另一个协议领域明确比较边界

    RFC 1982 为 DNS 序列号定义算术规则,将正好相隔半个序列空间的比较留作未定义。这是后来的技术背景,不能当作本案修复记录。[4,§3.2]

排障阶段只按原始报告的叙述顺序排列;未找到精确时分,不补写时间戳。

03 / THE MECHANISM“更新”为什么能绕成一个圈?

先把路由更新想成一张“我周围道路通不通”的公告。链路状态协议让节点交换公告,从而了解网络。为了不反复传播同一张公告,节点需要判断:收到的是新版,还是旧版?[3]

网络教材复现了当时的六位序列号规则:编号只有 0 到 63,之后回到 0。因此不能永远把数字较大的一方当成更新,而要考虑回绕。以下用 n 表示新收到的编号,m 表示已保存的编号。[3]

当 n > m 且 n − m ≤ 32,认为 n 更新;
或 n < m 且 m − n > 32,认为 n 更新。
40 ≻ 840 − 8 = 32
44 ≻ 4044 − 40 = 4
8 ≻ 4444 − 8 = 36

逐项代入,三个判断都成立。如果三种编号同时流传,“只转发更新的消息”就可能变成“不断转发轮流胜出的消息”。教材与原始报告对这个循环的解释一致。[3][1,p. 9]

这里的圈不是一张错误的路线图,而是一套无法收敛的更新关系。“40 比 8 新”这句话,只有放进限定的序列号窗口里才有意义。

04 / TRY THE RULE亲手走进这个循环

从已保存编号 8 开始,依次送入 40、44、8。每按一次,节点就按上面的规则决定是否接受。启用边界修正后,再试一次。

05 / THE EVIDENCE我们知道什么,又不知道什么?

报告观察

异常更新只在序列号上不同,8、40、44 在队列里循环出现。这是原始报告记载的观察;本站没有原始机器转储,不能宣称独立重放了事故。[1,pp. 9–10]

当事人推断

44 → 40 → 8 的二进制变化与位丢失相符,Rosen 据此提出硬件损坏数据的解释。报告也承认另一方向的位变化可能,不能把这一推断改写成已定位的某一根内存条。[1,pp. 10–11]

资料分歧

教材将恢复概括为“关闭整个网络”;原始报告明确描述了忽略 IMP 50 更新的补丁。本档案采用原始报告记载的恢复方法,保留这处差异。[3][1,p. 9]

证据边界

四份资料不等于四份独立事故见证。RFC 789 是核心事后报告;博物馆是历史摘要;教材用于核对规则;RFC 1982 只提供后来的标准背景。

06 / WHAT REMAINS系统相信的“新”,也需要边界。

这起事故最耐人寻味的地方,是每次局部比较看起来都遵守规则。把它们放在一起,才会发现规则没有给这组输入留下一个稳定的终点。

后来的 RFC 1982 对有限序列空间作出明确限定:有些比较不应产生确定的大小关系;使用者必须避免依赖这些边界情形。这份针对 DNS 的规范不能倒推证明 1980 年的某个具体故障,却能帮助我们理解:会回绕的编号,从来不等同于普通整数。[4,§§2–3]

今天再看 8、40、44,它们更像一张提醒:当一个系统不断转述“我有更新的消息”,除了问消息是什么,也要问,系统凭什么相信它更新。

编辑判断 上面两段的系统设计启示是基于比较规则的解读,不是对本案新增的历史事实。

SOURCE INDEX / 可复核证据来源与核查说明

  1. PRIMARY / 原始事故报告
    RFC 789 · Vulnerabilities of Network Control Protocols: An Example ↗

    Eric C. Rosen / BBN,1981。核对症状、序列号、恢复补丁与推断用语。页码指原文印刷页码。硬件成因的具体传播过程是作者重建,本文保留其不确定性。

  2. HISTORY / 机构历史记录
    Computer History Museum · October 27, 1980 ↗

    核对事件日期、ARPANET 的历史定位和约四小时的持续时间。条目较短,并非独立的完整技术调查;其概括不替代 RFC 的细节。

  3. CROSS-CHECK / 网络教材
    Computer Networking: Principles, Protocols and Practice · Link state routing ↗

    Olivier Bonaventure 的开放教材。核对链路状态、六位编号与比较表达式。教材引用 RFC 789,属于二次解释;其恢复叙述与原始报告存在差异,已在正文说明。

  4. STANDARD / 后续标准背景
    RFC 1982 · Serial Number Arithmetic ↗

    R. Elz、R. Bush,1996 年 8 月。核对有限序列空间与半空间边界的未定义比较。该文针对 DNS,不作为 ARPANET 事故经过或直接修复的证据。

核查日期:2026 年 10 月 17 日。本文为简体中文原创整理;图示及交互为编辑制作,未使用伪造日志或历史截图。本站尚无其他案件;已登记事件身份与别名,供后续选题排重。

FILE 001 / 调查有终点,证据可继续补充。← 返回案件档案