HTTP协议

HTTP,HTTPS协议

HTTP协议是客户端和服务端交互的一种通讯方式,所谓的协议是指双方约定好的格式,都能读懂对方的东西,交互是指请求和响应。
HTTPS其实就是安全的HTTP协议,客户端和服务端通讯的时候进行加密(SSL/TLS协议)。

HTTP各个版本的区别:
  • HTTP1.0版本默认是短连接,每次与服务器交互,都需要新开一个连接
  • HTTP1.1版本主要是默认持久化连接,只要没有断开TCP连接,就一直保持连接,可以发送多次HTTP请求,其次是断点续传,利用HTTP消息头使用分块传输编码,将实体主体分块进行传输
  • HTTP/2版本不再以文本的方式传输,采用二进制分帧层,对头部进行了压缩,支持流控,最主要的是支持多路复用,即通过单一的TCP连接并行发起多个请求和响应消息
  • HTTP/3版本跟之前最大的区别就是,底层采用UDP,而之前都是TCP。可以减少RTT往返时延(TCP三次握手,TLS握手)
HTTP1的管线化和HTTP/2的多路复用区别:

1.HTTP1的管线化只能串行,一个响应必须完成后,下一个请求才开始
2.HTTP/2的多路复用则是利用分帧数据流,把HTTP协议分解为互不依赖的帧。

HTTPS协议:
  • 认证问题:客户端需要确切的知道服务端是不是真实的。所以有个角色——公信机构CA,服务端在使用HTTPS前,需要去认证的CA机构申请一份数字证书,数字证书包含了证书持有者,证书有效期,服务器公钥等信息,CA机构也有自己的一份公私钥,在发布数字证书之前,会用自己的私钥对这份数字证书加密,等到客户端请求服务器的时候,服务端返回证书给客户端(客户端用CA的公钥对证书解密,因为CA是公信机构,所以会内置到浏览器或操作系统中,所以客户端会有公钥),这个时候客户端会判断这个证书有无被篡改,这就解决了认证的问题,私钥加密,公钥解密我们叫做数字签名。
  • 保密问题:客户端和服务端通讯内容在传输中不会泄露给第三方,客户端从CA拿到数字证书后吗,就能拿到公钥,并生成一个Key作为对称加密的秘钥,用服务端的公钥加密传输给服务端,服务端用自己的秘钥解密,得到客户端的对称加密的秘钥,之后客户端就可以使用对称加密的秘钥进行发送和接收了。

你可能感兴趣的:(HTTP协议)