Http网络传输知识点整理

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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容