实际上这是互联网哲学,但 TCP/IP 是互联网的事实标准,也是互联网的唯一实例,因此 TCP/IP 等同于互联网。
我写过很多 TCP/IP 发展史的随笔,于宏观,我希望理解互联网何以至此,于微观,希望理解 TCP/IP 协议栈的细节,但总缺一个 “元历史”,TCP/IP 历史的历史,即 TCP/IP 为什么能发展壮大。
首先是端到端原则,它强调在通信系统设计中,将复杂的功能集中在终端(即发送方和接收方),而不是在网络中间节点(如路由器和交换机)上。简单来说,网络只 “尽力而为” 传输数据,终端的具体操作对网络无感知。
该原则让 TCP/IP 网络的接入变得简单,因此才支撑了持续不断的终端透明无感接入,让互联网快速变得壮大。这是 TCP/IP 成功的首要原则,因为接入一个终端不需要网络做任何事情,因此接入互联网的操作是可持续扩展的,这个过程一直持续到今天。
另一方面,复杂功能集中在终端意味着不光要接入,还要在终端对网络进行配置,这种复杂操作抵消了快速接入的优势。这也是电脑短暂流行后快速被智能手机取代的原因。没什么机器比电脑更复杂了,它太复杂了,比彩电冰箱空调洗衣机复杂太多了,它几乎不是一个平常人可以操作的机器。
某种意义上,电脑失败了,智能手机却成功了,原因很简单,电脑恪守了端到端原则,作为终端,它的操作太复杂了,而智能手机同样作为终端却成功了,这背后又隐藏了什么。
既然操作要这么复杂,老百姓用户肯定不能接受,需要宽容!大神出场,乔恩·波斯特尔(Jonathan Bruce Postel),以 Postel 定律闻名,始见于 TCP 第一标准 RFC793:
2.10. Robustness Principle TCP implementations will follow a general principle of robustness: be conservative in what you do, be liberal in what you accept from others.
中文翻译,“严进宽出”,“对发送严格且保守,对接收宽容且开放”,也正是 “严于律己,宽以待人”。该原则让智能终端摆脱了复杂性困扰。
如果终端用户觉得操作太复杂,要对其宽容,要么教会他,要么容忍他,但不能回避他。TCP 对很多主动的不规范以及被动的异常都给出了明确回应,以便发送终端可以将传输继续下去,而 IP 也尽
力而为提供 ICMP 支撑。
Postel 定律下来看电脑的失败和智能手机的成功。如果你不会电脑,你必须自己去学会,否则机器不会容忍你,这意味着电脑成了需要学习使用的专业设备,类似挖掘机,电锯,总之,电脑没有遵循 Postel 定律,它不是日用品。
但没人不会用智能手机。
智能手机允许用户进行任何操作,即使是错的或者无效的,它也尽力猜测并对准操作边界,只要不明确违规即可行,用户的操作空间扩展到了整个屏幕,配合以任意手势,针对任意操作均有可视化回应,比如屏幕下拉,下滑,左右滑,长按,此外,智能手机以独占输入精确提示用户如何操作,比如只让你输入 4 位数字,没别的选项。
Postel 定律背后最厉害的是氛围,如果接收相对宽容,发送总能得到回应而不是被无视,这个闭环实际上是一个自我强化的正反馈学习过程,发送方最终会很快,越来越快学会如何操作,应该如何操作。
很多同行可能觉得我说的有失偏颇,毕竟还有谁不会操作电脑吗。大众视野下,很多人都不会操作电脑,这个错觉就跟毕业就进 BAT 工作十几年的人不相信上海工资中位数只有几千一样,圈子的狭隘造就的,即使是互联网 IT 业的,也有很多人回家不开电脑了。
智能手机诉诸视听,而视听几乎是人类几千年食色性外之首选且囊于其中,TCP/IP 正好做了比纸笔,现场表演更优秀的介质桥梁,这是两者的双赢,下一代肯定更好,但基调还在视听。
…
不过我最烦跟同行聊技术细节,搞得跟全世界所有人都懂技术一样,技术真的不值钱。
总结两大件,端到端原则和 Postel 定律,相铺相成。端到端原则激发物理接入,Postel 定律使其逻辑适应,这就是 TCP/IP 的成功。
浙江温州皮鞋湿,下雨进水不会胖。