[Cloud Networking] SPDY 协议

文章目录

  • 1. 背景
  • 2. SPDY 之前
  • 3. SPDY 项目目标
  • 4. SPDY 功能特点
    • 4.1 SPDY基本功能
    • 4.2 SPDY高级功能

1. 背景

TCP是通用的、可靠的传输协议,提供保证交付、重复抑制、按顺序交付、流量控制、拥塞避免和其他传输特性。
HTTP是提供基本请求/响应语义的应用层协议。

不幸的是,HTTP并不是特别为延迟设计的。比如我们要访问一个网站,当我们浏览器输入网址例如 www.baidu.com 回车之后,浏览器需要请求多个资源,然后再渲染展示。

HTTP要求每个资源就要创建一个HTTP请求,即使使用HTTP管道,仍然需要按照FIFO队列来执行,服务器延迟又阻止了TCP通道的请求重用。最终只能让浏览器通过使用多个连接来解决这个问题。最开始浏览器默认每个域2个连接,后来扩展到6个连接。

如下网页,需要一次发送HTTP请求如下资源:

  1. CSS (Cascading Style Sheets)
  2. IMG (Images)
  3. JS (javascript)
  4. Templates (More html)
  5. 其他异步数据
HTTP/1.1   200  OK
Content-type: text/html
Connection: Close

<html>
  <head>
    <link rel="stylesheet" type="text/css" href="style.css">
    <link rel="stylesheet" type="text/css" href="style2.css">
    ...
  </head>
  ...
</html>

在HTTP中,只有客户端可以发起请求,即使服务器知道客户端需要某个资源,它也没有机制通知客户端,必须等待从客户端接收到资源的请求。

此外,HTTP header大小逐渐变大, HTTP header 大小从200字节到2KB不等,随着应用程序使用更多的cookie和代理扩展功能,700-800字节的header大小越来越常见。减少header可以直接改善发送请求的序列化延迟,同时例如 User-Agent \ Host \ Accept 等静态头部其实并不需要在同一通道上反复发送。

此外TCP 的head of line blocking问题,TCP要求数据接收必须是有序的,中间的一次失败就会阻塞后面所有的数据包接收。

基于以上问题,Google开发SPDY协议,旨在通过减少网络延迟来提高Web页面的加载速度。它是一种基于TCP应用层协议,旨在优化HTTP协议的性能

SPDY的主要特点包括

  1. 多路复用:允许在一个SPDY连接内有无限个并行请求,这样可以共享一个TCP会话进行多个HTTP请求,从而减少消息交互往返的时间和延迟。
  2. 请求优先级:可以设置优先级,选择性地传输更重要的资源,如CSS和JavaScript,然后是其他资源。
  3. HTTP头部压缩:删除不必要的头信息,通过压缩减少数据传输所带来的等待时间和带宽。
  4. 服务器推送技术:服务器可以主动向客户端发送数据,这种预加载可以使用户一直保持一个快速的网络。

SPDY协议不是用于替代HTTP的协议,而是对HTTP协议的增强。它通过实现多路复用、请求优先级、头部压缩和服务器推送等功能,提高了网页加载速度,同时也减少了延迟。

随着时间的推移,SPDY协议已经成为了HTTP/2的基础,并在多个浏览器和服务器上得到了广泛支持。

2. SPDY 之前

在SPDY协议之前,还有其他协议来解决网络延迟,只是他们大多处在传输层或会话层:

  1. Stream Control Transmission Protocol(SCTP) 用于替代TCP的传输层协议,提供多路复用流和流意识的拥塞控制。
  2. HTTP over SCTP:一种让HTTP在SCTP上运行的协议
  3. Structured Stream Transport (SST),一种创建“结构化流”的协议,是一种清凉、独立的用于在普通传输层上运行的协议。可以替代TCP或者运行在UDP上。
  4. MUX/SMUX,结余传输层和应用层之间的协议,它提供了流的多路复用。

这些都提供了解决一些互联网延迟问题的方法,但由于HTTP中的问题(压缩、优先级等)仍然需要解决,这与底层的传输层协议无关。从实际上讲,改变传输层是非常难以部署的。

3. SPDY 项目目标

SPDY项目定义并实现了一个应用层协议,用于大幅度减少网络的延迟。SPDY的High Level 目标包括:

  1. 目标是减少50%的页面加载时间。
  2. 最小化部署复杂性。SPDY使用TCP作为底层传输层,因此不需要对现有网络基础设施进行任何更改。
  3. 避免需要网站作者对内容进行任何更改。支持SPDY所需的唯一更改是在客户端用户代理和Web服务器应用程序中。
    4,. 聚集志同道合的团体,期望与开源社区和行业专家合作开发这一新协议。

一些具体的技术目标包括:

  1. 允许许多并发的HTTP请求在单个TCP会话中运行。
  2. 通过压缩头部和消除不必要的头部来减少HTTP当前使用的带宽。
  3. 定义一个易于实现且对服务器高效的协议。我们希望通过减少边缘情况和定义易于解析的消息格式来降低HTTP的复杂性。
  4. 使SSL成为底层传输协议,以获得更好的安全性和与现有网络基础设施的兼容性。尽管SSL确实引入了延迟后果,但相信网络的长期未来取决于安全的网络连接。此外,使用SSL是必要的,以确保跨现有代理的通信不被破坏,尽可能地使服务器能够启动与客户端的通信并向客户端推送数据。

4. SPDY 功能特点

SPDY 在SSL上添加了一层应用会话层。
在这里插入图片描述

4.1 SPDY基本功能

多路复用流

一个 TCP 连接上的无限双向流(Unlimited bi-directional stream over 1 TCP connection)

SDPY 允许无线数量的并发流在单个TCP连接上运行,TCP效率大大提升,需要建立的网络连接减少,也减少需要发送的包的数量。

请求优先级

虽然无限数量的并发流解决了序列化问题,但它们引入了另一个问题:如果通道上的带宽受限,客户端可能会阻止请求,以免塞满通道。
为了克服这个问题,SPDY实现了请求优先级:客户端可以从服务器请求任意数量的资源,并为每个请求分配优先级。
这样可以防止在高优先级请求待处理时,通道被非关键资源所塞满。

HTTP头部压缩

SPDY压缩请求和响应的HTTP头部,导致发送的包较少,传输的字节数也减少。

4.2 SPDY高级功能

SPDY提供了一个高级的功能,即服务器启动的流
服务器启动的流可以用来向客户端发送内容,而不需要客户端请求。
可以由网页开发者通过以下两种方式配置:

  1. 服务器推送

它允许服务器通过X-Associated-Content标头向客户端推送数据。
这个标头告知客户端,服务器正在向客户端推送资源,而客户端还没有请求它。
对于首次下载页面(例如,用户第一次访问网站时),这可以极大地提升用户体验。

  1. 服务器提示

相反于自动向客户端推送资源,当服务器知道客户端将需要这些资源时,服务器使用X-Subresources标头向客户端建议它应该请求特定资源。
然而,服务器仍然会等待客户端的请求才发送内容。
在慢链接上,这个选项可以减少客户端发现需要资源所需的时间几百毫秒,并且可能更适合非首次页面加载。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网格布局之重复轨道

网格布局之重复轨道 欢迎关注&#xff1a;xssy5431 小拾岁月 参考链接&#xff1a;https://mp.weixin.qq.com/s/FQboZRMhdOFWqVDZ5JScDg 点击查看 使用场景 在网页开发中&#xff0c;我们尝尝会遇到宫格布局&#xff0c;比如&#xff1a;3 * 3&#xff0c;4 * 4布局等等。 …

6月19日(周三)A股行情总结:A股震荡收跌,恒生科技指数大涨3%,10年期国债期货转涨续创新高

内容提要 车路云概念延续昨日涨势&#xff0c;华铭智能20CM 3连板。贵金属及PEEK材料概念全日走强&#xff1b;港股有色金属及能源股走强&#xff0c;紫金矿业涨超3%&#xff0c;中石油涨超3%。国债期货午后全线转涨&#xff0c;10年期主力合约涨0.05%报104.925元&#xff0c;…

7zip安装后压缩包图标显示空白解决办法

记录安装7zip软件后&#xff0c;出现了如下的图标是空白的问题: &#xff08;虽然我最终解决了但是我不确定是哪一步起的作用&#xff0c;但是我也懒得再情景复现了。&#xff09; 我的解决过程是&#xff1a; 在开始菜单栏搜索“7zip ”然后点击“打开。 然后点击 &#xf…

HTTP!!!

HTTP 一 : 请求报文1.2 : 首行1.3 :请求头(header)1.4 : 空行1.5 : 正文 body 二: 响应报文2.2 : 首行 三 : URL 一 : 请求报文 一个HTTP 请求报文, 分成四个部分 首行 GET https://cn.bing.com/?FORMZ9FD1 HTTP/1.1请求头(header)空行正文(body) 1.2 : 首行 首行又分为三个…

CobaltStrike后渗透进阶篇

0x01 网络钓鱼攻击 钓鱼攻击简介 钓鱼攻击主要通过生成的木马诱使受害者运行后上线&#xff0c;其中木马一般都伪装成正常的程序。与此同时配合钓鱼网站可帮助攻击者模拟真实网站诱骗受害者访问&#xff0c;达到获取账号密码、上线木马等目的。接下来主要介绍后门程序的生成及…

自动化测试接口测试前的【准备及思路】

1、什么是接口测试 客户端&#xff08;前端&#xff09;与服务端&#xff08;后端&#xff09;的关系&#xff0c;一般小编会理解为“服务端负责赚钱养家&#xff0c;客户端负责貌美如花”。客户端更注重的是功能呈现及用户体验&#xff0c;怎么将强大的功能精彩的界面呈现给不…

云上战场:ToDesk云电脑、青椒云、顺网云全面对决

前言 记得端午放假期间&#xff0c;我已经在旅游的路上了&#xff0c;老板突然发短信&#xff0c;让我给他画个图&#xff0c;我手上的战斗机已经是十年前的老古董了(平常一直用的公司电脑&#xff0c;也没想过要换)&#xff0c;压根满足不了老板的任务要求&#xff0c;不得已&…

系统之家教你安装最新Win10 22H2版本!一看就会!

当前很多用户办公或学习都喜欢使用Win10系统&#xff0c;但很多新手用户不知道怎么操作才能安装上最新的Win10 22H2版本&#xff1f;接下来系统之家小编就给大家带来最简单的安装方法&#xff0c;帮助大家轻松快速给电脑安装上Win10系统最新版本22H2&#xff0c;体验22H2版本带…

Footer组件在home 、search 显示,在登录、注册隐藏

footer组件显示与隐藏 我们可以根据组件身上的$route获取当前路由的信息&#xff0c;通过路由路径判断Footer显示与隐藏。配置的路由的时候&#xff0c;可以给路由添加路由元信息【meta】&#xff0c;路由需要配置对象&#xff0c;它的key不能瞎写、胡写、乱写 <template&…

Python网络爬虫4-实战爬取pdf

1.需求背景 爬取松产品中心网站下的家电说明书。这里以冰箱为例&#xff1a;松下电器-冰箱网址 网站分析&#xff1a; 第一步&#xff1a; 点击一个具体的冰箱型号&#xff0c;点击了解更多&#xff0c;会打开此型号电器的详情页面。 第二步&#xff1a;在新打开的详情页面中…

N7745A Keysight 是德 多端口光功率计 简述

N7745A光功率计专为表征多端口光器件而设计&#xff0c;适用于多路复用器、PON分路器、波长选择开关&#xff08;WSS&#xff09;和ROADM等多端口器件的测试。它可以节省通道空间&#xff0c;通过LAN或USB连接进行并行编程&#xff0c;集成多种设备到单一设置&#xff0c;提高了…

用Vue3和ApexCharts打造交互式3D折线图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 中使用 ApexCharts 构建交互式折线图 应用场景 ApexCharts 是一个功能强大的 JavaScript 库&#xff0c;用于创建交互式、可定制的图表。在 Vue.js 中&#xff0c;它可以通过 vue3-apexcharts 插件轻松…

JavaFX HTMLEditor

HTMLEditor控件是一个富文本编辑器&#xff0c;具有以下功能。 粗体斜体下划线删除线字体系列字体大小前景色背景颜色缩进项目符号列表编号列表对齐水平线复制文本片段粘贴文本片段 HTMLEditor类返回HTML字符串中的编辑内容。 创建HTML编辑器 import javafx.application.App…

docker安装使用

文章目录 docker产生的原因传统虚拟机容器化技术 docker组成安装docker镜像加速docker安装过程中遇到的问题以及解决办法Errors during downloading metadata for repository root_:Failed to set locale, defaulting to C.UTF-8 docker产生的原因 传统虚拟机 在不使用docker…

《Linux运维总结:基于ARM64架构CPU使用docker-compose一键离线部署alertmanager v0.27.0高可用集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面对不同的客户部署业务系统&#xff0…

基于SpringBoot+Vue农产品管理与销售APP设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

刚刚发布!这4本期刊已剔除SCI收录,附完整目录下载

科睿唯安于6月19日更新了SCIE、SSCI、AHCI、ESCI四大数据库最新收录期刊目录。 2024年第一版——2024年1月24日更新 2024年第二版——2024年2月19日更新 2024年第三版——2024年3月18日更新 2024年第四版——2024年4月15日更新 2024年第五版——2024年5月20日更新 2024年…

处于损害控制模式的微软表示,它将优先考虑安全性,而不是人工智能

处于损害控制模式的微软表示&#xff0c;它将优先考虑安全性&#xff0c;而不是人工智能 微软总裁布拉德史密斯(Brad Smith)周四在国会作证时表示&#xff0c;微软正在调整公司文化&#xff0c;将安全作为头等大事&#xff0c;并承诺安全将“比公司在人工智能方面的工作更重要”…

数字人源码部署该如何选对数字人源头工厂?

数字人作为AI产业的中流砥柱&#xff0c;其应用场景之广泛。从数字人口播、到直播到数字人克隆、到声音克隆、再至AI复活、数字人名片、数字人员工、数字人客服、3D息影舱智能交互、要知道这一切仅仅只是用了两年的时间&#xff0c;可见我国的AI技术取得突破性发展. 如果把时间…

KEIL5.39 5.40 fromelf 不能生成HEX bug

使用AC6 编译,只要勾选了生成HEX。 结果报如下错误 暂时没有好的解决办法 1.替换法 2.在编译完后用命令生成HEX