当前位置: 首页 > news >正文

TCP/IP 哲学:端到端的 Postel 定律

实际上这是互联网哲学,但 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 的成功。

浙江温州皮鞋湿,下雨进水不会胖。

http://www.dtcms.com/a/287975.html

相关文章:

  • 从单个神经元到数字识别神经网络的演变
  • 【黄山派-SF32LB52】—硬件原理图学习笔记
  • Java从入门到精通:全面学习路线指南
  • 阿里云ssl证书自动安装及续订(acme)
  • Python之--元组
  • 7月19日 台风“韦帕“强势逼近:一场与时间赛跑的防御战
  • 回溯算法(Backtracking Algorithm)
  • day056-Dockerfile案例与Docker Compose
  • docker run快速启动一个容器
  • C++ :vector的模拟
  • 第J8周打卡
  • 【Linux】LVS(Linux virual server)环境搭建
  • uni-app 应用、页面、组件生命周期
  • Python+大模型 day02
  • 1.2M 小工具! 解决 Windows 系统疑难杂症
  • MVP 最小可行产品
  • 《Electron应用性能深耕:资源加载与内存治理的进阶路径》
  • 【51单片机学习】LED、独立按键
  • 一站式PDF转Markdown解决方案PDF3MD
  • Python技术题2
  • PostgreSQL常用命令与工具指南
  • 93.数字信号处理相关的一些问题
  • 【Java】【力扣】48.旋转图像
  • PyCharm + AI 辅助编程
  • 小明记账簿焕新记:从单色到多彩的主题进化之路
  • k8s快速部署(亲测无坑)
  • Go 语言核心机制深度剖析:指针、defer、多态与空接口实战指南
  • Windows 编程辅助技能:使用 MSDN
  • 千线万网,电路之行——LVS检查的内核逻辑
  • uniapp中腾讯地图SDK-安装及配置(自动定位回显城市)