> ## Documentation Index
> Fetch the complete documentation index at: https://meta.niceshare.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 波斯特尔定律

> 波斯特尔定律（健壮性原则）要求实现严格发送、宽容接收以互通。了解RFC渊源与现代安全边界。

<Info>
  **类别**：定律<br />
  **类型**：网络／系统互操作性原则<br />
  **来源**：乔恩·波斯特尔；TCP 规范（如 **RFC 793**，**1981**）<br />
  **别名**：健壮性原则
</Info>

<Note>
  **快速回答** — **波斯特尔定律**（Postel's Law）即健壮性原则：**发送时保守，接收时宽容**（不同文献措辞略异）。它帮助早期互联网协议在实现不完美时仍能互通。今天它仍是设计启发式，也备受争议——因为宽容若不与安全审查配对，可能固化缺陷并扩大攻击面。
</Note>

## 什么是波斯特尔定律？

**波斯特尔定律**（Postel's Law）给协议实现一条指引：**发出的字节严格符合规范**，但在仍能恢复语义时**对输入解析更宽容**。目标是规范演进、实现各异时的互操作。它与 [康威定律](/zh/laws/conways-law)（系统结构映射协作结构——维度不同）相邻；与 [布鲁克斯定律](/zh/laws/brookss-law)（加人增协调成本——正交，但都影响交付）可对照。不同于 [墨菲定律](/zh/laws/murphys-law)，波斯特尔是**规范性**原则，而非宿命论。

> 发送严谨、接收包容曾撑起早期网络——直到模糊性变成可利用面。

### 波斯特尔定律的三层理解

* **入门**：旧客户端可能发来古怪空白；服务器仍可拒绝非法帧，但对无害差异可规范化处理。
* **实践者**：输出走**规范编码**；输入用**白名单**校验、记录异常并显式版本化行为。
* **进阶**：把宽容当作**安全预算**——当代讨论警告「按 bug 互通」会在生态里固化漏洞。

## 起源

**乔恩·波斯特尔**在早期 TCP/IP 工作中提出健壮性原则。广泛引用的表述见于 **RFC 793**（《传输控制协议》，**1981 年 9 月**），要求 TCP 实现在发送行为上保守、在符合规范意图的前提下对接收分段保持健壮。措辞在后续文档中有演变，但**严格生成与宽容消费成对出现**成为协议、解析器与 API 工程的底层俗语。

## 核心要点

用波斯特尔最大化兼容性——再测量宽容何时伤害安全。

<Steps>
  <Step title="互通优先">
    异构厂商与部分部署需要宽容的接收端，网络才可用。
  </Step>

  <Step title="输出走规范形">
    「保守发送」把复杂度集中到经过充分测试的编码器。
  </Step>

  <Step title="宽容需要边界">
    没有模式、模糊测试与监控，宽容解析易成漏洞温床。
  </Step>

  <Step title="生态效应主导">
    一旦多数对等端依赖怪癖，修复需要协同变更——**按 bug 兼容**的压力。
  </Step>
</Steps>

## 应用场景

映射到现代 API 与平台设计。

<CardGroup cols={2}>
  <Card title="协议与解析器" icon="network-wired">
    发出严格的 JSON 或 protobuf；接收层用验证**尽早拒绝**含糊或超大输入。
  </Card>

  <Card title="Web 前端" icon="desktop">
    保存时规范化用户输入；渲染仍要**转义**——宽容体验不是 SQL 注入赦免。
  </Card>

  <Card title="协作规范" icon="users">
    你对外承诺要精确；对同事表述方式可在约定标准内保留善意弹性。
  </Card>

  <Card title="向后兼容" icon="clock-rotate-left">
    API 显式版本化；用公布时间表废弃宽容路径，而非默默永远兼容怪癖。
  </Card>
</CardGroup>

## 经典案例

该原则的制度锚点是文本：**RFC 793**（1981）把 TCP 的健壮性指引写进必须共存的厂商实现——可引用的 **RFC 编号与年份**，而非实验室指标。后续工程讨论（包括 **2000–2020 年代** ACM *Queue* / *Communications of the ACM* 等）反思宽容是否固化了互通 bug——指标是争论从「能否连上」转向「安全不变量在宽容默认时是否成立」。

## 边界与失效场景

**边界 1：安全打破天真宽容**\
攻击者会在解析器「猜意图」之处构造歧义输入。

**边界 2：标准已成熟**\
现代协议常偏好显式失败，而非静默修复。

**常见误用**：无限宽容且无遥测——怪癖成删不掉的遗产。

## 常见误区

把慷慨与放任分开。

<AccordionGroup>
  <Accordion title="误区：要友好就全收">
    **实情**：宽容解析仍拒绝非法状态；善意受安全与规范意图约束。
  </Accordion>

  <Accordion title="误区：波斯特尔禁止严格校验">
    **实情**：保守发送常与分层校验配对（语法／语义）。
  </Accordion>

  <Accordion title="误区：已过时">
    **实情**：权衡演变；生态仍需互通之处仍有其影子。
  </Accordion>
</AccordionGroup>

## 相关概念

在兼容与正确之间取舍时一并阅读。

<CardGroup cols={3}>
  <Card title="康威定律" icon="sitemap" href="/zh/laws/conways-law">
    系统结构映射沟通结构——协调定义了「兼容」的含义。
  </Card>

  <Card title="布鲁克斯定律" icon="users" href="/zh/laws/brookss-law">
    加人增沟通成本——修复遗产怪癖也耗时间。
  </Card>

  <Card title="墨菲定律" icon="triangle-exclamation" href="/zh/laws/murphys-law">
    可能出错终会出错——校验要据此设计。
  </Card>
</CardGroup>

## 一句话总结

<Tip>
  对外发出走规范形；对接收做校验——设明限与指标，而非无限猜测。
</Tip>
