HTTP
-
HTTP 超文本传输协议
,它定义了客户端和服务器之间交换报文的格式和方式,它使用 TCP 作为传输层协议,保证了数据传输的可靠性。 -
特点
无状态的协议
传输的数据都是未加密的,信息是明文传输,存在安全问题
默认使用 80 端口 -
连接模式
非持续的连接
是服务器必须为每一个请求的对象建立和维护 一个全新的连接,HTTP/1.0 以前使用的非持续的连接,但是可以在请求时,加上Connection: keep-alive
来要求服务器不要关闭 TCP 连接。
持续连接
TCP 连接默认不关闭,可以被多个请求复用。采用持续连接的好处是可以避免每次建立 TCP 连接三次握手时所花费的时间。HTTP1.1 以后默认采用的是持续的连接。目前对于同一个域,大多数浏览器支持 同时建立 6 个持久连接。 -
HTTP/1.1 协议缺点
HTTP/1.1 默认使用了持久连接,多个请求可以复用同一个 TCP 连接,但是在同一个 TCP 连接里面,数据请求的通信次序是固定的。服务器只有处理完一个请求的响应后,才会进行下一个请求的处理,如果前面请求的响应特别慢的话,就会造成许多请求排队等待的情况,这种情况被称为队头堵塞
。队头阻塞会导致持久连接在达到最大数量时,剩余的资源需要等待其他资源请求完成后才能发起请求。
为了避免这个问题,一个是减少请求数,一个是同时打开多个持久连接。这就是我们对网站优化时,使用雪碧图、合并脚本的原因。
HTTP/2
-
二进制协议
HTTP/2 是一个二进制协议。在 HTTP/1.1 版中,报文的头信息必须是文本(ASCII 编码),数据体可以是文本,也可以是二进制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为帧
,可以分为头信息帧和数据帧。 帧的概念是它实现多路复用的基础。 -
多路复用
HTTP/2 实现了多路复用,HTTP/2 仍然复用 TCP 连接,但是在一个连接里,客户端和服务器都可以同时发送多个请求或回应,而且不用按照顺序依次发送,这样就避免了队头堵塞
的问题。 -
数据流
HTTP/2 使用了数据流的概念,因为 HTTP/2 的数据包是不按顺序发送的,同一个连接里面连续的数据包,可能属于不同的请求。因此,必须要对数据包做标记,指出它属于哪个请求。HTTP/2 将每个请求或回应的所有数据包,称为一个数据流。每 个数据流都有一个独一无二的编号。数据包发送的时候,都必须标记数据流 ID ,用来区分它属于哪个数据流。 -
头信息压缩
HTTP/2 实现了头信息压缩,由于 HTTP 1.1 协议是无状态的,每次请求都必须附上所有信息。所以,请求的很多字段都是重复的,比如 Cookie 和 User Agent ,一模一样的内容,每次请求都必须附带,这会浪费很多带宽,也影响速度。
HTTP/2 对这一点做了优化,引入了头信息压缩机制。一方面,头信息使用 gzip 或 compress 压缩后再发送;另一方面, 客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就能提高速度了。 -
服务器推送
HTTP/2 允许服务器未经请求,主动向客户端发送资源,这叫做服务器推送
。使用服务器推送,提前给客户端推送必要的资源 ,这样就可以相对减少一些延迟时间。这里需要注意的是 HTTP/2 下服务器主动推送的是静态资源,和 WebSocket 以及使用 SSE 等方式向客户端发送即时数据的推送是不同的。
HTTPS
-
HTTPS 超文本传输安全协议
,HTTPS 是基于 HTTP 协议的,不过它会使用 TLS/SSL 来对数据加密。使用 TLS/ SSL 协议,所有的信息都是加密的,第三方没有办法窃听。并且它提供了一种校验机制,信息一旦被篡改,通信的双方会立刻发现。它还配备了身份证书,防止身份被冒充的情况出现。 -
特点
HTTPS 协议是由 HTTP + SLL 协议构建的,安全性高于 HTTP
默使用 443 端口 -
HTTPS 协议的工作原理
- 客户端使用 HTTPS 的 url 访问 web 服务器,要求与服务器建立 SLL 连接
- web 服务器收到客户端请求后,会将网站的证书(包含公钥)传送一份给客户端
- 客户端收到网站证书后会检查证书的颁发机构以及过期时间,如果没有问题就随机产生一个秘钥
- 客户端利用公钥将会话秘钥加密,并传送给服务端,服务端利用自己的私钥解密出会话秘钥
- 之后服务器与客户端使用秘钥加密传输
-
HTTPS 协议的优点
传输稳定
传输完整
传输安全
利于SEO -
HTTPS 协议的缺点
费时,HTTPS 握手阶段比较费时,会使页面加载时间延长 50%,增加 10%~20%的耗电
费性能,HTTPS 缓存不如 HTTP 高效,会增加数据开销
费钱,SSL 证书( ca 证书)也需要钱,功能越强大的证书费用越高
SSL 证书需要绑定 IP,不能在同一个 IP 上绑定多个域名,IPV4 资源支持不了这种消耗
SSL
- SSL(Secure Sockets Layer 安全套接字协议),是网景公司率先采用的网络安全协议,它是在传输通信协议上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,他们都使用公开密钥技术
- SSL的优势在于它是与应用层协议独立无关的,高层的应用层协议能透明的建立于SLL协议之上,SSL协议在应用层协议通信之前就以及完成加密算法,通信密钥的协商以及服务器认证工作。在此之后,应用层协议所传送的数据都会被加密,从而保证通信的私密性
- TLS(Transport Layer Security 传输层安全,SSL继任者)是为网络通信提供安全及数据完整性的一种安全协议,TLS与SSL在传输层与应用层之间对网络连接进行加密