TCP/IP概念层模型
一共分为4层:
- 应用层(包括:会话层,表示层,应用层)
- 传输层
- 网络层
- 链路层(物理层,数据链路层)
HTTP和HTTPS的区别
HTTP是没有经过加密的传输协议,也就是明文,安全性能低。HTTPS是由SSL(Secure Sockets Layer)+HTTP组成,可进行加密传输、身份认证的网络协议,要比http协议安全。
- https协议需要到ca申请证书
- http的默认端口是80,https则是443
- http是明文传输,https通过ssl加密,是具有安全性能的加密传输
URL和URI的区别
URI:Uniform Resource Identifier,统一资源标识符
URL:Uniform Resource Location统一资源定位符
URI是用来描述一个网络资源的是一种更高层的抽象概念。URL则是资源的定位符,也就是用来找到该资源的路径,是URI的一种具体应用
HTTP报文的组成
- 请求报文:请求行,请求头部,空行,请求主体
- 响应报文:状态行,响应头,响应正文
CORS
CORS全名跨域资源共享(Cross-Origin-Resourece-sharing),用来解决浏览器同源策略所带来的不便,可以无视同源策略跨域请求数据
cors的定义是设置http请求头部字段(Origin),让客户端有资格跨域访问资源。通过服务器的验证和授权之后(将会返回Access-Control-Allow-Origin等字段),浏览器有责任支持这些http头部字段并且确保能够正确的施加限制。
HTTP缓存机制
在写文章之前读了另一篇文章,收获颇多对http缓存可以说有了一个大致的了解: 彻底弄懂HTTP缓存机制及原理,http缓存是基于http报文来实现的,通过请求/响应报文头中的信息来实现http缓存机制
两大缓存规则:强制缓存,对比缓存
强制缓存
强制缓存只需要在客户端缓存数据中验证缓存规则即可,请求web服务器时响应header中会带有两个字段来标明失效规则(Expires/Cache-Control)
Expires:值是一个到期时间点,下一次发送请求时若客户端时间小于该时间则使用缓存数据,反之请求服务器数据,是HTTP1.0的东西,问题:若客户端时间与服务器端时间存在误差会导致缓存命中产生误差
Cache-Control:值有private、public、no-cache、max-age、no-store,默认为private。(可同时有多个值)
private:客户端可缓存
public:客户端和代理服务器都可以缓存
max-age:缓存的内容将在xxx秒后失效
no-cache:需要使用对比缓存来验证数据
no-store:所有的内容不缓存,强制缓存和对比缓存都不触发
对比缓存
对比缓存需要请求服务器,发送缓存标识到服务器验证,如果验证通过返回304读取缓存数据,否则返回200从服务器返回数据和新的缓存标识,其中的标识是第一次请求时服务器返回的共有两种标识:
Last-Modified / If-Modified-Since
- Last-Modified:在响应报文header中,值是资源的最后修改时间,客户端获得后放在缓存数据库中
- If-Modified-Since:在请求报文header中,值从缓存数据中取得的Last-Modified,发送到服务端后与请求资源的最后修改时间进行对比
Etag / If-None-Match(优先级大于Last-modified / If-Modified-Since)
- Etag:在响应报文header中,值是资源在服务器的唯一标识(生成规则由服务器决定),客户端获取后存放在缓存数据库中
- If-None-Match:在请求报文header中,从缓存数据库中获取,发送到服务器后与被请求的资源唯一标识进行比对,如果相同说明资源无修改则响应HTTP304,告知浏览器继续使用保存的cache,若不同则响应正片资源内容,返回状态码200;