7 防火墙, 缓存服务器
网络包通过防火墙
- 如果包被判断为允许通过,则该包会被转发出去
- 如果防火墙阻止包通过,那么这个包会被丢弃并被记录下来【这是因为这些被丢弃的包中通常含有非法入侵的痕迹,通过分析能够搞清楚入侵者使用的手法】
网络包通过缓存服务器
[!attention] 什么包不会通过缓存服务器? 对于客户端发送的数据包【POST 请求中包含的数据或者上传的文件】,通常会直接发送到目标服务器,而不会经过缓存服务器
对于客户端发送的请求包:
- 缓存服务器会检查请求消息的内容,看看请求的数据是否已经保存在缓存中
- 不存在缓存数据
- 缓存服务器会在 HTTP 头部字段中添加一个 Via 字段【表示这个消息经过缓存服务器转发】,然后将消息转发给 Web 服务器 ②
- 如果一台缓存服务器只对应一台 Web 服务器,那么只要将 Web 服务器的域名和 IP 地址配置在缓存服务器上,让它无条件转发给这台服务器就可以了;
- 如果一台缓存服务器对应多台 Web 服务器,就需要根据请求消息的
URI中的目录名来进行判断;
- 接着,缓存服务器会收到来自 Web 服务器的响应消息 ③
- 接下来,缓存服务器会以 Web 服务器的身份向客户端发送响应消息 ④,响应消息中会加上
Via头部字段【它表示这个消息是经过缓存服务器中转的】 - 缓存服务器会将响应消息保存到缓存中,并记录保存的时间 ④’
- 缓存服务器会在 HTTP 头部字段中添加一个 Via 字段【表示这个消息经过缓存服务器转发】,然后将消息转发给 Web 服务器 ②
- 存在缓存数据
- 缓存服务器会添加一个
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 服务器在原始数据发生更新时,立即通知缓存服务器