目录热身问答1 Web服务器的部署地点2 防火墙的结构和原理3 通过将请求平均分配给多态服务器来平衡负载4 利用缓存服务器分担负载5 内容分发服务小测验
热身问答
下列说法是正确的(√)还是错误的(×)?
当使用浏览器访问Web服务器时,浏览器的通信对象不仅限于Web服务器。
没有防火墙就不能连接到互联网。
也有防火墙无法抵御的攻击。
参考
√。浏览器有时候是和Web服务器通信,有时候是和缓存服务器以及负载均衡器等进行通信。
×。防火墙并不是必需的,但是没有防火墙会增加风险。
√。防火墙不会检查通信数据的具体内容,因此无法抵御隐藏在通信数据内容中的攻击。
1 Web服务器的部署地点
防火墙:一种抵御外部网络攻击的机制,也是最早出现的一种防御机制。现在已经出现了很多可以绕过防火墙的攻击方法,因此防火墙一般需要和反病毒、非法入侵检测、访问隔离等机制并用
2 防火墙的结构和原理
防火墙的基本思路:只允许发往特定服务器中的特定应用程序的包通过,然后屏蔽其他的包
防火墙可分为包过滤、应用层网关、电路层网关等几种方式,但出于性能、价格、易用性等因素,现在最为普及的是包过滤方式
在设置包过滤规则时,首先要观察包是如何流动的。通过接收方IP地址和发送方IP地址,我们可以判断出包的起点和终点。
当我们要限定某个应用程序时,可以在判断条件中加上TCP头部或者UDP头部中的端口号。Web服务器的端口号为80A,因此我们在刚才的接收方IP地址和发送方IP地址的基础上再加上80端口作为条件就可以了。
Web使用的TCP协议是双向收发网络包的,因此如果单纯地阻止从Web服务器发往互联网的包,则从互联网访问Web服务器的操作也会受到影响而无法进行。光判断包的流向还不够,我们必须要根据访问的方向来进行判断。这里就需要用到TCP头部中的控制位。TCP在执行连接操作时需要收发3个包,其中第一个包的TCP控制位中SYN为1,而ACK为0。其他的包中这些值都不同,因此只要按照这个规则就能够过滤到TCP连接的第一个包
通过接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、TCP 控制位这些条件,我们可以判断出通信的起点和终点、应用程序种类,以及访问的方向
DNS查询使用的是UDP协议,而UDP与TCP不同,它没有连接操作,因此无法像TCP一样根据控制位来判断访问方向。所以,我们无法设置一个规则,只允许公司内部访问互联网上的DNS服务器,而阻止从互联网访问公司内部的DNS服务器。这一性质不仅适用于DNS,对于所有使用UDP协议的应用程序都是共通的。
互联网路由器的路由表中没有私有地址的路由信息,因此凡是接收方为私有地址的包,在经过互联网中的路由器时都会被丢弃,这就是为什么必须使用地址转换的原因。相对地,防火墙内置的路由功能可以由用户自行设置,因此可以在路由表中配置私有地址相关的路由,使得公司内网到公开区域的访问可以以私有地址的形式来进行,这意味着公司内网和公开区域之间传输的包不需要地址转换
包过滤方式的防火墙可根据接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。包过滤方式的防火墙可根据接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。
3 通过将请求平均分配给多态服务器来平衡负载
对于负载的分担有几种方法,最简单的一种方法就是采用多台Web服务器,减少每台服务器的访问量。假设现在我们有3台服务器,那么每台服务器的访问量会减少到三分之一,负载也就减轻了。要采用这样的方法,必须有一个机制将客户端发送的请求分配到每台服务器上。
具体的做法有很多种,最简单的一种是通过DNS服务器来分配。当访问服务器时,客户端需要先向DNS服务器查询服务器的IP地址,如果在DNS服务器中填写多个名称相同的记录,则每次查询时DNS服务器都会按顺序返回不同的IP地址。
使用负载均衡器分配访问
使用负载均衡器时,首先要用负载均衡器的IP地址代替Web服务器的实际地址注册到DNS服务器上。假设有一个域名www.lab.glasscom.com,我们将这个域名对应的IP地址设置为负载均衡器的IP地址并注册到DNS服务器上。于是,客户端会认为负载均衡器就是一台Web服务器,并向其发送请求,然后由负载均衡器来判断将请求转发给哪台Web服务器
代理:一种介于客户端与Web服务器之间,对访问操作进行中转的机制
4 利用缓存服务器分担负载
除了使用多台功能相同的Web服务器分担负载之外,还有另外一种方法,就是将整个系统按功能分成不同的服务器B,如Web服务器、数据库服务器。缓存服务器就是一种按功能来分担负载的方法。
缓存服务器是一台通过代理机制对数据进行缓存的服务器。代理介于Web 服务器和客户端之间,具有对Web服务器访问进行中转的功能
缓存服务器的工作过程
缓存服务器和负载均衡器一样,需要代替Web服务器被注册到DNS服务器中
然后客户端会向缓存服务器发送HTTP请求消息(图5.5(a)、图5.6(a))。 这时,缓存服务器会接收请求消息,这个接收操作和Web服务器相同。简单来说就是创建用来等待连接的套接字,当客户端进行连接时执行连接操作,然后接收客户端发送的请
求消息。从客户端来看,缓存服务器就相当于Web服务器。
接下来,缓存服务器会检查请求消息的内容,看看请求的数据是否已经保存在缓存中。根据是否存在缓存数据,后面的操作会有所不同,现在我们假设不存在缓存数据。这时,缓存服务器会像图5.6(b)这样,在HTTP头部字段中添加一个Via 字段,表示这个消息经过缓存服务器转发,然后将消息转发给Web 服务器(图5.5(a))
这种在客户端和Web服务器之间充当中间人的方式就是代理的基本原理。在中转消息的过程中,缓存服务器还会顺便将页面数据保存下来,随着缓存数据的积累,用户访问的数据命中缓存的几率也会提高。
代理(Proxy)本来的意思并不是“转发”消息,而是先把消息收下来,然后“伪装”成原始客户端向Web服务器发出访问请求
由于代理在转发过程中可以查看请求的内容,所以可以根据内容判断是否允许访问。也就是说,通过代理可以禁止员工访问危险的网站,或者是与工作内容无关的网站。包过滤方式的防火墙只能根据IP地址和端口号进行判断,因此无法实现这一目的
在没有设置正向代理的情况下,浏览器会根据网址栏中输入的http://… 字符串判断Web 服务器的域名,并向其发送请求消息;当设置了正向代理时,浏览器会忽略网址栏的内容,直接将所有请求发送给正向代理。
5 内容分发服务
内容分发服务也叫CDS(Content Delivery Service)。现在更常用的名称叫CDN(Content Delivery Network 或 Content Distribution Network)
提供这种服务的厂商称为CDSP, CDSP:Content Delivery Service Provider,内容分发服务运营商
CDSP会与主要的供应商签约,并部署很多台缓存服务器。另一方面,CDSP会与Web服务器运营者签约,使得CDSP的缓存服务器配合Web服务器工作。只要Web服务器与缓存服务器建立关联,那么当客户端访问Web服务器时,实际上就是在访问CDSP的缓存服务器了
如何才能从这些服务器中找到离客户端最近的一个,并让客户端去访问那台服务器呢?
第一个方法是像负载均衡一样用DNS服务器来分配访问。也就是说,我们可以在DNS服务器返回Web 服务器IP地址时,对返回的内容进行一些加工,使其能够返回距离客户端最近的缓存服务器的IP地址。
第二种方法是通过重定向服务器分配访问目标。HTTP规格中定义了很多头部字段,其中有一个叫作Location的字段。当Web服务器数据转移到其他服务器时可以使用这个字段,它的意思是“您要访问的数据在另一台服务器上,请访问那台服务器吧。” 这种将客户端访问引导到另一台Web 服务器的操作称为重定向,通过这种方法也可以将访问目标分配到最近的缓存服务器
小测验
现在主流的防火墙方式叫什么?
当防火墙需要确定应用程序种类时要检查什么信息?
用于分担Web服务器负载,将访问分配到多台服务器上的设备叫什么?
部署在服务器端的代理是正向代理还是反向代理?
在互联网中部署多台缓存服务器,并将其租借给Web服务器运营者的服务叫什么
参考
包过滤方式
端口号
负载均衡器
反向代理
内容分发服务(CDS或CDN)
__EOF__
本文作者: yubo-guan 本文链接: https://www.cnblogs.com/yubo-guan/p/18211876 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。