• 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指定的资源提交数据(文章留言)

    请求报文和响应报文格式
    在这里插入图片描述
    URL:资源的路径

    请求首部:
    HOST:客户端发送请求时,⽤来指定服务器的域名。
    Connection: ⽤于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤。
    Accept:客户端请求的时候,可以使⽤ Accept 字段声明⾃⼰可以接受哪些数据格式。
    Accept-Encoding: 说明客户端可以接受哪些数据压缩⽅法。

    响应首部:
    Content-Length:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据⻓度
    Content-Type: ⽤于服务器回应时,告诉客户端,本次数据是什么格式。
    Content-Encoding: 表示服务器返回的数据使⽤了什么压缩格式

    3.HTTP的状态码

    答:HTTP的状态码,是表示客户端和服务端之间通信的状态。正常或错误,错误的具体原因等。
    在这里插入图片描述

    4.HTTP的优缺点

    1)HTTP的优点

    答:

    2)HTTP的缺点

    答:
    无状态、明文传输

    无状态:
    HTTP一次只处理一次请求,每次请求都要建立TCP连接。虽然这可以大大节约服务器资源,但对于需要登录账户的网页来说,每浏览一次网页就需要进行一次登录,非常繁琐。

    	为了解决HTTP的无状态缺点,在请求首部和响应首部加上Cookie信息,使得服务端能够记住当前客户端的状态,不需要频繁登录账户。
    
    • 1

    明文传输:
    信息不加密,容易被窃取。

    二、HTTPS相对HTTP,有了什么改进?

    答:在HTTP的基础上,加上了TLS安全传输协议,对传输报文进行加密。

    重点是加密的原理(TLS安全传输协议)以及加密算法(DH、RAS、ECDHA)
    
    • 1

    对称加密和非对称加密
    对称加密:一把密钥,双方的密钥相同
    非对称加密:两把密钥,服务器的私钥可以解开客户端利用公钥加密的报文。客户端的公钥可以解开服务端利用私钥加密的报文。
    在这里插入图片描述

    TLS协议的基本流程:先使用非对称加密生成会话秘钥,后续双方使用会话秘钥进行通信(对称加密)

    客户端向服务器索要并验证服务器的公钥。
    双⽅协商⽣产「会话秘钥」。
    双⽅采⽤「会话秘钥」进⾏加密通信。

    会话秘钥的生成,或者SSL/TLS 的「握⼿阶段」,涉及四次通信:

    在这里插入图片描述

    会话秘钥的生成,使用的加密算法有RSA算法、ECDHA算法。

    RAS算法:不支持前向保密
    具体握手过程参考

    ECDHA算法:支持前向保密
    具体握手过程参考

    ECDHE算法相对RAS算法,使用相同bit位数的随机数,破解难度更大。

    HTTPS的再优化:
    在这里插入图片描述

    三、HTTP/1.1相对HTTP,有了什么改进?

    答:
    优点是:
    第一个是长连接,不需要像HTTP每发起一个请求,都要建立一次TCP连接。HTTP/1.1的长连接特点是,只要任意一端没有提出断开,保持TCP连接状态。
    第二个是管道网络传输,客户端可以发起多个请求。

    缺点是:
    在这里插入图片描述

    在这里插入图片描述

    四、HTTP/2相对HTTP/1.1,有了什么改进?

    答:
    头部压缩:利用HPACK算法,客户端和服务器同时维护⼀张头信息表,所有字段都会存⼊这个表,⽣成⼀个索
    引号,以后就不发送同样字段了,只发送索引号,这样就提⾼速度了

    二进制格式:⽆需再将明⽂的报⽂转成⼆进制,⽽是直接解析⼆进制报⽂,这增加了数据传输的效率。

    数据流( Stream ):每个请求或回应的所有数据包都标记着⼀个独⼀⽆⼆的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数。客户端还可以指定数据流的优先级。优先级⾼的请求,服务器就先响应该请求。

    多路复⽤:⼀个连接中并发多个请求或回应,⽽不⽤按照顺序⼀⼀对应。
    移除了 HTTP/1.1 中的串⾏请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,⼤幅度提⾼了连接的利⽤率。

    服务器推送:改善了传统的「请求 - 应答」⼯作模式,服务不再是被动地响应,也可以主动向客户端发送消息。
    在这里插入图片描述

    五、HTTP/3相对HTTP/2,有了什么改进?

    答:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    python爬虫中json数据与python数据相互转换
    【操作系统】进程同步与进程互斥
    【Nano Framework ESP32 篇】刷入 nanoCLR 固件以及相关问题
    计算机网络复习
    10.SpringBoot实战演练
    一起用Go做一个小游戏(上)
    网页报告不能直接转换成Word、PDF格式怎么办?Spire.doc控件可以轻松解决
    这款开源神器,让聚类算法从此变得简单易用
    Docker专题-入门与运维
    shell 监听指定日志变化进行相关业务处理
  • 原文地址:https://blog.csdn.net/weixin_39455125/article/details/125306463