属性
- 英文全称:
HyperText Transfer Protocol - 中文全称:超文本传输协议
- 模型:客户端-服务端
- 特性: 无状态(任何两条连接无关联)
- 工作层:应用层,架构在
TCP协议上 - 版本:
1.01.12.0 - 协议:
http(明文传输)https
状态码
1xx 请求已被接受,需要继续处理
2xx 请求已成功被服务器接收、理解、并接受
3xx 还需要客户端进一步操作,一般是重定向
4xx 客户端出现错误
5xx 服务端出现错误
常见状态码
200 OK 请求成功
301 Moved Permanently 资源永久迁移,并返回了重定向地址
304 Not Modified 资源无修改,使用本地缓存
400 Bad Request 请求语法错误,参数错误,服务器不理解
401 Unauthorized 当前请求需要用户验证,或者没有验证通过
403 Forbidden 服务器拒绝执行
404 Not Found 请求的资源未找到
405 Method Not Allowed 请求方法不被允许
500 Internal Server Error 服务器内部报错
502 Bad Gateway 网关从上游服务器收到无效响应
504 Gateway Timeout 网关到上游服务器的请求超时
http和https区别
- http是明文传输,https是加密传输(SSL+HTTP)
- 端口不同,http是80,https是443
- https需要使用ca证书
1.0/1.1/2.0区别
1.1
- 在HTTP1.1中默认开启长连接keep-alive
- HTTP1.1支持只发送header信息(不带任何body信息),节约带宽
- HTTP1.1引入了更多的缓存控制策略,如
ETag,If-None-Match
2.0
- 多路复用
- 状态行和头部压缩(有个映射表,将常用字段变更为数字,资源变小)
- 引入了server push,它允许服务端推送资源给浏览器
TCP 三次握手和四次握手
三次握手
- 服务端进入接听状态
- 客户端--->服务端,客户端进入同步发送状态
- 服务端收到并--->客户端,服务端进入同步收到状态
- 客户端收到并--->服务端,客户端进入建立连接状态
- 服务端收到,也进入建立连接状态
四次握手
- 客户端--->服务端,客户端进入终止-等待1状态
- 服务端收到并--->客户端,服务端进入关闭-等待状态
- 客户端收到,进入终止-等待2状态
- 服务端--->客户端,服务端进入最后-确认状态
- 客户端收到并--->服务端,客户端进入关闭倒计时状态,持续2min
- 服务端收到,进入关闭连接状态
- 客户端
2min后,进入关闭连接状态
缓存
优点
- 减少网络传输
- 减轻服务器的压力
- 提升页面加载速度
强缓存
cache-control的值决定,有以下值
- no-store(不强缓存,不协商缓存)
- no-cache(不强缓存)
- public,max-age=31566000(强缓存,有效期31566秒)
强缓存总结
- 请求资源前,在本地查询是否有强缓存
- 如果命中强缓存,则判断是否过期?不过期直接读取缓存资源,否则走协商缓存或请求最新
- 如果没有强缓存,走协商缓存或请求最新
协商缓存
response header
ETag和Last-Modified的值决定
- ETag可以理解为资源当前内容的唯一标识
- last-modified是最后修改时间,秒级
request header
If-None-Match(原ETag)
If-Modified-Since(原Last-Modified)
协商缓存总结
- 请求资源时,把用户本地该资源的 ETag 同时带到服务端,服务端和最新资源做对比。
- 如果资源没更改,返回304,浏览器读取本地缓存
因为只有
response header有修改所以304请求的size很小
- 如果资源有更改,返回200,返回最新的资源,并记录新的tag和修改时间