Http&Https协议

本文详细介绍了Http协议从1.0到1.1再到Http/2的演进,包括Keep-Alive、Chunk机制、Pipeline与Head-of-line Blocking问题。此外,深入讲解了SSL/TLS协议,包括加密方式、数字证书、四次握手过程。最后,探讨了QUIC协议如何解决TCP的队头阻塞问题以及减少RTT次数。
摘要由CSDN通过智能技术生成

1.Http1.0

1.1 http1.0问题

Http的特点“一来一回”,客户端发起一个TCP连接,在连接上发一个HTTP Request到服务器,服务器返回一个HTTP Response,然后关闭连接。

这样的协议存在两个问题:

(1)性能问题:耗时,连接数有限。

(2)服务器推送问题:不支持“一来多回”。

1.2 Keep-Alive机制与Content-Length属性

解决性能问题:Http1.0设计了一个Keep-Alive机制实现TCP连接的复用。就是在HTTP请求头部加上字段Connection Keep-Alive。服务器收到这样的请求后就不会关闭,同时HTTP的Response也加上该字段,等待该连接的下一个请求。再者,连接数量有限,所以服务器会有一个Keep-Alive timeout参数,若没有新的请求过来,就会关闭连接。

问:客户端如何知道连接处理结束了?

答:Http Responsed的头部返回一个Content-Length:xxx的字段,这个字段可以快告诉客户端Http Response的Body共有多少字节。

2.Http1.1

2.1 连接复用与Chunk机制

默认连接复用,除非Connection:Close属性,才会处理完关闭。

Http1.0中Content-Length计算动态代码比较耗时。所以Http1.1引用Chunk机制(Http Streaming),即,响应头部加上,Transfer-Encoding:chunked属性。

2.2 Pipeline与Head-of-line Blocking问题

连接复用还存在一个问题,同一个连接上是串行的,导致并发度不够。Http1.1引入了Pipeline机制,可以在上一个请求没有响应返回时发送下一个请求。

但是Pipeline有个问题,就是Head-of-Line Blocking(对头阻塞)。相对列一样,如果客户端收不到请求1的响应,则请求2,3会被阻塞。

2.3 Http/2出现之前的性能提升方法

一方面,Pineline不能用,请求是串行的。另一方面,同一个域名,浏览器限制只能开6~8个连接。

如何提高高并发度?

(1)Spriting技术

针对小图片,把小图片拼成一张大图发送一个请求,再通过JS.CSS截取小图片。

(2)内联(Inlining)

把图片嵌入到CSS文件里。

(3)JS拼接

把大量小的JS文件合并成一个文件并压缩。

(4)请求的分片技术

多做几个域名,绕开浏览器的显示连接量

2.4 “一来多回”问题

怎么样做到服务器主动推送,实现一来多回?

(1)客户端定期轮询

每5秒发送一个HTTP请求。效率低,增加服务器压

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值