网络通信学习(五)——服务器端的局域网有什么玄机

之前我们探索了网络包在进入互联网之后,通过通信线路和运营商网络到达服务器POP端的过程。现在,我们要探索网络包朝服务器前进,通过防火墙、缓存服务器、负载均衡器等设备到达服务器的这一过程
几个名词的百度解释:

防火墙

所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的边界上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入,防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。该计算机流入流出的所有网络通信和数据包均要经过此防火墙。
在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。

缓存服务器

缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。Web缓存服务器的应用模式主要是正向代理和反向代理。

  • 正向代理(Proxy)模式是代理网络用户访问internet,客户端将本来要直接发送到internet上源服务器的连接请求发送给代理服务器处理。正向代理的目的是加速用户在使用浏览器访问Internet时的请求响应时间,并提高广域网线路的利用率。正向代理浏览器无需和该站点建立联系,只访问到Web缓存即可。通过正向代理,大大提高了后续用户的访问速度,使他们无需再穿越Internet,只要从本地Web缓存就可以获取所需要的信息,避免了带宽问题,同时可以大量减少重复请求在网络上的传输,从而降低网络流量,节省资费。
  • 反向代理(Reverse Proxy)模式是针对Web服务器加速功能的,在该模式中,缓存服务器放置在web应用服务器的前面,当用户访问web应用服务器的时候,首先经过缓存服务器,并将用户的请求和应用服务器应答的内容写入缓存服务器中,从而为后续用户的访问提供更快的响应。

负载均衡器

负载均衡器是一种把网络请求分散到一个服务器集群中的可用服务器上去,通过管理进入的Web数据流量和增加有效的网络带宽的硬件设备。

内容分发

内容分发 (Content Delivery),它通过实现用户对网站的就近访问及网络流量的智能分析,将本节点流媒体资源库中的指定内容,根据业务运营商定义的内容分发策略向下层节点推送(PUSH)。下层节点控制系统通知下层内容管理系统登记接收,该节点以内容注入的方式接收分发的内容。从技术上解决网络带宽小、用户访问量大、网点分布不均等对用户访问效果的影响,大大提高了网络的响应速度。

客户端计算机一般放在家庭和公司的网络上,但服务器不仅限于这两者,那么服务器到底放在哪里?

  1. 在公司里部署Web服务器
    服务器部署在公司的网络上,网络包通过最近的POP中的路由器、接入网以及服务器端路由器后,接着需要通过部署在服务器前的防火墙,最终到达服务器。防火墙的作用类似于海关,它只允许发往指定服务器的指定应用程序的网络包通过,屏蔽其他不允许通过的包。
  2. 将Web服务器部署在数据中心
    可以把服务器放在网络运营商等管理的数据中心。数据中心是与运营商核心部分NOC(或者是枢纽IX)直接连接的,数据中心通过高速线路直接连接到了互联网的核心部分,因此将服务器部署在这里可以获得很高的访问速度

防火墙是如何分别能通过的包和不能通过的包?也就是它是如何判断出来是否是指定服务器的指定程序?

防火墙的主要类型:

  1. 网络层防火墙:可视为一种 IP 封包过滤器,运作在底层的TCP/IP协议堆栈上。我们可以以枚举的方式,只允许符合特定规则的封包通过,其余的一概禁止穿越防火墙(病毒除外,防火墙不能防止病毒侵入)。这些规则通常可以经由管理员定义或修改,不过某些防火墙设备可能只能套用内置的规则。
    较新的防火墙能利用封包的多样属性来进行过滤,例如:来源 IP地址、来源端口号、目的 IP 地址或端口号、服务类型(如 HTTP 或是 FTP)。也能经由通信协议、TTL 值、来源的网域名称或网段…等属性来进行过滤。
  2. 应用层防火墙:是在 TCP/IP 堆栈的“应用层”上运作,您使用浏览器时所产生的数据流或是使用 FTP 时的数据流都是属于这一层。应用层防火墙可以拦截进出某应用程序的所有封包,并且*其他的封包(通常是直接将封包丢弃)。理论上,这一类的防火墙可以完全阻绝外部的数据流进到受保护的机器里。
  3. 数据库防火墙:是一款基于数据库协议分析与控制技术的数据库安全防护系统。基于主动防御机制,实现数据库的访问行为控制、危险操作阻断、可疑行为审计。

下面主要分析主流的防火墙原理——包过滤方式
网络包的头部包含了用于控制通信操作的控制信息,通过这些信息我们可以获得很多有用的内容。
网络通信学习(五)——服务器端的局域网有什么玄机
网络通信学习(五)——服务器端的局域网有什么玄机

  • 通过接收方IP地址和发送方IP地址,我们可以判断包的起点和终点。
  • 当我们要限定某个程序时,可以在判断条件中加上TCP头部(或者UDP头部)中的端口号。
  • 通过控制位,我们还可以判断连接的方向。

我们可以阻止TCP连接?
TCP在执行连接操作时需要收发三个包,其中第一个包的TCP控制位中SYN为1,ACK为0。其他的包这些值都不同,因此只要按照这个规则就能够过滤到TCP连接的第一个包。如果这第一个包是从服务器发往互联网的,我们阻止它之后服务器就不能进行正常的TCP连接,自然也就阻止了服务器对Internet的访问(但是无法阻止UDP发送,也就是可以进行DSN访问)。
我们常说的内网是啥?
包过滤方式的防火墙不仅可以允许或阻止网络包的通过,还具备地址转换的功能,Internet和公司内网之间的包需要经过地址转换才能传输。
既然有防火墙,网络就安全了吗?
防火墙也有无法抵御的攻击!假如服务器在收到含有特定数据的包时会引起宕机,然而防火墙只关心包的控制信息,并不关心包内的数据,这就存在着很大的风险。只有检查包的内容才能识别这种风险。
应对这种情况有两种方法:

  1. 这个问题的根源在于服务器程序的Bug,修复该Bug是防止宕机的一种方法。这类Bug中,危险性较高的会作为安全漏洞公布出来,开发者必须立即对Bug进行修复。
  2. 在防火墙之外部署用来检查包的内容并阻止有害包的设备或软件。这种方法也并不是无懈可击的,因为包的内容是否有风险,是由服务器有没有出现Bug决定的,因此在Bug尚未发现之前,我们无法判断包中的风险。

当接收到大量请求信息时,服务器性能的问题怎么解决?

  1. 通过将请求平均分配给多台服务器来平衡负载——负载均衡器
  2. 使用缓存服务器来分担负载——缓存服务器
  3. 利用内容分发服务分担负载——内容分发

我们先来讲讲负载均衡器:
当多个用户同时访问服务器时,使用多台服务器来分担负载是非常有效的一个办法。具体的做法有很多种,最简单的一种是通过DNS来分配。当客户端向DNS查询服务器IP地址时,我们事先在DNS中填写多个名称相同的记录,每次查询时DNS会按照顺序返回不同的IP地址。但是这种方式过于简单,在需要跨多个页面等操作时就会出问题。
为了避免前面的问题,我们可以使用一种叫做负载均衡器的设备。使用负载均衡器时,首先要用负载均衡器的IP地址代替服务器的实际地址注册到DNS上。这样,客户端就会认为负载均衡器是一台服务器,那么负载均衡器如何判断应该将客户端的一次请求转发给哪台服务器呢?判断的条件有很多种:操作是否跨页面,服务器负载情况等。
网络通信学习(五)——服务器端的局域网有什么玄机
接下来我们讲缓存负载器:
我们可以把整个系统按功能分成不同的服务器,如Web服务器,数据库服务器。缓存服务器就是一种按照功能来分担负载的方法。
缓存服务器是一台通过代理机制对数据进行缓存的服务器。缓存服务器和负载均衡器一样,都要先代替服务器被注册到DNS中,然后等待接收到客户端的请求消息后转发给服务器并且检查缓存。如果缓存中有数据则实际服务器返回一个“内容无变化”的消息给缓存服务器,缓存服务器把保存在缓存中的数据取出来发送响应消息给客户端;如果缓存中没有数据则缓存服务器保存实际服务器返回的响应消息并转发给客户端。
网络通信学习(五)——服务器端的局域网有什么玄机