摘要

  • RFC 1547 要求有争议功能的开启态与关闭态彼此兼容;实现须支持两种状态,具体选择留给本地用户,而“用户”未必是人。
  • 活性检测可以关,压缩可以拒绝,MTU 可以退回默认值;这些都是协议完成后的合法结果,不是残缺状态。
  • 后来的 PPP 规范进一步说明:没有实现某个可选项的一方,仍必须能和实现了该选项的一方互通。

写于 1989 年,进入 RFC 却在 1993 年

RFC 1547 的发布日期是 1993 年 12 月,正文开头却把读者带回 1989 年 6 月。历史说明称,这份需求文档曾指导 RFC 1134 以及后续 PPP 规范的设计;几年后把它正式收入 RFC,是为了补齐记录,也给未来标准工作留下参考。

两个日期不能合并。RFC 1547 不是 PPP 成形后才加上的评论,也不是一份报文格式说明。它记录的是:一个要成为 Internet 标准的点到点协议,应当解决哪些共同问题。RFC 1134、RFC 1171、RFC 1331、RFC 1548,再到 RFC 1661,展示了规范文本的继承关系;它们本身不能证明产品普及率、实际部署量或逐项合规。

文档也强调,它不是在强推唯一设计。例子用于说明需求,并不排斥别的实现。真正的考题是:当两家运营者的本地条件互相冲突时,两端还能不能找到一个共同状态?

“关闭”必须仍在互操作集合里

点到点线路处境各异。有的链路必须周期性检查对端是否存活,有的链路不需要这份开销;特别嘈杂的线路可能值得在链路层再做纠错,干净线路则会和传输层重复劳动;压缩可以节省带宽,但只有两端都有共同算法并愿意使用时才成立。

RFC 1547 没有宣布某一类需求永远优先。它要求发生冲突的功能,其开启态和关闭态必须兼容;实现要认识两种状态;本地用户可以动态决定本次连接选哪一种,而且这个用户明确“不一定是人”。自动策略同样可以成为决策者。

文档用 UDP 校验和作类比。UDP 给“校验和关闭”留了可识别的表示,接收方知道怎样接受。重点不是让 PPP 复制 UDP 的编码,而是让“没有”也有共同语义。对端拒绝一项增强功能,并不等于它已经离开协议。

所以,产品界面上有一个开关远远不够。两个设备都能显示 on/off,如果一方仍把另一方的 off 当成非法状态,它们依然没有互通。标准必须在分歧发生的地方给出共同落点。

一次心跳也可能有价格

活性检测把冲突变成了账单。RFC 1547 要求协议能判断链路是否工作,并把这项机制设为默认开启。链路起始时视为 down,只有验证了双向报文交换后,才能把它认定为 up。

但同一项需求也规定它必须可以关闭。原因很实在:公共数据网络可能按维持链路的报文收费。在专线上,周期探测能更快发现故障;在计费网络上,同一探测会形成持续成本。两种选择都可能理性,因为物理环境和商业条件不同。

默认值因此是共同起点,不是永久命令。是否承担这笔成本由本地决定;关闭之后的协议含义仍由双方共享。

证据边界也必须保留。一次成功的双向交换,只能证明当时的点到点链路;它不证明应用可用,也不证明账号获权。RFC 1547 提到的身份检查是为了发现误配置,且明确不是严格认证。文档还直说没有讨论安全问题。后人不能替它补写一项来源没有承诺的安全保证。

拒绝压缩,本身就是完整答复

RFC 1547 没有规定统一的压缩算法。只有两端都同意,并且至少共享一种算法时,才可启用压缩。协商必须简单,而且保证能够结束。

其中最关键的一句规则是:拒绝压缩总是优先。某一端想节省带宽,不能强迫另一端接受它没有同意的能力、开销或风险。“不压缩”不是协商夭折,而是一个合法终局;基础链路仍可继续。

这让可选增强不至于悄悄变成入场考试。如果一端只要提出高级模式,普通模式就失效,那么功能更多的设备反而会降低双方互操作性。保留未压缩的共同底线,创新才不会把尚未采用者逐出连接。

来源没有告诉我们哪些算法获得部署、拒绝发生了多少次、节省了多少带宽。它证明的是控制结构:实现提供能力,运营者选择策略,两个对等端共同给出同意;任何一方都能用拒绝保住基础模式。

默认值替沉默兜底

最大传输单元沿用同一种架构。RFC 1547 要求每类链路都有默认 MTU,而且至少为 1500 字节。双方可以通过明确协商或私下协议改用别的数值;没有达成协议时,默认值继续作为可执行的共同值。

这不是反对本地优化,而是要求优化留下双方都承认的凭据。单边配置里的一个数字,不会自动变成共享现实。

文档把透明传输、成帧、基本差错检测和基本 MTU 放进共同链路服务,却没有把链路层纠错、流量控制和排序设为普遍要求。理由之一是传输协议已有相关服务。特别嘈杂的线路仍可通过私下协议加入纠错,只要不违反其他需求。

向所有旧式点到点协议兼容、多点、半双工或单工、七位异步线路,也被明确列为非需求。缩小基础合同,不等于宣布这些用途无价值;它只是拒绝让每条链路都为它们付入场成本。

对等,而不是永久分级

RFC 1547 还反对固定的主从、网关与主机角色。如果一次连接确实需要不同角色,双方可以为这次连接动态选定,而不是把等级固化进协议身份。

对称性让拒绝保持正当。永久的上位端很容易把下位端的“不”定义成错误;对等端则从共同语法出发,只在需要时建立临时差别。网络地址协商和压缩协商一样,都必须简单并能终止。

协议还要容纳未来扩展。新选项之所以安全,前提是它出现时没有抹掉旧的共同模式。

PPP 后来把“缺少选项”写成互通义务

RFC 1548 和后继 RFC 1661 用成熟的 PPP 语言落实这些需求。标准默认值负责常见配置;一端实现的改进可以自动告诉另一端;运营者仍可配置例外。可扩展选项机制让双方分别描述能力和要求。

它们对可选功能的定义尤其严格:没有实现该选项的一方,必须能与实现了该选项的一方互操作。所谓 optional,不只是开发者可以不写;协议还得规定“存在”和“不存在”如何安全相遇。

后续文本仍保留 1500 字节的默认接收单元,也允许相互同意的实现使用其他值。LCP 的具体 Ack、Nak、Reject 流程属于另一篇历史。RFC 1547 在这里独有的主题,是更上游的需求判断:拒绝和回退也算成功。

四种事实,不能压成一个绿灯

从这些来源可以推出一项运维判断:支持能力、本地开启、双方达成协议、实际生效,是四种不同事实。

产品文档能证明设备“会”压缩;配置能证明运营者“想”开启;完成的协商能证明两端“同意”某种模式;报文或计数器才能显示它是否真的承载了流量。任何一张凭据都不能自动代替另外三张。

MTU 和活性检测同样如此。RFC 默认值不证明现场数值;配置了 keepalive 不证明对端收到;link-up 不证明应用成功;一份私下协议也不证明两端实际部署。

这套四分法是依据 RFC 1547 作出的编辑推论,不是文档逐字提出的术语。它却正好揭示了一个把关闭、拒绝和回退都赋予意义的协议,需要怎样的证据账本。

最低共同合同保护未来的本地决定

Heng Lu 的 Minimum Initial Specification、Localized Future Decision、Voluntary Adoption 学说,为这套结构提供了当代语言:初始规范严格界定确定性的互操作集合;后续选择仍留在本地;发布一项方案并不会自动制造采用事实,真正的现实还要靠自愿协调和运行中的系统形成。

从这面镜子看,允许关闭功能并未削弱标准。它强化了共同底线,让压缩、额外纠错和活性策略可以各自演进,却不必撕裂链路。拒绝之后仍有合法去处。

这只是现代解释框架,不能拿来证明 1989 年作者的主观意图;RFC 作者没有使用 Heng Lu 后来的术语。历史来源真正证明的结论更窄,也更锋利:点到点标准不只要在两端都说“是”时工作,还要经得起一端说“不”。功能可以缺席,对端不能跟着被协议判为缺席。

来源