HTTP

2023-08-12  本文已影响0人  追风还是少年

HTTP缓存技术

利用两个HTTP响应头部字段实现,用来表示资源在客户端缓存的有效期:
(1) Cache Control,是一个相对时间,优先级高于Expire
(2) Expire,是一个绝对时间

注意:协商缓存的这两个字段需要配合强制缓存的Cache-Control字段来使用,只有在未命中强制缓存的时候,才能发起带有协商缓存字段的请求

对称加密算法和非对称加密算法

流程的不同,意味着目的也不相同:

一般我们不会用非对称加密来加密实际的传输内容,因为非对称加密的计算比较耗费性能的。

HTTPS

HTTPS是在HTTP和TCP层之间加入了SSL/TLS协议,可以解决HTTP明文传输的窃听风险、篡改风险、冒充风险。
HTTPS是通过以下三个方式解决上面三个风险的:
(1) 混合加密的方式实现信息的机密性,解决了窃听的风险
采用的是对称加密和非对称加密结合的「混合加密」方式

采用「混合加密」的方式的原因:

image.png

(2) 摘要算法的方式来实现完整性,它能够生成独一无二的指纹,指纹用于校验数据的完整性,解决了篡改的风险
为了保证传输的内容不被篡改,我们需要对内容计算出一个「指纹」,然后同内容一起传输给对方。
对方收到后,先是对内容也计算出一个「指纹」,然后跟发送方发送的「指纹」做一个比较,如果「指纹」相同,说明内容没有被篡改,否则就可以判断出内容被篡改了。
那么,在计算机里会用摘要算法(哈希函数)来计算出内容的哈希值,也就是内容的「指纹」,这个哈希值是唯一的,且无法通过哈希值推导出内容。
通过哈希算法可以确保内容不会被篡改,但是并不能保证「内容 + 哈希值」不会被中间人替换,因为这里缺少对客户端收到的消息是否来源于服务端的证明。
私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。


image.png

(3) 将服务器公钥放入到数字证书中,解决了冒充的风险


image.png

HTTP/1.1 、HTTP/2.0、HTTP/3.0

image.png

HTTP/1.1

优点:

缺点:
- 无状态
- 明文传输
- 不安全

性能:
- 长连接
- 管道网络传输
即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。
但是服务器必须按照接收请求的顺序发送对这些管道化请求的响应。
如果服务端在处理 A 请求时耗时比较长,那么后续的请求的处理都会被阻塞住,这称为「队头堵塞」。
HTTP/1.1 管道解决了请求的队头阻塞,但是没有解决响应的队头阻塞。
- 队头阻塞

性能瓶颈:

HTTP/2.0

HTTP/2 协议是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的
HTTP/2 相比 HTTP/1.1 性能上的改进:

HTTP/3.0

HTTP/1.1 和 HTTP/2 都有队头阻塞的问题:

HTTP/2 队头阻塞的问题是因为 TCP,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!

UDP 发送是不管顺序,也不管丢包的,所以不会出现像 HTTP/2 队头阻塞的问题。大家都知道 UDP 是不可靠传输的,但基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。

QUIC 有以下 3 个特点。

TCP三次握手&四次挥手

image.png

三次握手的原因:

双方都可以主动断开连接,断开连接后主机中的「资源」将被释放,四次挥手的过程如下图:


image.png

你可以看到,每个方向都需要一个 FIN 和一个 ACK,因此通常被称为四次挥手。

这里一点需要注意是:主动关闭连接的,才有 TIME_WAIT 状态。

四次挥手原因:

从上面过程可知,服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,因此是需要四次挥手。

上一篇 下一篇

猜你喜欢

热点阅读