HTTP、 HTTPS、 HTTP/1.1、HTTP/2、HTTP/3
HTTP协议中最重要的知识就是TLS四次握手协议,涉及RSA和ECDHA两种混合加密算法
答:
HTTP 是⼀个应用层里专⻔在「两点」之间「传输」⽂字、图⽚、⾳频、视频等「超⽂本」数据的「约定和
规范」。
两点:客户端和服务端,服务端和服务端
请求报文和响应报文格式
URL:资源的路径
请求首部:
HOST:客户端发送请求时,⽤来指定服务器的域名。
Connection: ⽤于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤。
Accept:客户端请求的时候,可以使⽤ Accept 字段声明⾃⼰可以接受哪些数据格式。
Accept-Encoding: 说明客户端可以接受哪些数据压缩⽅法。
响应首部:
Content-Length:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据⻓度
Content-Type: ⽤于服务器回应时,告诉客户端,本次数据是什么格式。
Content-Encoding: 表示服务器返回的数据使⽤了什么压缩格式
答:HTTP的状态码,是表示客户端和服务端之间通信的状态。正常或错误,错误的具体原因等。
答:
答:
无状态、明文传输
无状态:
HTTP一次只处理一次请求,每次请求都要建立TCP连接。虽然这可以大大节约服务器资源,但对于需要登录账户的网页来说,每浏览一次网页就需要进行一次登录,非常繁琐。
为了解决HTTP的无状态缺点,在请求首部和响应首部加上Cookie信息,使得服务端能够记住当前客户端的状态,不需要频繁登录账户。
明文传输:
信息不加密,容易被窃取。
答:在HTTP的基础上,加上了TLS安全传输协议,对传输报文进行加密。
重点是加密的原理(TLS安全传输协议)以及加密算法(DH、RAS、ECDHA)
对称加密和非对称加密
对称加密:一把密钥,双方的密钥相同
非对称加密:两把密钥,服务器的私钥可以解开客户端利用公钥加密的报文。客户端的公钥可以解开服务端利用私钥加密的报文。
TLS协议的基本流程:先使用非对称加密生成会话秘钥,后续双方使用会话秘钥进行通信(对称加密)
客户端向服务器索要并验证服务器的公钥。
双⽅协商⽣产「会话秘钥」。
双⽅采⽤「会话秘钥」进⾏加密通信。
会话秘钥的生成,或者SSL/TLS 的「握⼿阶段」,涉及四次通信:
会话秘钥的生成,使用的加密算法有RSA算法、ECDHA算法。
RAS算法:不支持前向保密
具体握手过程参考
ECDHA算法:支持前向保密
具体握手过程参考
ECDHE算法相对RAS算法,使用相同bit位数的随机数,破解难度更大。
HTTPS的再优化:
答:
优点是:
第一个是长连接,不需要像HTTP每发起一个请求,都要建立一次TCP连接。HTTP/1.1的长连接特点是,只要任意一端没有提出断开,保持TCP连接状态。
第二个是管道网络传输,客户端可以发起多个请求。
缺点是:
答:
头部压缩:利用HPACK算法,客户端和服务器同时维护⼀张头信息表,所有字段都会存⼊这个表,⽣成⼀个索
引号,以后就不发送同样字段了,只发送索引号,这样就提⾼速度了
二进制格式:⽆需再将明⽂的报⽂转成⼆进制,⽽是直接解析⼆进制报⽂,这增加了数据传输的效率。
数据流( Stream ):每个请求或回应的所有数据包都标记着⼀个独⼀⽆⼆的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数。客户端还可以指定数据流的优先级。优先级⾼的请求,服务器就先响应该请求。
多路复⽤:⼀个连接中并发多个请求或回应,⽽不⽤按照顺序⼀⼀对应。
移除了 HTTP/1.1 中的串⾏请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,⼤幅度提⾼了连接的利⽤率。
服务器推送:改善了传统的「请求 - 应答」⼯作模式,服务不再是被动地响应,也可以主动向客户端发送消息。
答: