SPDY是何方神圣

程序员小迷 2024-08-18 10:19:28

一、概述

1.2012 年 Google 提出了基于TCP的 SPDY 方案,优化了 HTTP1.x 的请求延迟,解决了HTTP1.X 的安全性。

2.SPDY是 HTTP1.x 的优化方案,旨在优化Web页面加载的时间。

3.SPDY 位于 HTTP 之下,TCP 和 SSL 之上,这样可以轻松兼容老版本的 HTTP协议(将HTTP1.x的内容封装成一种新的frame格式),同时可以使用已有的 SSL 功能。

4.SPDY的实现需要客户端和服务端同时支持。

SPDY的特性如下:

二、降低延迟

1.对于HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)在同一TCP连接上并发处理多个请求和响应。

2.多路复用通过多个请求 stream 共享一个 TCP 连接的方式,解决了HTTP request层面的 队头阻塞(HOL blocking ,即Head of Line blocking)的问题,但TCP层面的队头阻塞问题(由于丢失或延迟的数据包导致重传阻塞)并未解决,基于QUIC(Quick UDP Internet Connections)的HTTP/3基本可以解决队头阻塞问题。

3.SPDY使用多路复用进行TCP连接降低了延迟同时提高了带宽的利用率。

三、请求优先级(request prioritization)

1.多路复用带来的一个新的问题是:在连接共享的基础上有可能会导致关键请求被阻塞。SPDY 允许给每个 request 设置优先级,这样重要的请求就会优先得到响应。

2.例如浏览器加载首页,首页的html内容应该优先加载展示,之后才是各种静态资源文件、脚本文件等的加载,这样可以保证用户能第一时间看到网页内容。

四、header 压缩

1. HTTP1.x 的 header 很多时候都是重复的。选择合适的压缩算法压缩请求和响应的头部可以减小包的大小和数量。

2.SPDY采用DEFLATE算法进行头部压缩,HTTP/2采用HPACK算法进行头部压缩。

五、安全性

1.SPDY强制基于 HTTPS 的加密协议传输,大大提高了传输数据的安全性。

2.HTTP/2支持明文和密文HTTP传输。

六、服务端推送(server push)

1.SPDY允许服务器主动推送资源到客户端,而不需要客户端明确请求。这可以预加载一些资源,从而减少等待时间。

2.例如网页有一个 对sytle.css文件的请求,在客户端收到 sytle.css 数据的同时,服务端也会将 sytle.js 文件推送给客户端。这样当客户端再次尝试获取 sytle.js 文件时就可以直接从缓存中获取到,不用再发请求了。

七、流控制

1.SPDY提供了流控制机制,允许客户端控制数据的流动,防止服务端数据发送过快。

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

0 阅读:6

程序员小迷

简介:致力于Android、iOS、C、Java等编程技术的技巧经验分享