美文网首页
http协议

http协议

作者: 9吧和9说9话 | 来源:发表于2020-02-23 13:46 被阅读0次

web 的基石

最重要的应用层协议。

特点

  1. 无状态
  2. 没有持久连接
  3. 面向报文

HTTP 报文的组成部分

由三个部分:起始行,首部,主体(可选) 组成。
其中 起始行和首部 都是ASCII码文本,以一个回车和换行符结束。
主体可以是文本、二进制数据或者为空。

  1. 请求报文
起始行+首部+请求实体
GET api/getUserInfo  HTTP/1.1  ===> 起始行
Host: www.yourdomain.com       ===> 首部字段开始
Accepts: */*
...

可选的主体部分


  1. 响应报文
起始行+首部+响应实体
HTTP/1.1 200 OK
Content-Length: 300
Content-Type: txt/html
...

可选的主体部分。

常见的响应状态码

200 ==> success
204 ==> no content

300 ==> no content
301 ==> 永久重定向
302 ==> 临时重定向
304 ==> 协商缓存

400 ===> 错误请求
401 ===> 鉴权失败(权限)
403 ===> forbidden
404 ===> not found

500 ===> internal server error(常见于服务端内部逻辑错误导致) 

首部字段

  1. 常见的请求报文中的首部字段
Host
Cookie
Accept
Authrization
Cache-Control
Connection
Referer
User-Agent

  1. 响应报文中的首部字段
Content-Type
Content-Length
Date
Server
Set-Cookie
Expires
Last-Modified

重点 缓存 相关的首部字段

// 第一组 协商缓存
client: If-Modified-Since
server: Last-Modified

// 第二组  协商缓存
client: If-None-Match
server: Etag

// 第三组  强缓存
client: 
server: Expires: Thu Mar 04 2021 13:44:00 GMT+0800 (CST)(绝对值)
// 第四组  强缓存
client: 
server: Cache-Control: max-age=500(相对值 单位秒)

  1. 优先使用强制缓存, Cache-Control 优先级比 Expires高
  2. 再匹配协商缓存

http协议的演进

http 0.9

  1. 简单
  2. 没有头部信息

http1.0

  1. 增加头部信息
  2. 不支持持久连接

http1.1

  1. 增加TCP持久连接:connection: keep-alive ,多个请求排队共用一个连接,减少了TCP建立连接的等待时间(目前浏览器支持同时建立6个TCP连接)
  2. 增加了Host请求头:支持虚拟主机(否则只有ip)
  3. 支持cookie
HTTP/1.1 的持久连接 图片来源:极客时间

存在的问题

  1. 队头阻塞问题,因为多个请求共用一个TCP连接,如果前一个请求没有返回,后面的就无法发起。
  2. 带宽利用率:TCP慢启动,多个TCP连接竞争固定的带宽。

http 2

  1. 一个域名使用一个TCP连接:减少抢占带宽和慢启动问题(只需要进行一次慢启动过程)
  2. 多路复用:为每一个请求增加一个id,增加了一个二进制分帧层。服务端收到之后,将相同id的组合成完整的请求,然后响应也带有id,进入二进制分帧层,返回客户端,客户端将相同id的响应组合成完整的响应。
  3. 设置请求优先级,
  4. 服务器推送
  5. 压缩请求头。

相关文章

网友评论

      本文标题:http协议

      本文链接:https://www.haomeiwen.com/subject/gadwnctx.html