CS 168 · LECTURE 04 · 2026-09-08 · 互联网地基
互联网的设计原则不是口号,而是面对异构网络、部分失败和持续演化时的一组取舍顺序。
版本快照:Fall 2026 官方课表与在线教材,核对日期 2026-09-02;官网仍标注 under construction,日期与政策可能变化。
什么功能必须放进网络,什么功能即使能放也应留在端点?
互联网需要在网络或网关丢失后继续通信。数据报网络让每个包可独立选路,路由协议能在故障后收敛;端点保留连接状态,核心故障不必恢复全部会话状态。这不是“永不失败”,而是把失败局部化并允许重新路由。
若每个中间路由器都保存强连接状态,节点重启就可能让大量端到端会话同时失效。状态放置会直接决定故障域。
可靠文件传输最终必须由接收应用验证完整文件:链路可靠只能减少局部丢包,无法防止源磁盘读错、路由器内存损坏或目标写盘失败。因此端点校验不可省,链路重传只是降低昂贵端到端重传的概率。
判断功能放置时问两件事:底层是否拥有完整语义?若没有,这个功能能否作为透明的性能优化而不改变正确性?TLS 必须由知道身份与会话语义的端点终止;局部无线重传则可在链路层加速恢复。
命运共享(fate sharing)把维持通信所需的关键状态与使用它的端点放在一起:端点消失,状态丢失也无妨;端点仍在,就能重建网络中的派生状态。路由、ARP、NAT 映射常用超时软状态,避免永久积累陈旧信息。
软状态不是“不可靠的数据结构”,而是需要刷新、过期后可重建的状态。超时长度决定恢复速度与额外控制流量之间的平衡。
低成本、可问责、分布式管理、支持多种服务与低接入门槛并不总能同时最大化。NAT 缓解地址紧缺却破坏端到端可达;CDN 提升性能却增加应用层控制;SDN 集中逻辑以简化策略,却必须让控制系统本身容错。
成熟的设计讨论应说明目标优先级、失败模型与部署边界,而不是只用“违反端到端原则”结束分析。
分析“所有 ISP 路由器必须对每个包做可靠逐跳确认”和“某个无线接入网对坏链路做本地重传”两个方案,分别讨论生存性、异构性与端到端正确性。
检查:为什么链路层可靠传输不能替代端到端完整性校验?
应用产生消息,端点遵守 end-to-end reliability
应用产生消息,端点遵守 end-to-end reliability;中间网络只做 best-effort forwarding,故障恢复留在能判断成功语义的端点。
检查:判断一个实现分支是否必要,最有力的问题是什么?
用一个重复扣款请求说明“可靠字节流”为什么仍不能替代应用幂等性。
答案必须出现 packet/message、local state/table、触发 event、after state 与 output;只给定义不算完成。
正文是 CourseStack 的中文解释与重新绘制的教学例子;官方页面负责课程原始定义,历史仓库只提供你的实现证据。