计网学习记录:HTTP补充

HTTP缓存

一些重复性的请求,把回应的数据缓存下来,下次发送的时候直接读取即可

强制缓存

第一次服务器返回资源的时候,会在Response的头部加上Cache-control,Cache-control中设置过期时间大小

再次请求资源的时候,就会与Cache-control对比查看资源是否过期,没过期就走缓存,过期就重新请求

重新更新Cache-control

协商缓存

通过与服务端协商后,判断是否使用本地缓存

第一种:请求头部中的 If-Modified-Since 字段与响应头部中的 Last-Modified 字段实现,这两个字段的意思是:

  1. 响应头部中的 Last-Modified :标示这个响应资源的最后修改时间;
  2. 请求头部中的 If-Modified-Since :当资源过期了,发现响应头中具有 Last-Modified 声明,则再次发起请求的时候带上 Last-Modified 的时间,服务器收到请求后发现有 If-Modified-Since 则与被请求资源的最后修改时间进行对比 (Last-Modified),如果最后修改时间较新(大),说明资源又被改过,则返回最新资源,HTTP 200 OK;如果最后修改时间较旧(小),说明资源无新修改,响应 HTTP 304走缓存。 第二种:请求头部中的 If-None-Match 字段与响应头部中的 ETag 字段,这两个字段的意思是:
  3. 响应头部中 Etag :唯一标识响应资源;
  4. 请求头部中的 If-None-Match:当资源过期时,浏览器发现响应头里有 Etag,则再次向服务器发起请求时,会将请求头 If-None-Match 值设置为 Etag 的值。服务器收到请求后进行比对,如果资源没有变化返回304,如果资源变化了返回 200。 第一种实现方式是基于时间实现的,第二种实现方式是基于一个唯一标识实现的,相对来说后者可以更加准确地判断文件内容是否被修改,避免由于时间篡改导致的不可靠问题。

HTTPS

为什么要?

HTTP是明文传输的,本身有窃听风险,篡改风险和冒充风险,所以用https,加入ssl/tls协议,保证了信息加密安全和身份校验

怎么建立连接

TLS通信四次握手

  1. ClientHello客户端发送
    1. 此次TLS协议版本
    2. 随机数A
    3. 客户端支持的加密套件
  2. ServerHello服务端发送
    1. 确认TLS协议版本
    2. 随机数B
    3. 确认加密套件
    4. 服务器的数字证书
  3. 客户端回应
    1. 随机数C
    2. 加密算法改变通知,之后都用新生成的密钥加密
    3. 客户端握手结束通知,把之前的数据做摘要
  4. 服务端回应
    1. 确认加密算法改变
    2. 服务器握手结束通知,把数据做摘要

计网学习记录:HTTP补充
http://example.com/2024/07/10/计网学习记录:HTTP补充/
作者
WoodQ
发布于
2024年7月10日
许可协议