热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

互联网的成功和端到端原则

本文很短,就几句话。互联网之所以发展迅速,得益于端到端原则:保持一个极简的核心,将复杂留在端。道理很简单。核心若不极

本文很短,就几句话。

互联网之所以发展迅速,得益于端到端原则:


  • 保持一个极简的核心,将复杂留在端。

道理很简单。

核心若不极简,互联网将无法适应变化。随着接入节点的增加,核心的负担将指数增加,互联网规模终将停滞。

全文完。以下是后序。


写在后面

网络是分布式的,要实现一个网络功能时,需要选一个部署它的位置,换言之,是在转发节点实现还是在端节点实现。

计算机技术的发展让端越发智能,各类应用的蓬勃是迟早的事,它们对网络的需求各自不一。

以可靠传输为例,若在网络中心实现逐跳可靠传输,必然需要在每一跳记录状态,随着新节点的接入,状态记录将指数增长,转发节点终将不堪重负而崩溃。在中心实现其它需求,结果亦然。

简言之,在中心实现网络需求,没有可扩展性,无法适应变化,而唯一不变的是变化本身。

拥抱变化的取向迫使端到端的需求在端到端实现。否则,互联网甚至无法起步,更别提发展。

就这一点足以确定互联网的架构,其余的都是结果。

先看成本因素,遵循端到端原则是最划算的。

网络核心实现的任何功能,其代价均是全局的。网络核心是所有通信必经之处,任何一个功能,均会对途径的所有数据包进行额外操作,哪怕改功能并不是所有应用必须的。无论该功能软硬件设施所需的金钱,还是额外操作所损耗的时间,都是净损耗。不划算。

再看完备性,遵循端到端原则最完备。

网络核心实现的所有功能,必须满足所有端到端需求的全集,但端到端需求是不断变化的,因此在任何时间点均不存在完备的全集。若实现一个子集,那么实现谁忽略谁将造成不公平。网络核心无法满足全集,又不能简化实现功能子集,端到端需求在端到端满足便是必然。

最后看透明性,遵循端到端原则是保持端到端透明的唯一方式。

网络核心实现的功能,必然涉及对数据包的写操作,比如逐跳的可靠性保证,数据包的目的地永远是下一跳,源则是当前节点,源和目标在网络传输路径上不断变化,端到端的源和目标不再保持。若将功能实现在端,对于应用而言,就好像网络根本不存在一样。因此,端到端原则保持了最佳的透明性。

最终,网络核心只保留不得已而必须的传输功能,它极简,无状态,因此只能“尽力而为”,“逐跳传输”。无论是尽力而为还是逐跳传输,都是端到端原则的必然结果,现实中,这个核心就是IP协议。IP一点也不多,一点也不少,它是系着两个罐子的那根细绳子。

简单说说TCP/IP分层。它也是端到端原则的结果。

TCP/IP一开始并不是分层协议族,它是一个端到端的TCP协议,按照端到端的原则做了减法之后,IP协议分离了出来,这个分离来自于一个减法原则:“网关在搬移数据包时是否需要这个信息,若不需要,那这个信息就不该放入IP”。

这个减法将TCP变成了一个双层协议,TCP/IP。所有使用TCP/IP的上层,便生成了TCP/IP协议族。

IP是个极简协议,它只读(TTL字段只是一个增强),无状态,路由器只看目标地址即可完成转发。

分层协议族的演化表明互联网不是设计规划出来的,而是进化出来的,这个和近乎完备的ISO/OSI完全不同。

端到端原则的核心产物便是分布式路由了。

极简的IP协议唯一特征是全局编址,互联网所有节点组成了一张图,每个节点由一个IP地址标识,所有节点通过与邻居交换信息执行分布式算法,每个节点均会生成一张路由表,节点依照这张路由表执行数据包转发,由于IP是无状态的,转发必然是逐跳的,每个节点均无全局信息,却能将数据包按照最短路径送达目标,大雅。

端到端原则似乎是绝对正确的,事实果真如此吗?

回顾从阿帕网经TCP/IP诞生到现代互联网的历史,我注意到一个转折点。我在之前的文章中也提到过:


  • 让网关作为一个信使而不是一个代理是一个好主意,这使网关的工作变得简单,只需转发数据包而无需拆解它。

仔细一想,这个说法是依赖拓扑的。早期对网络的假设和现在完全不同。早期的假设是,所有节点组成一个P2P对等网络。所有节点是平等的。然而现代互联网却并非如此。

我们来看CDN,CDN网络的cache节点,它既不是源节点,也不是目标节点,逻辑上,它位于网络核心,“让网关作为一个信使而不是一个代理是一个好主意”便错了,cache节点显然要理解数据,它不仅仅要做信使,还要做代理把信拆开。

这属于对端到端原则的补充还是破坏?

早期的P2P假设将网络视为一个对等通信的场所,类似于朋友之间的交流,直到现在我们的社交应用依然符合这种假设,除此之外,人们还将网络视为获取资源的场所,类似于卖场购物,图书馆借书,CDN网络便应运而生。在CDN网络中,中间节点变复杂了,这属实是一种对端到端原则的补充。

然而如何将源站的端到端特征透明传输到客户终端,给中间cache节点带来很大的挑战。cache节点因此变得复杂无比,它需要理解各类源站的端到端特征,似乎它正朝向端到端原则的反面。

除了CDN,数据中心网络亦是端到端原则的反动。各类源抑制,反压机制在交换机上完成精细化的加速,拥塞控制,端主机反而变得简单,省下本应该处理端到端逻辑的资源用于计算业务。数据中心网络核心越发复杂,而端主机越发简单,就像一根玉米棒子两端沾着两粒玉米粒。

想多了,哪有什么普适原则。

端到端原则的最佳实践就是可扩展性,适应变化,它制造了互联网的繁荣。CDN也好,数据中心也好,均是领域网络,它们并没有全球繁荣的所需,CDN仅调度资源到用户家门口,数据中心仅局限在百米范围,与全球互联网完全不同。

因此,适应的才是最好的。

最后,我做一个对比,铁路和公路。本来我想用TCP/IP网络和传统电信网络直接说的,可最终觉得还是铁路和公路最合适。

铁路属于中心控制,复杂性在路网而不在火车,火车只保有启动,加速,刹车,鸣笛等简单功能即可。

公路属于分布式控制,复杂性在汽车而不在公路,公路只保持平整的路面即可。

试问,哪一种路更容易扩展,更适应变化?

先看铁路,新加入一列火车,或者新接入一段铁路,必须对既有牵扯到的时间表调度做完全的调整,每次铁路新增列车,提速,都伴随着巨大的调整,所谓牵一发而动全身。

再看公路,无论是经理新买了一辆新车上路,还是某处新修了一条路,什么都不用改变。汽车属于端到端逻辑,而公路只是一个极简的通道。

铁路对变化的反应是强烈的,随着列车和路网的扩张,反应烈度是指数级增加的。

公路对变化是无感的,各类新车在增加,各类旧车在淘汰,路有新修和拥堵,但几乎不会有任何感觉。

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


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 华为仿真软件eNSP路由器配置
    静态路由如下图所示,给定的指定IP,配置静态路由,让四台PC机可以相互连接。 分析:LSW1是2层交换机,下面挂接的都是同一网关的PC机,因此无需配置。AR1和AR2为路由器,所以 ... [详细]
  • 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和 ... [详细]
author-avatar
赵乙潘_107
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有