《网络是怎样连接的》(五)

news2024/11/17 9:34:40

本文主要取材于  《网络是怎样连接的》 第五章。

目录

5.1 Web服务器的部署地点 

 5.2 防火墙的结构和原理

5.3服务器负载平衡 

5.4 使用缓存服务器分担负载

5.5 内容分发服务


简述:本文主要内容是解释 网络包如何朝服务器前进,并通过服务器前面的防火墙、缓存服务器、负载均衡器等。

  • 为了保护服务器免受攻击,一般会在服务器前面部署防火墙,包过滤方式的防火墙可根据接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、控制位等信息来判断是否允许某个包通过。不过这种无法检查包内数据的威胁。
  • 单个服务器无法承载过多的访问量,因此需要分布式架构即多个服务器来分担流量,此时需要一个机制来分配客户端的请求。可通过DNS或者负载均衡器方式来分配请求。
  • 缓存服务器通过缓存一些数据同样可以分担流量,但是Web运营者弄缓存服务器的代价高。
  • 厂商来部署缓存服务器,并租借给Web服务器运营者,称为内容分发服务。部署好缓存服务器后最重要的是如何分配用户请求(一般要选择离客户端最近的服务器),因此如何判断客户端 到各个缓存服务器的距离很重要,有DNS扩展或者重定向等方法。另外,还需要及时更新缓存服务器保证数据的同步。

5.1 Web服务器的部署地点 

如果客户端都可以直接访问服务器,那么服务器相当于在裸奔,容易受到攻击;防火墙可以先检查包,再转发包。

Web服务器既可以部署在公司内部,如下图(a)和(b),也可以部署在运营商的数据中心如(c)。数据中心是与运营商核心部分NOC直接连接的,或者是与运营商之间的枢纽IX直接连接的,可以提高访问速度。

 5.2 防火墙的结构和原理

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

但是如何设置包过滤规则呢?

IP过滤:可以先根据接收方和发送方地址判断包的流向,并设置是允许还是阻止。

通过端口过滤应用程序包:要限定某个应用程序时,可以在判断条件中加上TCP头部或者UDP头部中的端口号。当包的接收方IP地址为Web服务器地址,且接收方端口号为80时,允许这些包通过(图5.2中表的第1行);或者当包的发送方IP地址为Web服务器地址,且发送方端口号为80时,允许这些包通过(图5.2中的表的第3行)。

通过控制位判断连接方向:TCP在执行连接操作时需要收发3个包,其中第一个包的TCP控制位中SYN为1,而ACK为0。其他的包中这些值都不同,因此只要按照这个规则就能够过滤到TCP连接的第一个包。如果这第一个包是从Web服务器发往互联网的,那么我们就阻止它(图5.2表中的第2行)。这样设置之后,当然也不会收到对方返回的第二个响应包,TCP连接操作就失败了。

公司内网访问公开区域:我们不仅要设置互联网和公开区域之间的包过滤规则,还需要设置公司内网和互联网之间,或者公司内网与公开区域之间的包过滤规则

包过滤方式的防火墙不仅可以允许或者阻止网络包的通过,还具备地址转换功能。当使用地址转换时,默认状态下是无法从互联网访问公司内网的。

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

防火墙可以根据包的起点和终点来判断是否允许包通过,但这样并不能筛选出所有有风险的包。如包中包中含有特定数据,会使服务器宕机。应对方式有两种:一是修复Bug防止宕机;二是在防火墙之外部署用来检查包的内容并阻止有害包的设备或软件。

5.3服务器负载平衡 

当很多用户同时访问时,无论服务器的性能再好,仅靠一台服务器还是难以胜任的。在这种情况下,使用多台服务器来分担负载的方法更有效,这种成为分布式架构。若部署多个服务器,从而减轻每个服务器的访问量,需要一套机制将客户端发送的请求分配到每台服务器上。

1.通过DNS服务器来分配。当访问服务器时,客户端需要先向DNS服务器查询服务器的IP地址,如果在DNS服务器中填写多个名称相同的记录,则每次查询时DNS服务器都会按顺序返回不同的IP地址。

缺点是:若一台Web服务器出现了故障,这时希望在返回IP地址时能够跳过故障的Web服务器,然而普通的DNS服务器并不能确认Web服务器是否正常工作。

此外,轮询分配还可能会引发一些问题。在通过CGI等方式动态生成网页的情况下,有些操作是要跨多个页面的,如果这期间访问的服务器发生了变化,这个操作就可能无法继续。

2.使用负载均衡器。首先要用负载均衡器的IP地址代替Web服务器的实际地址注册到DNS服务器上,假设有一个域名www.lab.glasscom.com,我们将这个域名对应的IP地址设置为负载均衡器的IP地址并注册到DNS服务器上。于是,客户端会认为负载均衡器就是一台Web服务器,并向其发送请求,然后由负载均衡器来判断将请求转发给哪台Web服务器.

 负载均衡器可以定期采集Web服务器的CPU、内存使用率,并根据这些数据判断服务器的负载状况,也可以向Web服务器发送测试包,根据响应所需的时间来判断负载状况。

对于有关联性的请求,可以在发送表单数据时在里面加上用来表示关联的信息。或者对HTTP规格进行扩展,在HTTP头部字段中加上用来判断相关性的信息。这样,负载均衡器就可以通过这些信息来作出判断,将一系列相关的请求发送到同一台Web服务器,对于不相关的请求则发送到负载较低的服务器了。

5.4 缓存服务器分担负载

将整个系统按功能分成不同的服务器,如Web服务器、数据库服务器。缓存服务器就是一种按功能来分担负载的方法。

缓存服务器是一台通过代理机制对数据进行缓存的服务器。代理介于Web服务器和客户端之间,具有对Web服务器访问进行中转的功能。当进行中转时,它可以将Web服务器返回的数据保存在磁盘中,并可以代替Web服务器将磁盘中的数据返回给客户端。这种保存的数据称为缓存,缓存服务器指的也就是这样的功能。不过Web服务器更新了数据,会造成缓存不可用。

 正向代理,反向代理和透明代理不详细讲。

5.5 内容分发服务

缓存服务器放在放在服务器之前,易于管理但是无法减少网络流量;放在客户端,可减少网络流量但是无法管理;放在网络边缘可以达到均衡。

 一些厂商来部署缓存服务器,并租借给Web服务器运营者。这种服务称为内容分发服务。提供这种服务的厂商称为CDSP(content delivery service provider), 缓存服务器可以缓存多个网站的数据,因此CDSP的缓存服务器就可以提供给多个Web服务器的运营者共享,从而降低了成本。

在使用内容分发服务时,互联网中有很多缓存服务器,如何才能从这些服务器中找到离客户端最近的一个,并让客户端去访问那台服务器呢?

对DNS服务器进行扩展:作为准备,需要事先从缓存服务器部署地点的路由器收集路由信息(图5.13)。DNS服务器根据路由表查询从本机到DNS查询消息的发送方,也就是客户端DNS服务器的路由信息。例如,根据图5.13路由器A的路由表,可以查出路由器A到客户端DNS服务器的路由。通过互联网内部的路由表中的路由信息可以知道先通过运营商X,然后通过运营商Y,最后到达运营商Z这样的信息,通过这样的信息可以大致估算出距离。依次查询所有路由器的路由表之后,我们就可以通过比较找出哪一台路由器距离客户端DNS服务器最近。提供路由表的路由器位于缓存服务器的位置,而客户端DNS服务器也应该和客户端在同一位置,这样就等于估算出了缓存服务器与客户端之间的距离,从而能够判断出哪台缓存服务器距离客户端最近了。

 重定向服务器分配访问目标:

HTTP规格中定义了很多头部字段,其中有一个叫作Location的字段。当Web服务器数据转移到其他服务器时可以使用这个字段,它的意思是“您要访问的数据在另一台服务器上,请访问那台服务器吧。”这种将客户端访问引导到另一台Web服务器的操作称为重定向,通过这种方法也可以将访问目标分配到最近的缓存服务器。

对DNS服务器进行扩展的方法是估算客户端DNS服务器到缓存服务器之间的距离,因此精度较差;相对而言,重定向的方法是根据客户端发送来的HTTP消息的发送方IP地址来估算距离的,因此精度较高。

缓存的更新方法:

让Web服务器在原始数据发生更新时,立即通知缓存服务器,使得缓存服务器上的数据一直保持最新状态,这样就不需要每次确认原始数据是否有变化了,而且从第一次访问就可以发挥缓存的效果。内容分发服务采用的缓存服务器就具备这样的功能。

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

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

相关文章

VM——西门子Smart 200进行S7通信

1、参考文章《海康VisionMaster与西门子Smart 200进行S7通信_机器人自动化控制的博客-CSDN博客》 2、注意事项: (1)PLC设置的变量类型是VW,而不是MW。 (2)与S7一样,默认端口号是102&#xff…

深入剖析Kubernetes之控制器模式的实现-Deployment

文章目录 Deployment Deployment Deployment 实现了 Kubernetes 项目中一个非常重要的功能:Pod 的“水平扩展 / 收缩”(horizontal scaling out/in)。这个功能,是从 PaaS 时代开始,一个平台级项目就必须具备的编排能力…

在Windows操作系统上安装Neo4j数据库

在Windows操作系统上安装Neo4j数据库 一、在Windows操作系统上安装Neo4j数据库 一、在Windows操作系统上安装Neo4j数据库 点击 MySQL可跳转至MySQL的官方下载地址。 在VUE3项目的工程目录中,通过以下命令可生成node_modules文件夹。 npm install(1&am…

用U盘装Ubuntu22.04双系统前需要提前规避的两大问题

如果你是GPT分区,且Bios开启了UEFI(无论你选的是启动模式是LegacyUEFI还是UEFI,都算开启了UEFI)那你装Ubuntu时可以忽略本文,只看最末尾的装机教程 以下2个问题叠加,就会出现引导丢失的问题(版…

【持续更新中】QAGroup1

OVERVIEW Q&AGroup1一、语言基础1.C语言(1)含参数的宏与函数的不同点(2)sizeof与strlen的区别(3)大/小端(4)strcpy与memcpy的区别(5)extern与static的区别…

代码随想录算法训练营之JAVA|第三十九天|474. 一和零

今天是第39天刷leetcode,立个flag,打卡60天。 算法挑战链接 474. 一和零https://leetcode.cn/problems/ones-and-zeroes/ 第一想法 题目理解:找到符合条件的子集,这又是一个组合的问题。 看到这个题目的时候,我好像…

软件测试报告包含哪些内容?

软件测试报告一般包含以下内容: 1、引言(目的、背景、缩略语、参考文献) 2、测试概述(测试目的、项目介绍、测试目标) 3、测试资源(测试人员、测试软硬件环境及配置、测试环境的网络拓扑) 4…

【办公类-16-01-02】2023年度上学期“机动班下午代班的排班表——跳过周三、节日和周末”(python 排班表系列)

背景需求: 2023年第一学期(2023年9-2024年1月),我又被安排为“机动班”,根据新学期的校历,手动推算本学期的机动班的带班表 排版原则 1、班级数量:共有6个班级,循环滚动 2、每周次…

集丰照明|这种灯光效果既简约又漂亮适合汽修洗车美容店

明亮的灯光,既能吸引客户上门,营造美观舒适的氛围。洗车美容店灯光方面既要满足基本的照明亮度,也要有图案、形状的美感。 下面是一家汽车服务店面不同区域的灯光效果,仅供想要开洗车店或者准备店面改造升级的朋友做参考。 灯光是…

Linux系统编程之文件编程常用API回顾和文件编程一般步骤

目录 1.打开文件 2.创建文件 3.写入文件 4.读取文件 5.光标定位 6.关闭文件 7.文件编程一般步骤 Linux系统提供了一些常用API如: 打开/创建 open/creat 读写 write /read 光标定位 Iseek 关闭 close 1.打开文件 参数说明 Pathname:要打开的文件名 (含路径&…

Android Xfermode 使用解析

自定义绘制之图片 canvar.drawBitmap() ,BitMapFactory private fun getBitmap(width: Int): Bitmap? {val option BitmapFactory.Options()option.inJustDecodeBounds trueBitmapFactory.decodeResource(resources, R.mipmap.android111,option)option.inJustDecodeBounds…

Python中@property和@setter的用法

一、property 用法:可以使用property装饰器来创建只读属性,property装饰器会将方法转换为相同名称的只读属性,这样可以防止属性被修改。 实例 class DataSet(object):propertydef method_with_property(self): ##含有propertyreturn 15def…

搭建个人博客Linux + WordPress

这篇文章主要介绍如何搭建个人网站,环境是Linux WordPress。 前面我是搞了个个人网站,不过呢,现在访问不了了。域名过期后,我没及时重新买,然后原先的域名,不知道被哪位兄弟给买走了。 分下面这么几步&a…

基于Java+SpringBoot+Vue前后端分离二手车交易系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

LoadRunner操作教程

日升时奋斗,日落时自省 目录 1、Virtual User Generator (VUG) 1.1、WebTours系统 1.1.1、WebTours启动 1.1.2、WebTours配置 1.2、脚本录制 1.3、编译 1.4、脚本运行 1.5、加强脚本 1.5.1、事务插入 1.5.2、插入集合点 1.5.3、参…

Android 11/12 app-lint 系统Update-API时Lint检查问题

有以下两种解决方法 1. 加SupressLint注解 这种方式你可以其他博客也有 但是要每个类和方法都加上SuppressLint 太麻烦了 我才不要这样呢 2. 添加 --api-lint-ignore-prefix 参数直接跳过代码检查 1. 打开 frameworks/base/Android.bp 文件 2. 搜索找到这个字段 metalava…

京东算法分析

# 1.首先charles抓包发现每个请求Url后都接了一个sign的参数且每次都不一样。也没有其他的一些别的特别参数,那么关键问题就是分析sign参数的生成了 # 2.jadx反编译,寻找sign的生成的位置 > 直接搜索sign参数匹配的出来的结果太多了,一时间不好区分哪个是真的。于是使用get…

sql:SQL优化知识点记录(三)

(1)explain之select_type和table介绍 简单的查询类型是:simple 外层 primary,括号里subquery 用到了临时表:derived (2)explain之select_type介绍 trpe反映的结果与我们sql是否优化过&#xff…

家宽用户家庭网的主要质量问题是什么?原因有哪些

1 引言 截至2020年底,我国家庭宽带(以下简称“家宽”)普及率已达到96%。经过一年多的发展,当前,家庭宽带的市场空间已经饱和。运营商在家宽市场的竞争也随之从新增用户数的竞争转移到家宽品质的竞争。 早期运营商的家…

软件测试收费标准

软件测试 软件测试收费主要根据工作量进行评估,主流的评估方式有以下两种 一、按照工作量评估 工作量从以下4个方面体现: 1、功能性 功能点数量正相关,功能复杂程度正相关例如一个算法逻辑相对复杂的功能点对应需要设计的用例会更多。 2、…