Skip to content

7 防火墙, 缓存服务器

网络包通过防火墙

  • 如果包被判断为允许通过,则该包会被转发出去
  • 如果防火墙阻止包通过,那么这个包会被丢弃并被记录下来【这是因为这些被丢弃的包中通常含有非法入侵的痕迹,通过分析能够搞清楚入侵者使用的手法】

网络包通过缓存服务器

[!attention] 什么包不会通过缓存服务器? 对于客户端发送的数据包【POST 请求中包含的数据或者上传的文件】,通常会直接发送到目标服务器,而不会经过缓存服务器

对于客户端发送的请求包:

  • 缓存服务器会检查请求消息的内容,看看请求的数据是否已经保存在缓存中
    • 不存在缓存数据
      • 缓存服务器会在 HTTP 头部字段中添加一个 Via 字段【表示这个消息经过缓存服务器转发】,然后将消息转发给 Web 服务器 ②
        • 如果一台缓存服务器只对应一台 Web 服务器,那么只要将 Web 服务器的域名和 IP 地址配置在缓存服务器上,让它无条件转发给这台服务器就可以了;
        • 如果一台缓存服务器对应多台 Web 服务器,就需要根据请求消息的 URI 中的目录名来进行判断;
      • 接着,缓存服务器会收到来自 Web 服务器的响应消息 ③
      • 接下来,缓存服务器会以 Web 服务器的身份向客户端发送响应消息 ④,响应消息中会加上 Via头部字段【它表示这个消息是经过缓存服务器中转的】
      • 缓存服务器会将响应消息保存到缓存中,并记录保存的时间 ④’
    • 存在缓存数据
      • 缓存服务器会添加一个 If-Modified-Since头部字段 并将请求转发给 Web 服务器,询问 Web 服务器用户请求的数据是否发生变化 ②
      • 然后,Web 服务器会根据 If-Modified-Since 的值与服务器上的页面数据的最后更新时间进行比较
        • 如果在指定时间内数据没有变化,就会返回一个没有变化的响应消息 ③
          • 接下来,返回消息到达缓存服务器,缓存服务器就会知道 Web 服务器上的数据和本地缓存中的数据是一样的,于是就会将缓存的数据返回给客户端 ④
        • 当 Web 服务器上的数据有变化时,Web 服务器会返回最新版本的数据,然后缓存服务器加上 Via字段 发送给客户端,同时将数据保存在缓存中

![[Excalidraw/计算机/四大件/计算机网络 Draw.md#^group=lV5zpHvG|550]] ![[Excalidraw/计算机/四大件/计算机网络 Draw.md#^group=vPQdB7al|550]]

[!hint] 优化缓存的更新方法,以优化性能 缓存的更新方法会影响缓存服务器的效率【在第一次访问时不能发挥效果,而且后面的每次访问都需要向原始服务器查询数据是否变化】

要改善这一点,我们可以 让 Web 服务器在原始数据发生更新时,立即通知缓存服务器