HTTP常见面试题

113 阅读3分钟

缓存技术

强制缓存

浏览器向服务端请求数据,根据是否设置响应报文中的Cache-controll字段。若是,则在下一次请求时,先查看一下缓存时间是否过期。没过期,则使用缓存数据

协商缓存

浏览器向服务器请求资源,先会执行强制缓存,查看缓存是否过期。若过期,向服务器请求询问服务器的资源是否被修改过。修改过则返回200状态码,浏览器刷新缓存。没修改则返回304状态码,浏览器使用之前的缓存。

具体的协商过程有两种,1.浏览器缓存了资源的最后一次修改时间这个字段,资源过期了,通过发送最后一次修改的时间到服务器,服务器来判断资源是否被修改,修改了则200,没修改304。2.浏览器保存了资源的唯一标识,资源过期了,通过发送这个资源标识到服务器,服务器来判断资源是否被修改(有点类似乐观锁CAS),修改了则200,没修改304。

HTTP1.1的优点与缺点

优点

1.简单 (就键值对,你说简不简单) 2.易扩展(自定义添加键值对) 3.跨平台 (应用层协议)

缺点

1.明文传输 2.无状态 3.不安全 

HTTP1.1的性能

性能改进

1.支持长连接 2.支持管道传输(同时发送多个请求) 3.解决了请求队头阻塞

性能缺点

1.没有解决相应的队头阻塞 2.头部字段没有压缩且多次相互发送相同的头部字段,造成冗余 3.没有控制优先级 4.请求只能由浏览器发起

HTTP2.0的性能优化

1.压缩了请求头与响应头,通信双发都维护了包含头部字段的表,只发送头字段的索引。

2.每个HTTP数据报都成为Stream流,为每一个流设置唯一编号,可以指定流的优先级,可以并发发送流。

3.HTTP不在应用层上使用文本格式传输数据,使用二进制格式传输

4.采用多路复用技术,解决了相应队头阻塞。多路复用技术 本质是可以并发处理多个连接Socket发生的事件。

5.服务器可主动推送静态文件

HTTP2.0的缺点

存在在TCP层面的队头阻塞,因为在HTTP2.0上发送的数据成为流,流都有自己的唯一编号,所能够并发发送流。但在TCP层面发送数据会分片,收到数据时需要组装成完成的HTTP包才会被HTTP层获取。所以当在网络传输过程中出现丢失了一个流,则在TCP层面会出现队头阻塞。

HTTP3.0

基于 UDP 的 QUIC 协议

1.调整传输层为应用层提供的服务,流之间不需要组装完成才提供到应用层。所以不存在队头阻塞

2.quic协议三次握手,是为了确认双方的连接ID。并且在握手过程中包含了SSL协议的过程

3.通过连接ID的唯一标识,当网络出现切换,不会发生重新握手,无缝复用原连接,达到了连接迁移的功能

HTTP与HTTPS的区别

1.HTTPS比HTTP多加了一层SSL/TLS协议

2.HTTPS非对称加密就换秘钥,使用秘钥加密传输数据

3.HTTP端口80  HTTPS端口443

4.HTTPS需要向CA申请整数,来保证服务器的可信

5.HTTPS使用混合加密(对称加密与非对称加密传输)、使用对明文采取摘要算法算出指纹并发送到浏览器、向CA申请数字证书(将浏览器的公钥发到证书上)