HTTP连环问
什么是HTTP?
- HTTP协议是Hyper TextTransfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。
HTTP特点?
- HTTP允许传输任意类型的数据。传输的类型由Content-Type加以标记。
- 无状态。对于客户端每次发送的请求,服务器都认为是一个新的请求,上一次会话和下一次会话之间没有联系。
- 支持客户端/服务器模式。
HTTP长连接?
- HTTP长连接,指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的消耗。
- HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
- HTTP1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP首部的Connection都要设置为keep-alive,才能支持长连接。
HTTP1.1和HTTP2.0的区别?
- 新的二进制格式:HTTP1.1基于文本格式传输数据;HTTP2.0采用二进制格式传输数据,解析更高效。
- 多路复用:在一个连接里,允许同时发送多个请求或响应,并且这些请求或响应能够并行的传输而不被阻塞。
- 头部压缩,HTTP1.1的header带有大量信息,而且每次都要重复发送;HTTP2.0把header从数据中分离,并封装成头帧和数据帧,使用特定算法压缩头帧,有效减少头信息大小。并且HTTP2.0在客户端和服务器端记录了之前发送的键值对,对于相同的数据,不会重复发送。比如请求a发送了所有的头信息字段,请求b则只需要发送差异数据,这样可以减少冗余数据,降低开销。
- 服务端推送:HTTP2.0允许服务器向客户端推送资源,无需客户端发送请求到服务器获取。
HTTP安全吗?
- HTTP是明文传输,容易被黑客窃听或篡改,不安全。
- 可以使用HTTPS来解决HTTP明文协议的缺陷,在HTTP的基础上加入SSL/TLS协议,依靠SSL证书来验证服务器的身份,为客户端和服务器端之间建立SSL通道,确保数据传输安全。
HTTPS原理?
- 首先是TCP三次握手,然后客户端发起一个HTTPS连接建立请求,客户端先发一个
ClientHello
的包,然后服务端响应Server Hello
,接着再给客户端发送它的证书,然后双方经过密钥交换,最后使用交换的密钥加解密数据。
- 首先是协商加密算法。在
ClientHello
里面客户端会告知服务端自己当前的一些信息,包括客户端要使用的TLS版本,支持的加密算法,要访问的域名,给服务端生成的一个随机数(Nonce)等。需要提前告知服务器想要访问的域名以便服务器发送相应的域名的证书过来。
- 服务端响应
Server Hello
,告诉客户端服务端选中的加密算法。
- 接着服务端给客户端发来了证书。
- 客户端使用证书的认证机构CA公开发布的RSA公钥对该证书进行验证。
- 验证通过之后,浏览器和服务器通过密钥交换算法产生共享的对称密钥。
- 开始传输数据,使用同一个对称密钥来加解密。
posted @
2022-08-25 00:09
Faetbwac
阅读(
37)
评论()
编辑
收藏
举报