重新审视端到端传输协议:从观念到原则

embedded/2025/1/20 22:51:41/

将一个功能置于一个复杂系统的何处是系统设计中处处遇到的问题。

现在我们都知道传输协议的端到端原则,但在它成为原则之前只是一个观点,曾经有场辩论,有人认为传输协议应该由参与通信的每一跳协同实现,可为什么与此相对的端到端的观点会胜出?核心的点非常现实且容易理解:

  • 早期 ARPAnet 要利用现有网络(比如电话网),因此不能对已有网络的 feature(比如可靠性) 做任何假设,只能在上层隔离实现网络无关的协议特性以支持对网络不同需求的应用,但网络并不知道所有应用对网络的期望。
    • 这导致了 IP 的分离以及 UDP 的构建,因为并不总能预期应用需要可靠的网络,因此需要一个与可靠协议并列的不可靠协议。现在我们知道分层和模块化是影响性能的关键(来自 RFC817 的预见)。
  • 若在网络路由器中支持传输协议,需要采集并保持每条流(or per-packet)状态,为保证状态不丢失,需将其分布式备份,而分布式一致性算法难以构建。反之,仅在通信的主机两端维护这些信息便轻易实现了 “命运共担”。
    • 事后我们知道这个基本点带来的 “巨大正向副作用”,网络的无状态性使主机接入变得异常简单,互联网进而蓬勃发展。而随着计算机工业持续发展,主机端实现复杂传输协议并非难事。这极大解放了网络路由器的算法复杂性和性能,否则随主机应用的接入,路由器复杂性将指数级增长,总有一天不堪重负而垮掉;
  • 如果协议要满足应用的需求,网络自然没有主机更接近从而更了解应用,网络自然没有主机知道如何更能满足应用,换句话说,让最懂的去做,做不好就不做。
    • 这个观点在关注传输性能优化的今天似乎反了过来,网络似乎更懂传输性能的指标和细节,哪里会丢包,哪里在排队,哪里带宽空闲,也已经有了关于跨层优化的大量研究,在细腰模型的约束下,这些研究基本都集中在 “信息如何 report 给传输层” 方面。
  • 网络要保持健壮就要保持简单。如果地图丢了怎么办?最简单的假设是没有地图,靠打听问路到达目的地。要假设被问方只具备最少知识,而最少知识就是邻居,即下一跳。这意味着描述要简单。
    • 这便是经典的 “IP 逐跳路由”。这意味着所有与逐跳路由无关的信息都不会被保存在路由器上。和上述第二个观点一致,这保证了网络可靠性,但使主机软件变得复杂,考虑到上述第二个观点相同的原因,计算机工业以及软件技术的发展抵消了人们对主机软件复杂性的恐惧。

事后看来,端到端原则让互联网获得巨大成功,但端网分离的端到端原则并不总正确。从互联网破晓到爆发式发展时期,TCP/IP 细腰模型让网络有能力迅速扩展,但扩展到全球近饱和后,管理和性能问题逐渐被关注。当 IoT 终端也实现标准接口时,互联网接入开始从买方市场进入卖方市场。

结构决定行为,存量决定结构。早期的对等通信网络结构早已被分发网络颠覆,看看如今的互联网,作为客户端几乎都在 NAT 后,而早期自然的对等通信是不受待见(抢带宽?)甚至非法(比如 P2P)的,即使 P2P 对等网络,绝大多数情况下,其目的竟然也是获取内容而不是通信,这是多么讽刺。
因此,在历史上有过争议的观点双方需要被重新评估。

或许可以通过构建 overlay 网络的方式来支持当时相反的观点,而不是重构整个互联网(这是不可能的)。比如 CDN,PCDN 就很像 TCP/IP-based NDN,自然可将 CDN 多级 cache 节点当作内容 “路由器”,虽然俺这种理解,仍然无助于解决最后一公里拥塞问题。

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


http://www.ppmy.cn/embedded/155601.html

相关文章

w-form-select.vue(自定义下拉框组件)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的,我们来详细解释 w-form-select.vue 组件中每个属性的含义,并用表格列出它们是否与后端字段直接相关: 属性解释表格&…

Centos 宝塔安装

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 安装成功界面 宝塔说明文档 https://www.bt.cn/admin/servers#wcu 或者可以注册宝塔账号 1 快速部署 安装docker 之后 2 需要在usr/bin下下载do…

1.19学习

web nssctf- [SWPUCTF 2021 新生赛]easyupload2.0 开启环境后,看到需要我们上传文件,上传一句话木马文件,将后缀名改为jpg上传,否则无法上传。然后打开bp,拦截其上传这一步,然后改filename的后缀为php&am…

什么是股指期货的到期风险?

买股票的时候,我们可以选择短期炒炒,也可以选择长期持有,挺灵活的。但是,股指期货可就不一样了,它交易的是标准化的期货合约,这个合约有个特点,就是有个到期日,不能像股票那样想持多…

Linux 管道操作

Linux 管道操作 在 Linux 中,管道(Pipe)是一个非常强大且常用的功能,它允许将一个命令的输出直接传递给另一个命令作为输入,从而能够高效地处理和分析数据。管道在多个命令之间建立数据流,减少了文件的读写…

htmlcssJavaScript网页开发:年会手机号抽奖案例

见过不少人、经过不少事、也吃过不少苦&#xff0c;感悟世事无常、人心多变&#xff0c;靠着回忆将往事串珠成链&#xff0c;聊聊感情、谈谈发展&#xff0c;我慢慢写、你一点一点看...... <!DOCTYPE html> <html> <head> <meta charset"…

linux的用户管理和权限设置相关命令

一.linux的用户管理命令 1.1 useradd命令 useradd 命令用于创建新用户账号。其名称useradd 是“User Add”的缩写&#xff0c;意为添加用户。 useradd命令的基本语法&#xff1a;useradd [选项] 用户名 其中&#xff0c;[选项] 是可选的&#xff0c;可以使用不同的选项实现…

内存与缓存:保姆级图文详解

文章目录 前言1、计算机存储设备1.1、硬盘、内存、缓存1.2、金字塔结构1.3、数据流通过程 2、数据结构内存效率3、数据结构缓存效率 前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加关注哦&#xff0c;您的关注是我持续创作的…