HTTP 总结

181 阅读2分钟

定义:HTTP 超文本传输协议,是一个属于应用层的面向对象的协议,HTTP 协议运行在TCP之上。

特点

  • 明文传输

  • 客户端与服务器端都无法验证对方的身份;

  • 无连接:协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。

  • 无状态:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

发展史

  • http1.0:

    • 对比0.9,添加了put、post等命令;

    • 每次请求都要建立重新建立TCP连接。

  • http1.1:

    • 默认建立持久连接,并使用流水线的方式(在响应之前发送请求);

    • 新增缓存(强缓存、协商缓存);

    • 错误状态码(410:某个资源被永久删除;409:请求的资源与资源的当前状态存在冲突)

    • 允许请求部分资源,添加range头部,返回码为206 ---> 断点续传的基础

  • http2.0:

    • 以二进制进行传输,相比1.1中的以明文文本传输更高效;为什么??---> 为了TCP二进制分帧

    • 头部信息部分进行压缩;

    • 主动push (请求html时,可以并行的将其中的脚本文件返回到客户端,触发浏览器的缓存机制,再次请求资源时,根据浏览器的缓存策略取资源);

    • 多路复用(在响应之前发送请求)

状态码

  • 1XX:服务器正在处理,还未响应

  • 2xx 成功,200

  • 3xx重定向

    • 301永久重定向

    • 302临时重定向

    • 304资源未改变 协商缓存

  • 4xx客户端错误

    • 404资源没找到

    • 403没有权限被拒绝

    • 401未授权

  • 5xx服务端错误

    • 500:服务器遇到了不知道如何处理的情况

    • 503:服务器没有准备好处理请求。 常见原因是服务器因维护或重载而停机。

常用字段:

  • 请求:Accept系列(Accept-charset、Accept-encoding、Accept-language、Authorization、Host、User-Agent、Content-type)

  • 响应:Content系列(Content-charset、Content-encoding、Content-language、Content-type、Expires、Etag、Last-Modified、Etag)