傲渊山岳 发表于 2022-6-25 16:32:10

HTTP超文本传输协议详解

HTTP、 HTTPS、 HTTP/1.1、HTTP/2、HTTP/3
HTTP协议中最重要的知识就是TLS四次握手协议,涉及RSA和ECDHA两种混合加密算法
一、HTTP的知识

1.HTTP是什么?

答:
HTTP 是⼀个应用层里专⻔在「两点」之间「传输」⽂字、图⽚、⾳频、视频等「超⽂本」数据的「约定和
规范」。
两点:客户端和服务端,服务端和服务端
2.HTTP的请求方式

1)GET:请求从服务器获取资源(浏览网页)

2)POST:向URL指定的资源提交数据(文章留言)

请求报文和响应报文格式
https://img-blog.csdnimg.cn/0809367c92da46e2a9ffb2b23fad666b.png
URL:资源的路径
请求首部:
HOST:客户端发送请求时,⽤来指定服务器的域名。
Connection: ⽤于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤。
Accept:客户端请求的时候,可以使⽤ Accept 字段声明⾃⼰可以接受哪些数据格式。
Accept-Encoding: 说明客户端可以接受哪些数据压缩⽅法。
响应首部:
Content-Length:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据⻓度
Content-Type: ⽤于服务器回应时,告诉客户端,本次数据是什么格式。
Content-Encoding: 表示服务器返回的数据使⽤了什么压缩格式
3.HTTP的状态码

答:HTTP的状态码,是表示客户端和服务端之间通信的状态。正常或错误,错误的具体原因等。
https://img-blog.csdnimg.cn/99ab736dfad74136815661b48614ccce.png
4.HTTP的优缺点

1)HTTP的优点

答:
2)HTTP的缺点

答:
无状态、明文传输
无状态:
HTTP一次只处理一次请求,每次请求都要建立TCP连接。虽然这可以大大节约服务器资源,但对于需要登录账户的网页来说,每浏览一次网页就需要进行一次登录,非常繁琐。
        为了解决HTTP的无状态缺点,在请求首部和响应首部加上Cookie信息,使得服务端能够记住当前客户端的状态,不需要频繁登录账户。 明文传输:
信息不加密,容易被窃取。
二、HTTPS相对HTTP,有了什么改进?

答:在HTTP的基础上,加上了TLS安全传输协议,对传输报文进行加密。
重点是加密的原理(TLS安全传输协议)以及加密算法(DH、RAS、ECDHA) 对称加密和非对称加密
对称加密:一把密钥,双方的密钥相同
非对称加密:两把密钥,服务器的私钥可以解开客户端利用公钥加密的报文。客户端的公钥可以解开服务端利用私钥加密的报文。
https://img-blog.csdnimg.cn/f09b74e4cff84ae29717934d148fa359.png
TLS协议的基本流程:先使用非对称加密生成会话秘钥,后续双方使用会话秘钥进行通信(对称加密)
客户端向服务器索要并验证服务器的公钥。
双⽅协商⽣产「会话秘钥」。
双⽅采⽤「会话秘钥」进⾏加密通信。
会话秘钥的生成,或者SSL/TLS 的「握⼿阶段」,涉及四次通信:
https://img-blog.csdnimg.cn/c9bf31451d1647088a4630179ad68fd0.png
会话秘钥的生成,使用的加密算法有RSA算法、ECDHA算法。
RAS算法:不支持前向保密
具体握手过程参考
ECDHA算法:支持前向保密
具体握手过程参考
ECDHE算法相对RAS算法,使用相同bit位数的随机数,破解难度更大。
HTTPS的再优化:
https://img-blog.csdnimg.cn/dc71d71de86140998155f68b9f90d352.png
三、HTTP/1.1相对HTTP,有了什么改进?

答:
优点是:
第一个是长连接,不需要像HTTP每发起一个请求,都要建立一次TCP连接。HTTP/1.1的长连接特点是,只要任意一端没有提出断开,保持TCP连接状态。
第二个是管道网络传输,客户端可以发起多个请求。
缺点是:
https://img-blog.csdnimg.cn/5a3540bde7284caa80ac3b83fefd0ae8.png
https://img-blog.csdnimg.cn/cbdab202e6584866af7d308070c8f91a.png
四、HTTP/2相对HTTP/1.1,有了什么改进?

答:
头部压缩:利用HPACK算法,客户端和服务器同时维护⼀张头信息表,所有字段都会存⼊这个表,⽣成⼀个索
引号,以后就不发送同样字段了,只发送索引号,这样就提⾼速度了
二进制格式:⽆需再将明⽂的报⽂转成⼆进制,⽽是直接解析⼆进制报⽂,这增加了数据传输的效率。
数据流( Stream ):每个请求或回应的所有数据包都标记着⼀个独⼀⽆⼆的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数。客户端还可以指定数据流的优先级。优先级⾼的请求,服务器就先响应该请求。
多路复⽤:⼀个连接中并发多个请求或回应,⽽不⽤按照顺序⼀⼀对应。
移除了 HTTP/1.1 中的串⾏请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,⼤幅度提⾼了连接的利⽤率。
服务器推送:改善了传统的「请求 - 应答」⼯作模式,服务不再是被动地响应,也可以主动向客户端发送消息。
https://img-blog.csdnimg.cn/4c5ec9ea65504bbf9a657384aa693b05.png
五、HTTP/3相对HTTP/2,有了什么改进?

答:
https://img-blog.csdnimg.cn/51ac9131fc4a4995be88f8ad5e25a4e0.png
https://img-blog.csdnimg.cn/eb213ef28a734ebbb07cbfe67bcb53d0.png
https://img-blog.csdnimg.cn/cfca34c7c36d45608443adc55eda9e20.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: HTTP超文本传输协议详解