HTTP知识点梳理

什么是HTTP

HTTP全称Hypertext Transfer Protocol,意为超文本传输协议,是一个应用层用于出书超媒体文档(如HTML)的协议。它是专为浏览器和Web服务器之间的通信而设计的,但它也可用于其他目的。HTTP遵循典型的BS模型,客户端打开连接发出请求,等待收到相应。HTTP是一个无状态协议,表示服务器不会在两个请求之间保留任何数据(状态)。

HTTP消息的组成

请求

URL(统一资源定位器)

请求方法:GET、POST、PUT、PATCH、DELETE、OPTIONS、HEAD….

请求头:Accept、Accept-Encoding、Connection、Authorization、User-Agent、Cookie、Content-Type(application/json、multipart/form-data、application/x-www-from-urlencoded、application/octet-stream….)、Content-Length、Refer、Host….

请求体(GET通常没有)

响应

响应码:消息-1xx,成功-2xx,重定向-3xx,请求错误-4xx,服务器错误-5xx

响应头:Content-Type、Content-Length、Content-Encoding、cookie、Cache-Control…

响应体

版本变化

HTTP1.0:短链接

HTTP1.1:默认长连接,一个TCP连接可以发起多个HTTP请求;断点续传,请求头添加range

HTTP2.0:

  • 二进制分帧,采用二进制传输(之前都是传输文本),编排后用帧传输
  • 首部压缩,将Header压缩,对于出现过Header传输索引号
  • 多路复用
  • 优先级控制
  • 服务器推送,提前将资源推送到客户端

HTTP3.0:传输层由TCP改为UDP=>线头阻塞问题彻底解决;移动网络更灵活

HTTPS

HTTP+SSL/TLS

在原有的HTTP基础上添加了加密层SSL/TLS

SSL层的建立:

1.验证证书有效性

2.利用SSL证书中的公钥,由非对称加密协商出对称加密的算法和主密钥

怎么保证保证服务器给客户端下发的公钥是真正的公钥,而不是中间人伪造的公钥呢?

证书如何安全传输,被掉包了怎么办?

SSL证书包含:颁发者(一般为CA)、使用者(服务器域名)、有效期、服务器公钥、签名算法、签名摘要

签名摘要通过对证书内容HASH后得到摘要,再由CA私钥签名,此签名摘要可由CA公钥结合证书内容验证签名是否有篡改。