《网络是怎样连接的》-读书笔记5

五、 防火墙、缓存服务器

1. Web服务器的部署地点

最简单的部署方式就是将服务器直接部署在公司网络上,并且可以直接用互联网访问

这种连接方式有以下几个问题:

第一点是IP地址不足,这种方式需要为公司网络中的所有设别包括服务器和客户端地址都分配公有地址,而现在公有地址已经不够用了

第二点是安全问题,这种情况下网络包会直接进入服务器,受到攻击的风险很大

因此第二种方式是部署防火墙,防火墙只允许发往指定服务器的指定应用程序的网络包通过,这样可以降低受到攻击的风险。如果允许外部访问的应用程序存在安全漏洞,那还是会遭到攻击的

第三种方式是将服务器部署在网络运营商管理的数据中心或者直接租借他们的服务器

这种连接方式可以让服务器有很高的访问速度,并且安全性也更强

如果服务器部署在数据中心中,网络包会从互联网核心部分直接进入数据中心,然后到达服务器。如果数据中心有防火墙,那么网络包会先被防火墙检查

2. 防火墙的结构和原理

2.1 主流的包过滤方式

防火墙的基本思路就是只允许特定服务器中特定应用程序的包通过,并屏蔽其他包

目前主流的防火墙方式是包过滤方式

2.2 如何设置包过滤规则

网络包的头部包含用于控制通信操作的控制信息,只要检查这些信息就可以获得有用的内容

如果想要将下图所示的WEB服务器禁止访问互联网,但能被互联网正常访问,则可以如此设置防火墙包过滤规则: 通过接收方IP和发送方IP地址,判断包的起点和终点。互联网中发出来的包终点确定就是WEB服务器。因此可允许起点为任意,终点为WEB服务器IP地址的包通过。 之后要需要WEB服务器通过确认应答机制向互联网发送包,因此允许起点为WEB服务器地址的包通过。

按照之前的设置,允许了互联网和WEB服务器的所有包通过,这可能导致文件泄露,因此可以通过判断TCP头部的端口号来限制对特定应用的访问

完成上述设置后,还是没办法阻止WEB服务器访问互联网,但如果单独限制WEB服务器对外发包,那么正常的客户端请求也就无法回复了,这时就需要用到TCP头部中的控制位。当TCP在执行连接操作时,第一个包的TCP控制位中的SYN为1,ACK为0,因此只要设置这个规则就可以限制服务器主动访问互联网

2.3 从外部无法访问公司内网

包过滤方式的防火墙不止可以允许或阻止网络包通过,还具备地址转换功能,因此还需要进行相关设置。以起点和终点作为条件,根据需要设置是否要地址转换。

当使用地址转换时,默认状态下外部互联网时无法访问公司内网的,因此不需要设置一条包过滤规则则指互联网访问公司内网。

2.4 防火墙无法抵御的攻击

只凭借起点和终点等信息并不能筛选出所有有风险的包,只有检查包的内容才可以识别某些风险。

可以通过修复服务器程序的BUG或者在防火墙之外部署用来检查包内容并阻止有害包的设别或者软件。

3. 通过将请求平均分配给多台服务器来平衡负载

3.1 性能不足时需要负载均衡

使用多台服务器分担负载,有以下几种方式:

采用多台WEB服务器,从而减少每台服务器的访问量。

使用此做法需要一个机制让客户端发送的请求分配到每台服务器上,最简单的一种实现方法是通过DNS服务器来分配。在DNS服务器填写多个域名相同的IP地址,每次查询时DNS服务器按顺序返回不同的IP地址。

这种方式的缺点有:

如果一台WEB服务器出现了故障,但DNS服务器无法确认WEB服务器是否在正常工作,因此仍然会返回服务器的IP地址

另外当使用CGI方式动态生成页面的情况下,有些操作需要跨页面,如果访问的服务器发生变化,这个操作就无法继续

3.2 使用负载均衡器分配访问

可以使用负载均衡器来避免上述的问题,使用负载均衡器时,使用它的IP地址代替WEB服务器的实际地址注册到DNS服务器上,然后又负载均衡器来判断将请求转发给哪台WEB服务器

判断条件有很多种,如果操作没有跨界面,那么可以根据WEB服务器的负载情况来判断。如果操作跨越多个页面,则必须将请求发送到同一台WEB服务器上。

判断一个操作是否跨界面的方法:

在发送表单数据时在里面加上用来表示关联的信息,或对HTTP规格进行扩展,在HTTP头部字段加上用来判断相关性的信息(Cookie)。

4. 利用缓存服务器分担负载

4.1 如何使用缓存服务器

缓存服务器是一种通过代理机制来对数据进行缓存的服务器。代理介于WEB服务器和客户端之间,具有对WEB服务器访问进行中转的功能。当进行中转时,它将WEB服务器返回的数据保存在磁盘中,并可以代替WEB服务器将磁盘中的数据返回给客户端。这种保存的数据称为缓存。

缓存服务器不需要进行网址检查和访问权限见擦汗,以及各种内部操作,只需要将磁盘上保存的数据读出来发送给客户端,因此处理速度较快

当WEB服务器更新了数据,那么缓存的数据就失效了;同时CGI程序等产生页面数据每次都不同,也无法进行缓存

4.2 缓存服务器通过更新时间管理内容(这一小节看图很舒服)

客户端请求没有命中缓存的情况:

客户端命中缓存的情况:

4.3 最原始的代理——正向代理

正向代理是指将缓存服务器部署在客户端的代理方式,主要有两个目的:缓存、防火墙

代理在接收来自客户端的信息是,只允许通过必要的网络包。然后再转发到互联网。此时配合缓存,可以直接从内网的服务器中获取之前访问过的数据,速度比互联网快很多

在设置了代理服务器后,浏览器发送请求消息时不会再判断域名,而是会忽略网址栏内容,直接将所有请求发送给正向代理

正向代理服务器的转发过程和服务器端缓存服务器的不同在于:使用正向代理时,URI部分是完整网址,因此可以根据这个网址转发;而服务器的缓存服务器必须先设置好目标

4.4 反向代理

使用正向代理是,必须再浏览器中进行相关设置,如果设置错误会导致浏览器无法正常工作

通过将请求中的URI目录名和WEB服务器进行关联,使得代理能转发一般的不包含完整网址请求的消息。服务器端的缓存服务器使用反向代理

4.5 透明代理

通过判断请求消息的包头部的IP地址也可以判断转发目标,这种方式称为透明代理

透明代理不需要设置浏览器参数,相对的浏览器还是照常向WEB服务器发送请求;透明代理不设置缓存目标,可以将请求转发到任意WEB服务器,相对的,透明代理服务器不能使用DNS服务器解析引导法,否则它本身会成为访问目标

因此为了让透明代理服务器被访问到,必须将它防止再从浏览器到WEB服务器的路径中,在消息经过时进行拦截。

5. 内容分发服务

5.1 利用内容分发服务分担负载

WEB服务商和网络运营商签约,将自己控制的缓存服务器放在客户端的运营商初,可以有效的减少WEB服务器的负载,同时也可以保证对缓存服务器的控制。为了让任何地方的人都可以访问这些服务器,可以筛选出一些主要的运营商(减少缓存服务器的数量)

接着和CDSP签约。CDSP是只部署缓存服务器并租借给web服务器运营者的厂商,他们会和主要供应商签约,同时也会和WEB服务器运营者签约。

5.2 如何找到最近的缓存服务器

方法一: 像负载均衡器一样用DNS分配访问。在DNS服务器返回WEB服务器IP地址时,对返回内容进行一些加工,使其返回距离客户最近的缓存服务器IP地址。

判断客户端和缓存服务器间距离的方法: 先从缓存服务器的部署地点的路由器收集路由信息,并将这些信息集中在DNS表上 -》 DNS服务器根据路由表查询本机到客户端DNS服务器的路由信息,比较出哪一台路由器距离客户端DNS服务器最近

5.3 通过重定向服务器分配访问目标

方法二: HTTP规格中定义了很多头部字段,其中有一个LOCATION字段,当WEB服务器数据转移到其他服务器时可以使用这个字段,这种将客户端访问引导到另一台WEB服务器的操作称为重定向,这种方法也可以将访问目标分配到最近的缓存服务器

缺点:增加了HTTP交互次数,相应的开销较大

优点:根据客户端发来的HTTP消息的IP地址估算距离,精度较高

5.4 缓存的更新方法会影响性能

可以让服务器在原始数据发生更新时,立刻通知缓存服务器,使得缓存服务器上的数据状态一致保持最新状态

除了预先编写好内容的静态界面外,还有一些受到请求后由CGI程序生成的动态画面,这种情况下,可以不保存整个页面,只将静态部分保存在缓存中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值