1969 - 1980s
时代 I:生存与连接
分组交换:网络如何承载任何内容
电路交换把带宽浪费在沉默上。分组交换把消息切成独立的小块,让网络忘掉这段对话。正是这一个转变,才有了互联网。
ARPANET:一切的开端
一次登录崩溃、一个紧张的研究生,还有一封不该发的邮件——一个冷战时期的研究项目如何意外地为互联网打下了地基。
'Lo' 崩溃:互联网的第一份 bug 报告
为什么 Charley Kline 敲了三个字母之后 SRI 的计算机就崩了?到底是什么坏了?一个自动补全功能的缓冲区溢出如何成了互联网的起源故事?
RFC 1:发明互联网治理的文档
Steve Crocker 在深夜的浴室里写下了 RFC 1,因为他不想显得专横。这份试探性的文档成为了后来所有互联网标准的范本。
Codd 1970 年论文,逐段注解
走一遍《A Relational Model of Data for Large Shared Data Banks》——'关系'在数学上到底指什么、哪些想法活到了 SQL、哪些又悄悄被丢弃。
关系模型与 SQL:整理世界的数据
Edgar Codd 1970 年的论文给了我们数据库的数学基础,SQL 给了我们一门查询它的语言。IBM 压着它,Oracle 抢先发布了它。
JOIN:通过值、而非指针来表达关系
用共享的值而不是物理引用来表达关系,是关系模型真正的突破。五十年后,四种连接类型、三种连接算法,和一个根本问题,仍在驱动世界上大多数的数据。
@ 符号:电子邮件是怎么被偷偷带进 ARPANET 的
Ray Tomlinson 把两个已经存在的程序粘到一起,作为一个未经授权的副业;挑了一个没人会出现在名字里的标点,意外造出了这个网络的第一个杀手级应用。
范式:1NF → BCNF,配例子
Codd 的建表规则——每种异常长什么样、下一个范式怎么修它、以及什么时候为了性能故意打破规则。
三次握手,一包一包拆开看
为什么 TCP 开连接恰好需要三个包,SYN 和 ACK 位到底在做什么,以及初始序号一旦可被预测,为什么就演变成了一场安全灾难。
TCP/IP:连通一切的协议
两位工程师在酒店大堂,一个不可能的问题:让任何网络能与任何其他网络通话。Cerf 与 Kahn 1974 年的论文,如何成为互联网的地基。
Diffie-Hellman:让 RSA 成为可能的密钥交换
在 Rivest、Shamir、Adleman 造出那把锁之前,Whitfield Diffie 和 Martin Hellman 已经证明了这把锁可以存在。他们 1976 年的论文才是公钥密码学真正的起点。
数字签名:把公钥加密反着用
你用私钥签,任何人都能用公钥验。这一点不对称,支撑着软件更新、TLS 证书、git 提交,以及每一个必须在不信任信道的情况下信任代码的系统。
RSA 加密:光天化日之下的秘密
Rivest、Shamir、Adleman 解决了一个看似不可能的问题——让陌生人在不事先共享秘密的情况下进行安全通信。
RSA 的数学,一行一行
欧拉定理、模逆,以及为什么 `(m^e)^d ≡ m (mod n)` 真的成立——把 RSA 那篇文章里一个代码块带过的数学,完整走一遍。
为什么 TCP 被拆成了 TCP 和 IP
最早的 TCP 是一个同时负责路由、可靠性、寻址的协议。1978 年 Jon Postel 主张把它拆成两个,才解锁了 UDP、实时视频、沙漏架构,以及之后的几乎一切。
查询优化器:SQL 到底是怎么跑起来的
你写你想要什么,数据库决定怎么做。走一遍优化器如何解析、改写、估算、并规划一条 SQL 查询——以及为什么同一条查询周一很快、周五很慢。
ACID,一个字母一个字母看
数据库到底是怎么兑现 Atomicity、Consistency、Isolation、Durability 的——预写日志、MVCC、锁调度,以及那个让大多数存储栈至少丢过一次脸的 fsync 问题。
端到端原则:互联网为什么是故意"笨"的
Saltzer、Reed 和 Clark 1984 年的论文把让互联网能工作的那个设计决定写成了原则——把智能放到两端,把中间留得笨,然后看着它比所有比它聪明的网络活得更久。
TCP 拥塞控制:从 Nagle 到 BBR
四十年一直在回答同一个问题——当你看不见自己要经过的那张网络时,你该以多快的速度把包发出去?