为什么说HTTP是不安全的?
1.数据以明文传递,有被窃听的风险。
2.接收到的报文无法证明是发送时的报文,不能保障完整性,因此报文有被篡改的风险。
3.不验证通信两端的身份,请求或响应有被伪造的风险。

HTTPS有哪些缺点?
1.通信两端都需要进行加密和解密,会消耗大量的CPU、内存等资源,从而会增加服务器的负载。
2.加密运算和多次握手降低了访问速度。
3.在开发阶段,加大了页面的调试难度。因为信息都被加密了,所以使用代理工具的话,需要先解密才能看到真实信息。
4.用HTTPS访问的页面,页面内的外部资源都得用HTTPS请求,包括脚本中的Ajax请求。

HTTP/1.1有哪些不足?
1.在传输中会出现队首阻塞问题。//下面解释
2.响应不分轻重缓急,只会按先来后到的顺序执行。
3.并行通信需要建立多个TCP连接。
4.服务器不能主动推送客户端想要的资源,只能被动地等待客户端发起请求。
5.由于HTTP是无状态的,所以每次请求和响应都会携带大量冗余信息。

二进制分帧层是HTTP/2.0性能增强的关键,它是如何增强性能的。
二进制分帧层改变了通信两端交互数据的方式,原本都是以文本传输,现在要先对数据进行二进制编码,再把数据分成一个个的帧,接着把帧送到数据流中,最后对方接收帧并拼成一条消息,再处理请求。在2.0本本中,通信的最小单位是帧,若干个帧组成一条消息,若干条消息在数据流中传输,一个TCP连接可以分出若干条数据流,因此HTTP2.0只要建立一次TCP连接就能完成所有的传输。

TCP的队首阻塞是什么?
TCP是一种可靠的通信协议,中途如果出现丢包,那么发送方就会根据重发机制再发一次丢失的包,由于通信两端都是串行处理请求的,因此接收端在这个包到达之前,不会再处理后面的请求,这种现象成为队首阻塞。

http1.1的长连接和http2.0的多路复用到底有啥区别?
长连接:同一个域名访问同一个文件的多个请求都可以复用一个tcp连接(不用像1.0一样 每次请求都需要重新建立连接)
依然存在的问题:1.多个请求只能被串行处理(数据基于文本,只能按顺序传输);2.访问多个不同的文件依然会建立多个请求。
多路复用:同一个域名访问多个文件的请求也可以复用一个tcp连接,且多个请求可以被并行处理。
并行实现原理:http2.0引入二进制数据帧和流的概念(数据帧对每一个数据进行标识,可以不按顺序传输,从而实现并行)

http2.0
提升访问速度(可以对于,请求资源所需时间更少,访问速度更快,相比http1.0)

允许多路复用:多路复用允许同时通过单一的HTTP/2连接发送多重请求-响应信息。改善了:在http1.1中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞。

二进制分帧:HTTP2.0会将所有的传输信息分割为更小的信息或者帧,并对他们进行二进制编码

首部压缩

服务器端推送(虽然可以从服务器推送资源,一般用来提前缓存静态资源,并不能像websocket进行双向实时全双工通信。

HTTP请求头字段(常用)

HTTP响应头字段(常用)

图片说明
https://blog.csdn.net/a19881029/article/details/14002273
HTTP请求,响应报文