HTTP基础必知必会

418 阅读4分钟

一、介绍一下OSI七层模型和TCP/IP五层模型

1.1 OSI七层模型

OSI七层参考模型

1.2 TCP/IP五层模型

TCP/IP五层模型

1.3 各层对应协议

各层协议

二、HTTP协议和特点

2.1 基本概念

HTTP是超文本传输协议的缩写。它是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态协议

2.2 协议特点

  1. 无连接

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

    • 协议对于事务处理没有记忆能力
  3. 简单快速

    • 客户向服务器请求服务时,只需传送请求方法和路径
  4. 灵活

    • HTTP允许传输任意类型的数据对象(正在传输的类型由Content-Type加以标记。

2.3 HTTP方法

  • GET - 获取资源
  • POST - 传输资源
  • PUT - 更新资源
  • DELETE - 删除资源
  • HEAD - 获取报文首部

2.4 GET和POST的区别

  • GET请求在浏览器回退时是无害的,POST会再次提交请求
  • POST相对GET安全一些,因为GET请求的参数都暴露在URL中,而POST不会。
  • GET请求参数会被完整的保留在浏览器历史记录里,而POST中的参数不会被保留
  • GET请求会被浏览器主动缓存,而POST不会,除非手动设置
  • POST可以通过request body 来传输比GET更多的数据。而且URL有长度限制,会影响GET的请求。
  • 重点: POST的机制是浏览器先发送header,服务器响应100(continue),浏览器再发送data,服务器响应200(ok)返回请求的数据。

2.5 常见状态码

a. 1xx 指示信息

表示请求已接收

b. 2xx 成功

  • 200 OK
  • 204 No content 表示请求成功,但响应报文不含实体的主体部分

c. 3xx 重定向

  • 301 永久性重定向,当浏览器收到的HTTP状态码为301时,下次访问对应网址就直接调整到新的网址,不会再访问原网址
  • 302 临时性重定向,浏览器每次访问都要先去目标网址访问,再重定向到新的网址
  • 303 表示资源存在着另一个URL,应使用GET方法获取资源
  • 304 未修改。自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。浏览器请求本地缓存。

d. 4xx 客户端错误

  • 400 请求报文存在语法错误
  • 401 请求需要通过认证
  • 403 请求访问被服务器拒绝

e. 5xx 服务器错误

  • 500 服务器端在执行请求时发生了错误
  • 501 服务器不支持当前请求所需要的某个功能

2.6 HTTP2

HTTP 2.0 相比于 HTTP 1.x,有着大幅度的性能提升

a. 多路复用

在 HTTP 2.0 中,有两个非常重要的概念,分别是帧(frame)和流(stream)。

帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。

多路复用,就是在一个 TCP 连接中可以存在多条流。 换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。

http2

b. Header压缩

在 HTTP 2.0 中,使用了 HPACK 压缩格式对传输的 header 进行编码,减少了 header 的大小。并在两端维护了索引表,用于记录出现过的 header ,后面在传输过程中就可以传输已经记录过的 header 的键名,对端收到数据后就可以通过键名找到对应的值。

c. 服务端Push

在 HTTP 2.0 中,服务端可以在客户端某个请求后,主动推送其他资源。

可以想象以下情况,某些资源客户端是一定会请求的,这时就可以采取服务端 push 的技术,提前给客户端推送必要的资源,这样就可以相对减少一点延迟时间。当然在浏览器兼容的情况下你也可以使用 prefetch。