计网学习记录:HTTP补充
HTTP缓存
一些重复性的请求,把回应的数据缓存下来,下次发送的时候直接读取即可
强制缓存
第一次服务器返回资源的时候,会在Response的头部加上Cache-control,Cache-control中设置过期时间大小
再次请求资源的时候,就会与Cache-control对比查看资源是否过期,没过期就走缓存,过期就重新请求
重新更新Cache-control
协商缓存
通过与服务端协商后,判断是否使用本地缓存
第一种:请求头部中的 If-Modified-Since 字段与响应头部中的 Last-Modified 字段实现,这两个字段的意思是:
- 响应头部中的 Last-Modified :标示这个响应资源的最后修改时间;
- 请求头部中的 If-Modified-Since :当资源过期了,发现响应头中具有 Last-Modified 声明,则再次发起请求的时候带上 Last-Modified 的时间,服务器收到请求后发现有 If-Modified-Since 则与被请求资源的最后修改时间进行对比 (Last-Modified),如果最后修改时间较新(大),说明资源又被改过,则返回最新资源,HTTP 200 OK;如果最后修改时间较旧(小),说明资源无新修改,响应 HTTP 304走缓存。 第二种:请求头部中的 If-None-Match 字段与响应头部中的 ETag 字段,这两个字段的意思是:
- 响应头部中 Etag :唯一标识响应资源;
- 请求头部中的 If-None-Match:当资源过期时,浏览器发现响应头里有 Etag,则再次向服务器发起请求时,会将请求头 If-None-Match 值设置为 Etag 的值。服务器收到请求后进行比对,如果资源没有变化返回304,如果资源变化了返回 200。 第一种实现方式是基于时间实现的,第二种实现方式是基于一个唯一标识实现的,相对来说后者可以更加准确地判断文件内容是否被修改,避免由于时间篡改导致的不可靠问题。
HTTPS
为什么要?
HTTP是明文传输的,本身有窃听风险,篡改风险和冒充风险,所以用https,加入ssl/tls协议,保证了信息加密安全和身份校验
怎么建立连接
TLS通信四次握手
- ClientHello客户端发送
- 此次TLS协议版本
- 随机数A
- 客户端支持的加密套件
- ServerHello服务端发送
- 确认TLS协议版本
- 随机数B
- 确认加密套件
- 服务器的数字证书
- 客户端回应
- 随机数C
- 加密算法改变通知,之后都用新生成的密钥加密
- 客户端握手结束通知,把之前的数据做摘要
- 服务端回应
- 确认加密算法改变
- 服务器握手结束通知,把数据做摘要
计网学习记录:HTTP补充
http://example.com/2024/07/10/计网学习记录:HTTP补充/