【网络面试必问(8)】防火墙原理、正向代理、反向代理、缓存服务器、负载均衡和内容分发服务器

news2024/11/24 12:27:02

 接上一篇:【网络面试必问(7)】聊聊集线器、交换机和路由器

 作为一个程序员,其实很少去了解http请求消息在到达服务器之前,所经过的众多组件的,今天借着机会聊一聊标题中提到的正向代理、反向代理、缓存服务器、负载均衡和内容分发服务器等内容。

1. WEB服务器的部署

1.1 部署在公司内部

 一般情况下,公司搭建的一些内部管理系统,仅供员工使用,会同时在公司机房里面部署WEB服务器,这样的方式最快,甚至可以在局域网中实现。有时候对于一些对外开放的网站,WEB服务器也可以部署在公司内部,但是这样会有些问题,第一个是要给所有的服务器机器分配公网的IP地址,现如今的IP地址已经很稀缺,资源不够,第二个是来自互联网中的请求有些是恶意的或者非法的攻击,直接对外暴露比较危险,通常情况会在WEB服务器的前面加上一层防火墙进行网络包的过滤。

1.2 部署在IDC(数据中心)机房

 除了直接部署在自己公司里面,还可以部署在数据中心,也就是IDC机房。想了解IDC机房是干啥的,可以参考这边知乎的介绍 关于“数据中心”的最强入门科普,简单来说,IDC机房就是运营商来管理的,直接连接到互联网的最核心的部分,所以讲WEB服务器部署在这里的最大优势就是访问速度更快,尤其是一些访问量大的网站就更有效果。

 除此之外,IDC一般都具有强大的抗震能力、自主发电能力,好一些的机房还有附加服务,比如服务器的状态监控、防火墙、24小时值班等等,一些中小型公司完全可以租用这些服务降低自己的运营成本。

2. 防火墙

 前面我们提到过,路由器的包过滤功能其实就是一道防火墙。今天我们来看看部署在WEB服务器前面的这个防火墙服务器,它的实现原理是怎样的。

 防火墙的思路很简单,就是支允许发往特定服务器和特定应用程序的的网络包通过,其他的包一律丢弃。基于这种思路,有很多种方式可以实现,但是最常见的就是包过滤方式。我们都知道在网络包中包含很多控制网络通讯的头部信息,只要根据这些信息设置过滤规则就可以达到这一目的,所以最重要的就是根据不同的同步信息设置不同的过滤规则。

 在MAC头部、IP头部、TCP头部都有很多信息可以过滤,这里我们只简单介绍原理,就来了解两种场景。对于WEB服务器来说,第一个是我们只允许访问部署在WEB服务器上的特定应用程序的包通过,第二个是禁止WEB服务器主动访问互联网。

2.1 访问WEB服务器的过滤规则

  • IP地址的过滤

 首先确认了是互联网流向WEB服务器的包,我们可以根据WEB服务器的IP地址过滤那些目的IP地址不合法的包,其次,如果我们可以确认发送方的IP地址,或者只允许某些IP地址访问,也可以根据发送方的IP地址来过滤,这是根据IP地址的过滤规则。

  • 端口的过滤

通过了IP过滤规则网络包之后,我们还需要根据TCP或者UDP头部的目的地址端口号来过滤,只允许特定应用程序对应端口号的包通过,这样就可以限定到某个应用程序了。

2.2 进制WEB服务器访问互联网的规则

 通常情况下,我们是不允许WEB服务器有主动访问互联万的需求,所以我们可以过滤这部分主动访问互联网的包,但是不能单纯的根据流向来判断,因为来自客户端的请求在连接和发送阶段,需要收到服务器返回的ACK确认包。所以需要根据IP地址 + 控制位的判断。

 对于起点是WEB服务器,发往互联网中的包,如果控制位ACK = 0的包就要过滤掉,这样在网络建立连接的阶段就结束了,后面自然就没有发送数据的过程。而对于来自客户端的网络请求,由于返回的数据ACK ≠ 1,所以不会被过滤,就不会收到影响。

 基于上面介绍的规则,我们可以看下面这个图示:其中,192.0.2.0/24是WEB服务器的IP地址,80是WEB应用的程序端口

在这里插入图片描述

  • 允许接收方IP地址为192.0.2.0/24,端口号为80的包通过;
  • 允许发送方IP地址为192.0.2.0/24,端口号为80,同时ACK ≠ 1的包通过;
  • 阻止其它包通过。

综上所述,包过滤方式的防火墙,可以根据接收方IP地址,发送方IP地址,接收方端口号,发送方端口号,控制位等信息来判断是否允许某个包通过。

3. 负载均衡

 负载均衡我们很熟悉,通过负载均衡可以把流量打在不同的WEB服务器的主机上,我们来看下负载均衡的实现原理。

 一种方式是使用负载均衡的设备,替代WEB服务器的IP地址,注册到DNS服务器上,这样来自互联网的访问首先可以到达负载均衡的服务器,然后负载均衡服务来决定将请求转发给哪台主机。这里当然可以采用轮询的方式,但是弊端也比较大,如果某台服务器的性能不好,再接收新的请求可能会雪上加霜。如果某些登录操作涉及到跨页面,那么不同主机上的Session如果无法同步的话,也会造成登录失败等问题。

 其实负载均衡是可以定期采集WEB服务器每台主机的CPU、内存使用率的,并根据这些数据判断当前主机的运行情况,动态的调整转发流量的分布,而且负载均衡也可以主动向WEB服务器发送测试包,根据测试包的响应时间来判断主机的负载情况。

 而对于登录跨页面的情况,就需要使用HTTP头部的Cookie信息来判断了,将一些列请求直接发送到同一台服务器上,避免跨主机的情况。

在这里插入图片描述

4. 缓存服务器

 负载均衡解决流量不均衡的问题,但是没有办法减少打在服务器上的流量,这里缓存服务器就可以通过减少请求的访问量降低降低服务器的负载。

 缓存服务器是通过代理机制实现的对数据进行缓存的服务器,介于WEB服务器和客户端之间。它可以把WEB服务器的资源缓存在磁盘中,也可以对客户端发起的请求中转到WEB服务器。缓存服务器可以部署在WEB服务器一侧,也可以部署在客户端一侧,各有优缺点。比如部署在服务器端,可以减少对WEB服务器的负载,但是没有办法减少互联网的流量,部署在客户端的情况,WEB服务器无法知晓缓存服务器的情况,可能在增加大容量内容时造成缓存服务器内存或者磁盘容量不足的情况。

 为了解决这个情况,一些专门从事缓存相关服务的厂商就出现了,他们抓们部署服务器来实现缓存功能,并租赁给WEB服务器运营人员,同时他们会和主要的运营商签约,部署很多台服务器,这就是内容分发服务,提供这种服务的厂商叫CDSP,即内容分发服务运营商。这样,用户访问的WEB服务器实际上访问的就是这些内容分发服务器,大大的降低了WEB服务器的运营压力,同时对于客户端来说也是无感的。

 但是这里还有一个问题,第一个是如何保证用户能访问到距离自己最近的缓存服务器呢,另外是缓存的数据如何能保证和WEB服务器同步更新呢。解决第一个问题的办法,有注册DNS服务器和重定向等方式,需要把路由器的信息同步记录到DNS服务器上,然后计算哪个DNS服务器距离客户端最近。第二个问题的解决方式是,当WEB服务器的内容发生变化的时候,可以主动告知缓存服务器,对相关内容进行更新。

在这里插入图片描述

5. 正向代理和反向代理

 不管是正向代理还是反向代理,其实都是位于客户端和WEB服务器之间一个代理服务器,根据部署位置的不同和功能不同分为正向代理和反向代理,一般部署在客户端一侧的是正向代理,部署在服务端一侧的是反向代理。

5.1 正向代理

 正向代理部署在客户端一侧,可以代替客户端向服务端发送请求,当客户端需要从目标服务器获取资源时,就会向正向代理发送请求,在客户端看来,正向代理就是目标服务器。正向代理的一大好处就是可以作为缓存服务器资源,一定程度上减少网络请求的次数,降低网络压力,另外服务器端接收到请求的发送方IP地址始终是代理服务器的,也可以起到保护客户端隐私的作用。大家一定听说过翻墙软件,其实现原理其实就是正向代理的机制。

在这里插入图片描述

5.1 反向代理

 反向代理一般是部署在服务端一侧的,对于客户端来说,实际是将请求发给了代理服务器,反向代理服务器将请求转发给WEB服务器,在客户端看来,代理服务器就是WEB服务器。反向代理可以隐藏真实的服务器信息,增加服务器的安全,常见的反向代理一般用来做负载均衡、防火墙、缓存服务器等,其中作为缓存服务器的反向代理可以减轻服务器的访问压力,但是相对于正向代理的缓存服务器,没有办法减少客户端请求的次数。

在这里插入图片描述

综上来看,正向代理和反向代理都可以实现请求转发和代理的功能,但是他们的位置和用途不同,正向代理主要位于客户端一侧,可以用于缓存和代理;而反向代理主要位于服务端一侧,可以隐藏服务器的真实信息,增强安全性并能提高网站的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1321646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分段管理及段页管理

一、 分段 程序的逻辑关系被划分为不同的段,每个段有一个段名,并且每个段都从0开始编址。这些段在内存中分配,每个段占据连续的内存空间,但不同段之间可以不相邻。 这种分段管理有一些特点和优势: 逻辑划分&#xff1…

SpringBoot已经禁掉了循环依赖!

还在问循环依赖嘛?SpringBoot已经禁掉了循环依赖! 首发2023-12-18 11:26yuan人生 如果现在面试时还有人问你循环依赖,你就这样怼他:循环依赖是一种代码质量低下的表现,springboot2.6之后的版本已经默认禁用了。 Spr…

计算机与自动医疗检查仓:技术革新引领医疗未来

计算机与自动医疗检查仓:技术革新引领医疗未来 一、引言 随着科技的飞速发展,人工智能(AI)和机器学习(ML)已经成为现代社会不可或缺的一部分。它们的应用领域日益扩展,从简单的日常任务到复杂…

云原生系列2-GitLab和Jenkins

1、GitLab类似github,是个私有仓库 1、GitLab安装,至少8G内存4核cpu # 查找Gitlab镜像 docker search gitlab/gitlab-ce # gitlab镜像拉取 docker pull gitlab/gitlab-ce # 查看镜像 docker images # 本机先建3个目录,为了gitlab容器通过挂…

【C语言】自定义类型:结构体深入解析(一)

🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…

Moonbeam生态项目分析 — — 跨链借贷协议Orbiter One

概览 Orbiter One是一个非托管的借贷协议和DeFi中心,专注于跨链互操作性。通过使用从借贷中赚取的ORB Token铸造的Intergactic Whiskers Brigade NFT,用户可以质押并获得额外奖励,借贷和跨链存款则可以在不离开Moonbeam的情况下无缝参与其他…

听说蚂蚁的职级调整了

上周三听说蚂蚁的职级调整了,让我们来看一下具体的改革方案: 简单地说,就是把原来的 PN 级一拆二,拆成 2N 和 2N1 级。 从本质上来看,就是把原来扁平化的宽职级变多了,相当于 double 了。 那职级变多有什…

初探 Reactor、Proactor 线程模型与 BIO、AIO、NIO

1 前言 工作中或者是技术上经常会遇到 I/O 、线程模型相关的问题,以及同步、异步、阻塞、非阻塞等各种基础问题,之前上学时候的概念认知总是模糊的,一知半解。趁这次了解希望能够更加深入的去了解这方面的知识,于是有了接下来这篇…

AWS 知识一:如何在AWS上启动云AD服务器(详细到极致)

前言: 首先这里指的云AD服务器,只是为了让读友更好理解。云AD服务器在AWS中称为目录。AWS一共提供了4种目录类别,下面我将全程使用AWS托管微软AD这种目录类别进行示例。他完全提供了和Microsoft AD的功能,包括NTLM,Ker…

Android-Binder基本原理

一、进程角度看IPC机制 在Android系统中,每个进程只能运行在自己所拥有的虚拟地址空间。例如,一个4GB的虚拟地址空间,包含3GB的用户空间和1GB的内核空间,内核空间的大小可以通过参数配置进行调整。两个进程之间的用户空间是彼此独…

如何开发一个免费的App

开发一个免费App意味着能够在项目启动初期,以更低成本的方式进行业务的迭代和市场化验证。 互联网发展到2023年,尤其在生成式AI及大模型技术“跃进式”增长的背景下,一个创新式商业模式的起步变得异常艰难。但如果用好工具,那么不…

【网络安全】—计算机网络基础

文章目录 网络必备基础物理层数据链路层与交换机网络模型OSI/TCP对等传输虚拟局域网VLAN静态路由与配置网络地址转换NAT访问控制列表ACLIP协议与IP地址分类子网掩码网关子网划分总结 计算机网络是指将地理位置不同的、功能独立的多台计算机通过通信线路连接起来,以功…

前端基础Vue项目中的插槽使用

概念 简单理解就是组件内部留一个或多个的插槽位置&#xff0c;可供组件传对应的模板代码进去。插槽的出现&#xff0c;让组件变的更加灵活。 1. 匿名插槽 父组件 <son><p>我是父组件通过匿名插槽传输的内容</p></son> 子组件 <template><di…

透过清澈的眼眸:新生儿视力检测的重要性与留意事项

引言&#xff1a; 新生儿的视力发展是其整体感知和认知能力的基础。因此&#xff0c;进行新生儿视力检测是保障他们健康成长的关键一步。本文将深入探讨新生儿视力检测的重要性&#xff0c;并提供父母在这一过程中需要留意的关键事项&#xff0c;以确保宝宝在视觉方面的正常发…

50ms时延工业相机

华睿工业相机A3504CG000 参数配置&#xff1a; 相机端到端理论时延&#xff1a;80ms 厂家同步信息&#xff0c;此款设备帧率上线23fps&#xff0c;单帧时延&#xff1a;43.48ms&#xff0c;按照一图缓存加上传输显示的话&#xff0c;厂家预估时延在&#xff1a;80ms 厂家还有…

2018年第七届数学建模国际赛小美赛C题共享单车对城市交通的影响解题全过程文档及程序

2018年第七届数学建模国际赛小美赛 C题 共享单车对城市交通的影响 原题再现&#xff1a; 共享自行车改变了许多城市的交通状况&#xff0c;许多大城市引入共享自行车来解决交通问题。我们需要定量评估共享自行车对城市交通的影响&#xff0c;以及相关的经济、社会和环境影响。…

人工智能辅助下的人工心脏:未来医疗的奇迹

导言 人工智能在医学领域的应用不断创新&#xff0c;其中人工心脏作为医疗工程的重要方向&#xff0c;将为心血管疾病患者带来新的治疗可能性。本文将深入研究人工智能辅助下的人工心脏技术&#xff0c;其原理、应用以及对未来医疗的影响&#xff0c;探讨人工心脏的发展历程、面…

七轴开源协作机械臂myArm视觉跟踪技术!

引言 ArUco标记是一种基于二维码的标记&#xff0c;可以被用于高效的场景识别和位置跟踪。这些标记的简单性和高效性使其成为机器视觉领域的理想选择&#xff0c;特别是在需要实时和高精度跟踪的场景中。结合机器学习和先进的图像处理技术&#xff0c;使用ArUco标记的机械臂系统…

安卓自动化 APP:轻松关闭任意开屏广告 | 开源日报 No.116

gkd-kit/gkd Stars: 8.7k License: GPL-3.0 基于无障碍 高级选择器 订阅规则的自定义屏幕点击 APP&#xff0c;主要功能包括实现跳过任意开屏广告、关闭应用内部弹窗广告以及一些快捷操作&#xff0c;如微信电脑登录自动同意和领取红包等。其核心优势和特点包括&#xff1a;…

[Ray Tracing in One Weekend] 笔记

前言 本文参照自raytracing in one weekend教程&#xff0c;地址为&#xff1a;https://raytracing.github.io/books/RayTracingInOneWeekend.html 什么是光线追踪&#xff1f; 光线追踪模拟现实中的成像原理&#xff0c;通过模拟一条条直线在场景内反射折射&#xff0c;最终…