网络模型

TCP

HTTP

HTTP 本身是一个简单的请求-响应协议,它通常运行在 TCP 之上。从整个网络模型来看,HTTP 是应用层的一个协议。在 OSI 七层模型中,HTTP 位于最上层。它并不涉及数据包的传输,只是规定了客户端和服务器之间的通信格式。定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以 ASCII 码形式给出。

版本

HTTP的版本之间的区别,主要是1.0/1.1/2.0三个版本的区别有哪些? - 又拍云的回答 - 知乎 https://www.zhihu.com/question/418548039/answer/1479964959

HTTP/1.X

HTTP 协议最早的一个版本是 1990 年发布的 HTTP/0.9。而正式作为标准被公布是在 1996 年的 5 月,版本被命名为 HTTP/1.0,并记载于 RFC1945。虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端。HTTP/1.0 版本发布,增加了 POST 命令和 HEAD 命令,丰富了浏览器与服务器的互动手段。这个版本的 HTTP 协议可以发送任何格式的内容,包括传输文字、图像、视频、文件等,这为互联网的大发展奠定了基础。HTTP/1.0 版也并不是完美的,它的主要缺点是,每一次建立 TCP 连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。如果多次请求,势必就会对服务器产生较大的资源性能损耗。因此 1997 年 1 月公布的 HTTP/1.1 成为了目前主流的 HTTP 协议版本。这个版本最大的变化就是将持久化连接加入了 HTTP 标准,即 TCP 连接默认不关闭,可以被多个请求复用。此外,HTTP/1.1 版还新增了许多方法,例如:PUT、PATCH、HEAD、OPTIONS、DELETE。

缺点

  1. 安全不足
  2. 性能不高

    HTTP/2

    随着 Web 不断变化的需求,从当初网页内容以文本为主,到现在以富媒体(如图片、声音、视频)为主,加载网站首页需要下载的数据量在逐渐增加,并已经超过了 2100K,平均每个页面为了完成显示与渲染所需要下载的资源数也已经超过了 100 个

    特点

  3. 多路复用(二进制分帧)

  4. 头部压缩
  5. 随时复位
  6. 服务器端推流: Server Push
  7. 优先权和依赖

    流程

    image.png

    使用场景反思

    1)https虽然提供了消息安全传输的通道,但是每次消息的加解密十分耗时,消息系统资源。所以,除非在一些对安全性比较高的场景下,比如银行系统,购物系统中我们必须要使用https进行通信,其他一些对安全性要求不高的场景,我们其实没必要使用https。

2)使用https需要使用到数字证书,但是一般权威机构颁发的数字证书都是收费的,而且价格也是不菲的,所以对于一些个人网站特别是学生来讲,如果对安全性要求不高,也没必要使用https。

HTTP/3

状态码

消息

成功

重定向

301 Moved Permanently

永久重定向

302 Move temporarily

临时重定向

请求错误

401 Unauthorized

402 Payment Required

403 Forbidden

服务器已经理解请求,但是拒绝执行它。比如文件或目录权限。

404 Not Found

请求失败,请求所希望得到的资源未被在服务器上发现。

服务器错误

500 Internal Server Error

502 Bad Gateway

504 Gateway Timeout

长连接

短连接

负载均衡

网络链路排查