从对等通信到万维网:通信模型变迁与拥塞求解

Leonard Kleinrock:我很清楚用不了多久这些计算机就会有相互通信的需求,但如何协调处理这些分时系统概率性产生的分组(不同于电路交换),却没有有效的方法,我有处理该问题的方法,因此对于我的博士研究,我决定创造一种数学理论来建模,评价,设计和优化有效和可靠的数据网络。

这是分叫交换网络的理论鼻祖,我们如今的网络分析理论多数来自于他的理论,如排队论建模。有了理论基础,网络便开始建设。

1960 年代末,最初的分组网(前身 ARPAnet)如下(来自 RFC33):

                                 SRI_____/     \|  XDS  ||  940  |\_____/|+----------+|    IMP   |+----------+/   |    \/    |     \/     |      \  +----+    _____/      |       \ | I  |   /     \______     +----+ /       |        \| M  |--|  DEC  |/      \    | I  |/        |         | P  |  | PDP-10||   IBM  |---| M  |         |         +----+   \_____/| 360/75 |   | P  |\        |\______/    +----+ \       |                    UTAH\      |UCSB               \     |+----------+|    IMP   |+----------+|___|___/       \|   XDS   ||(sigma)-7|\_______/UCLAFigure 1 Initial network configuration

网络旨在连接主机到主机,人坐在主机前与远端另一台相同或相似的主机通信,就像人们打电话一样。这种通信模型就是对等通信。面临的问题可想而知:

Vinton G. Cerf:假定我们不能实际改变这些网络本身,那么怎样才能让异构的分组网络彼此之间互操作呢?我们希望找到一种方法可以使任意多的分组网络以透明的方式进行互联,以便主机彼此之间不做任何转换就能进行端到端通信。

这愿景导致了 TCP/IP 诞生。

1986 年一次偶然的网络拥塞崩溃事件引起了人们的注意,幸亏 VJ 恰好在 1988 年摸清了 TCP 的网络动力学,即 “VJ 管道” 和 “TCP self-clock” 并完成了拥塞控制的理论实践,而在此之前,RFC791 只是一个纯端到端协议,没有任何网络感知和反馈机制:

Van Jacobson(VJ):我无法弄明白它失效的原因是我不理解它究竟如何开始运转的(不失效时正常运转的机理),它迫使我们弄明白了驱动 TCP 运转的 ACK 时钟,从那以后,其它事就容易了。

TCP Tahoe/Reno 为即将到来的拥塞时代做好了准备,紧接着 1989 年,万维网诞生了:

Berners-Lee:Web 页面和链接的行为规则,制造了一个大范围的万维网世界。

这改变了网络的拓扑,互联网节点从正态分布趋向幂律分布,这意味着拥塞将更加普遍并难以预测。

自 1969 年开始 ARPAnet,经过 1981 年标准化 TCP/IP,1983 年元旦完成 TCP/IP 的全面部署,互联网彻底实现互联,1986 年拥塞崩溃事件促使 1988 年完成拥塞控制理论基础以及 TCP Tahoe/Reno 实现,一切恰似上天的安排,做好准备迎接 1989 年万维网的诞生。

万维网通信和曾经的对等通信有什么本质不同。内容单向分发的通信模型并非核心,核心是连接形成的方式。

在对等通信中,节点就是主机(确切说是主机程序),它的处理能力和实际信息需求决定了指向它连接的数量,以电子邮件为例,只要处理邮件的是人,同时 n(n 很大) 对 1 的通信就不可能。可以将对等通信规模对应于现实世界的通信规模,两者极为相似。

但 Web 万维网不同,它的节点是文档,连接是超链接,这是一个虚拟的,overlay 于互联网之上的,几乎可无限扩展的优先连接网络,而优先连接正是幂律成因之一。从理论上分析,这种网络中出现巨无霸的超级节点是必然的,且这种节点的规模呈幂律分布。从现实的互联网对万维网超级节点访问,就是同时 n 对 1 的通信,这就产生了拥塞:
在这里插入图片描述

某种意义上讲,Web 就是互联网,互联网只是万维网的一个前端。超级站点的出现,HTTP over TCP 就成了协议瓶颈,而 TCP 原本并不适合这种多对一的通信模式。TCP/IP 使主机对之间可以 “交谈”,但 Web 用于分布信息的生产和消耗。“信息传播” 是一种广义意义上的通信,而 “成对交谈” 只是其中一个很小的子集。

我们确实需要一个专门为 Web 信息分发构建的通信协议,因为 TCP(包括 QUIC) 应对这种通信模型是非常低效的。如今内容提供商纷纷部署 CDN,这改变了互联网结构,使其更加扁平化,让终端更高效得内容:
在这里插入图片描述

这是好事。但拥塞只是向下转移到了接入侧,即最后一公里,超级站点变成了多个大型站点。

伯纳斯李(Berners-Lee)的初衷是为了方便研究人员之间共享和交流信息,随后他提出了一个基于超文本的信息系统的设想,旨在将各种不同类型的信息,如文档、图像、声音等,通过超链接连接在一起,使同事们能够方便地在不同的信息之间进行跳转。

就像 TCP/IP 最终走向商业化一样,Web 技术以更快的速度传播和推广,已经与初衷一点也不像了。为了使用如此具有吸引力的 Web,人们被迫在规模小得多的 TCP/IP 互联网上映射万维网,互联网变得拥挤不堪。

仔细观察万维网和互联网的拓扑,就能发现它们在拓扑上根本的不同。万维网是虚拟的点对点直连拓扑,两个 URI 通过超链接直连,而互联网涉及布线和管理成本,则紧凑得多,与直连拓扑相反,流量只要能中转就尽量中转。这意味着针对同一 URI 资源的访问注定会收敛到同一链路(或远或近),考虑到该资源的流行度越高,聚合带宽几乎一定会超过链路带宽从而造成拥塞。

根源不在互联网设施不行,而是万维网内容到从互联网访问这些内容的映射规则错配了。以一个规模小但慢得多的网络搏一个规模巨大的网络,拥塞是必然。

不光互联网和万维网错配,任何网络都不易与万维网适配。火车票购票难,知名景点拥挤不堪,节假日高速公路拥堵都是和万维网错配的例子。

人的行动速度大约在 3km/h(步行) 到 700km/h(飞机),多数集中在 80km/h 以下,这种尺度下所有行为都是公平的,而借助于现代通信工具,人获取信息的时间尺度却完全不在一个数量级(通过 IM,朋友圈,微博,dy,大量人几乎一瞬间获得相同的信息,并在同一时刻行动),于是就会出现非常多的人一起涌入同一处的场景。人们对现实世界的认知来自万维网,试图将它们与现实世界进行映射,与互联网拥塞一样,这就是现实世界拥塞的根源。

VJ 曾提出激进的 NDN 以解决内容分发与互联网的错配问题,在现实世界中,人们早就有类似的方法,这从侧面验证了 NDN 思想的正确性,进一步催生并持续优化了 CDN。为应对火车票购票难,在人流密集区域新增了代售点,为应对商超购物排队,出现了便利店,为应对由于品牌效应带来的顾客过载,连锁店就出现了。

内容分发和现实世界商品物资分发一样,多数属匿名分发,摆脱了内容的位置约束,这让汇聚压缩 n 对 1 通信流量成为可能。如果内容不在离用户最近的地方重复拷贝,就必然要在传输链路上重复拷贝(若动态内容,假设在源和分发点已经做了 “组播”),这中间有一种权衡:
在这里插入图片描述

本质上是要找一种汇聚压缩 n 对 1 通信流量的方法,如上图所示,需要在存储和传输之间做买卖,对于动态内容,分发点之前的分级组播分发则是高尚的。

现实中的 CDN 是否恰到好处,或者能否再进一步微调以优化,还有很多事要做。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5950.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vim Masterclass 笔记21】S09L39:Vim 设置与 vimrc 文件的用法示例(二)

文章目录 S09L39 Vim Settings and the Vimrc File - Part 21 Vim 的配色方案与 color 命令2 map 命令3 示例:用 map 命令快速生成 HTML 代码片段4 Vim 中的 Leader 键5 用 mkvimrc 命令自动生成配置文件 写在前面 本篇为 Vim 自定义配置的第二部分。当中的每个知识…

Debian 上安装PHP

1、安装软件源拓展工具 apt -y install software-properties-common apt-transport-https lsb-release ca-certificates 2、添加 Ondřej Sur 的 PHP PPA 源,需要按一次回车: add-apt-repository ppa:ondrej/php 3、更新软件源缓存: apt-g…

docker Ubuntu实战

目录 Ubuntu系统环境说明 一、如何安装docker 二、发布.netcore应用到docker中 Ubuntu系统环境说明 cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.5 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.5 LTS (Jammy Jellyfish)&quo…

Android OpenGL(六) 纹理

纹理 纹理是一个2D图片(甚至也有1D和3D的纹理), 它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的 房子上,这样你的房子看起来就像有砖墙外表了 纹理环绕方式 纹理坐…

C# 网络协议第三方库Protobuf的使用

为什么要使用二进制数据 通常我们写一个简单的网络通讯软件可能使用的最多的是字符串类型,比较简单,例如发送格式为(head)19|Msg:Heart|100,x,y,z…,在接收端会解析收到的socket数据。 这样通常是完全可行的,但是随着数据量变大&…

微软Win10 RP 19045.5435(KB5050081)预览版发布!

系统之家1月20日最新报道,微软面向Release Preview频道的Windows Insider项目成员,发布了适用于Windows10 22H2版本的KB5050081更新,更新后系统版本号将升至19045.5435。本次更新增加了对GB18030-2022标准的支持,同时新版日历将为…

零售业革命:改变行业的顶级物联网用例

mpro5 产品负责人Ruby Whipp表示,技术进步持续重塑零售业,其中物联网(IoT)正引领这一变革潮流。 研究表明,零售商们正在采用物联网解决方案,以提升运营效率并改善顾客体验。这些技术能够监控运营的各个方面…

ASP .NET Core 学习(.NET9)部署(一)windows

在windows部署 ASP .NET Core 的时候IIS是不二选择 一、IIS安装 不论是在window7 、w10还是Windows Server,都是十分简单的,下面以Windows10为例 打开控制面版—程序—启用或关闭Windows功能 勾选图中的两项,其中的子项看需求自行勾选&am…

【组件库】使用Vue2+AntV X6+ElementUI 实现拖拽配置自定义vue节点

先来看看实现效果: 【组件库】使用 AntV X6 ElementUI 实现拖拽配置自定义 Vue 节点 在现代前端开发中,流程图和可视化编辑器的需求日益增加。AntV X6 是一个强大的图形化框架,支持丰富的图形操作和自定义功能。结合 ElementUI,…

docker 部署confluence

1.安装docker的过程就不说了。 2.下载镜像。 docker pull cptactionhank/atlassian-confluence:7.4.0 docker images 3.下载pojie 包。 https://download.csdn.net/download/liudongyang123/90285042https://download.csdn.net/download/liudongyang123/90285042https://do…

C++ 二叉搜索树

目录 概念 性能分析 二叉搜索树的插入 二叉树的查找 二叉树的前序遍历 二叉搜索树的删除(重点) 完整代码 key与value的使用 概念 对于一个二叉搜索树 若它的左子树不为空,则左子树上所有的节点的值都小于等于根节点的值若它的右子树不为空…

重生之我在异世界学编程之C语言:深入指针篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文(1)内置数…

HTTP 配置与应用(不同网段)

想做一个自己学习的有关的csdn账号,努力奋斗......会更新我计算机网络实验课程的所有内容,还有其他的学习知识^_^,为自己巩固一下所学知识,下次更新校园网设计。 我是一个萌新小白,有误地方请大家指正,谢谢…

YOLOv5训练自己的数据及rknn部署

YOLOv5训练自己的数据及rknn部署 一、下载源码二、准备自己的数据集2.1 标注图像2.2 数据集结构 三、配置YOLOv5训练3.1 修改配置文件3.2 模型选择 四、训练五、测试六、部署6.1 pt转onnx6.2 onnx转rknn 七、常见错误7.1 训练过程中的错误7.1.1 cuda: out of memory7.1.2 train…

STM32 ST7735 128*160

ST7735 接口和 STM32 SPI 引脚连接 ST7735 引脚功能描述STM32 引脚连接(示例,使用 SPI1)SCLSPI 时钟信号 (SCK)PA0(SPI1_SCK)SDASPI 数据信号 (MOSI)PA1 (SPI1_MOSI)RST复位信号 (Reset)PA2(GPIO 手动控制)DC数据/命令选择 (D/C)PA3 (GPIO 手…

使用Redis缓解数据库压力+三种常见问题

目录 一.如何使用 Redis 缓存减缓数据库的压力 : 二.Redis缓存穿透: 布隆过滤器的工作原理: 三.缓存雪崩: 缓存雪崩的处理策略: 四.缓存击穿: 使用 Redis 缓存来减缓数据库的压力是一个常见的优化手段…

移动端VR处理器和传统显卡的不同

骁龙 XR 系列芯片 更多地依赖 AI 技术 来优化渲染过程,而传统的 GPU 渲染 则倾向于在低画质下运行以减少负载。这种设计是为了在有限的硬件资源下(如移动端 XR 设备)实现高性能和低功耗的平衡。以下是具体的分析: 1. AI 驱动的渲染…

AI新玩法:Flux.1图像生成结合内网穿透远程生图的解决方案

文章目录 前言1. 本地部署ComfyUI2. 下载 Flux.1 模型3. 下载CLIP模型4. 下载 VAE 模型5. 演示文生图6. 公网使用 Flux.1 大模型6.1 创建远程连接公网地址 7. 固定远程访问公网地址 前言 在这个AI技术日新月异的时代,图像生成模型已经成为了创意工作者和开发者手中…

WordPress果果对象存储插件

将网站上的图片等静态资源文件上传至七牛云对象存储,可以减轻服务器文件存储压力,提升静态文件访问速度,从而加速网站访问速度。 支持:阿里云对象存储、华为云对象存储、百度云对象存储、腾讯云对象存储、七牛云对象存储。 下载…

2025美赛倒计时,数学建模五类模型40+常用算法及算法手册汇总

数学建模美赛倒计时,对于第一次参加竞赛且没有相关基础知识的同学来讲,掌握数学建模常用经典的模型算法知识,并熟练使用相关软件进行建模是关键。本文将介绍一些常用的模型算法,以及软件操作教程。 数学建模常用模型包括&#xf…