note-网络是怎样连接的5 服务器端的局域网

助记提要
  1. 服务器部署形式和各自的特点 3种
  2. 包过滤的原理
  3. 防火墙无法抵御的攻击
  4. 负载均衡的作用和原理
  5. 缓存服务器的基本工作过程
  6. 正向代理、反向代理、透明代理
  7. 缓存服务器和内容分发服务
  8. 如何找到最近的缓存服务器
  9. 更新缓存的方式

5章 服务器端的局域网

1 Web服务器的部署

和路由器直接连接

现在很少用,一是需要给每个设备分配各自的公有地址,IP地址不够;二是这样会使互联网上传来的网络包直接进入到服务器,不安全。

运营商网络
公司内网
接入网
NOC
POP
Web服务器
路由器
通过防火墙隔离

使用防火墙屏蔽不允许的访问,降低安全风险。

运营商网络
公开区域
接入网
NOC
POP
Web服务器
公司内网
防火墙
部署在服务商数据中心

直接把服务器放在网络运营商的数据中心,或者租用运营商提供的服务器。
数据中心与NOC直连,因此服务器在这里会有很高的访问速度。数据中心一般在抗震的大楼,且有自主发电设备,还提供状态监控、防火墙配置、非法入侵监控等服务。

运营商网络
数据中心
NOC
POP
Web服务器

2 防火墙

防火墙可分为包过滤、应用层网关、电路层网关等方式。出于性能、价格和易用性等因素,包过滤方式是现在最为普及的方式。

包过滤依据的字段

网络包的头部包含用于控制通信操作的控制信息,这些可以作为包过滤的判断条件。
这些条件可以进行组合,将允许的访问和不允许的访问区分开。

头部类型判定位置含义
MAC头部发送方MAC地址路由器转发包时会改写MAC地址。发送方MAC地址 表示上一个转发路由器的MAC地址
IP头部发送方IP地址发送该包的原始设备的IP地址。可以按发送设备设置规则。
IP头部接收方IP地址包的目的地IP地址。可以按包的目的地设置规则
IP头部协议号TCP/IP协议未每个协议分配了编号,可以按协议类型设置规则。协议号包括:IP,0;ICMP,1;TCP。6;UDP,17;OSPF,89
TCP或UDP头部发送方端口号发送该包的程序对应的端口号。服务器程序的端口号一般是固定的,可以根据端口号确定是哪个程序发送的。客户端程序的端口号大多是随机的,很少用客户端发送的端口号设置规则。
TCP或UDP头部接收方端口号包的目的地程序对应的端口号。一般也是使用服务器的端口号设置规则。
TCP或UDP头部TCP控制位ACK,表示接收数据序号字段有效,用于通知发送方数据已经正确接收。
TCP或UDP头部TCP控制位PSH,表示发送方应用程序希望不等待发送缓冲区填充完毕,立即发送这个包。
TCP或UDP头部TCP控制位RST,强制断开连接,用于异常中断
TCP或UDP头部TCP控制位SYN,开始通信的连接操作中发送的第一个包,SYN为1,ACK为0。如果过滤掉这个包,后续的操作都会取消,整个访问都会被屏蔽。
TCP或UDP头部TCP控制位FIN,表示断开连接
TCP或UDP头部分片通过IP协议的分片功能拆分后的包,第二个分片会设置该字段
ICMP消息的内容ICMP消息类型0,针对ping命令发送的ICMP echo消息的响应。该类型的消息和下面类型8的消息屏蔽后,ping命令就没有响应了。
ICMP消息的内容ICMP消息类型8,执行ping命令时会发送ICMP echo消息。
ICMP消息的内容ICMP消息类型其他,其他类型的ICMP消息屏蔽后可能导致网络故障

一般发送攻击前会通过ping命令查询网络中有哪些设备,屏蔽0和8,不响应ping命令,攻击者就无法获取网络中的信息了。ping命令也能用来查询设备是否在工作,屏蔽后可能让人误以为设备没有在工作。

包过滤示例

公司服务器使用防火墙隔离的方式部署,公司内网和公开区域分开。公开区域的公有地址为192.0.2.0/24。
规则是允许外网访问Web服务器,禁止Web服务器访问外网。具体设置如下表:

接收方IP接收方端口发送方IP发送方端口TCP控制位允许/阻止
192.0.2.0/2480---允许
--192.0.2.0/2480SYN=1,ACK=0阻止
--192.0.2.0/2480-允许
-----阻止

第一行,允许外部的包访问Web服务器上指定的程序。端口号限定程序,可以避免其他运行的不可访问程序的信息泄露到外部。
第二行,不允许Web服务器主动建立TCP连接。TCP连接需要收发3个包,第一个包的SYN为1,ACK为0。
第三行,起点为Web服务器的包设置为允许通过。Web服务器需要通知发送方数据已经正常收到,因此需要发送应答包。

外网访问服务器的时候,第一个包符合第一行条件,允许通过。第二个包是Web服务器发送的,控制位和第二行不一样,所以符合第三行,允许通过。后续的包都会符合第一行和第三行。

通过接收方和发送方IP地址,判断包的起点和终点;
通过端口号可以限定应用程序;
通过控制位判断连接的方向;

由于公司内网使用的是私有地址,因此默认是无法从外网访问内网的。防火墙具备地址转换的功能,所以才能把包传到公司内网。
实际设置时要防止公开区域和公司内网的包过滤规则产生冲突。

带有包过滤功能的路由器

包过滤的机制不是防火墙专用的机制,而是在路由器的包转发功能基础上附加的一种功能。
在过滤规则不复杂、也不需要记录日志的时候,可以使用附加了包过滤功能的路由器充当防火墙。
不过为了分析入侵者的收发,防火墙会把阻止的包记录下来。记录的操作给路由器负担太大。并且在规则较为复杂时,路由器的命令难以维护这些规则。所以防火墙一般是专用的硬件和软件。

防火墙无法抵御的攻击

防火墙根据包的起点和终点判断是否允许通过。但是如果包的内容中含有危险信息时,防火墙无法发现。
包的内容带来的问题,根源在于服务器程序中的BUG。
在BUG已知,又来不及更新到修复后软件版本时,可以在防火墙之外部署检查包内容的设备或软件。

3 负载均衡

服务器的访问量上升时,会有很多用户同时访问。提升服务器的性能带来的改善是有限的,最好的办法是增加多台服务器,把访问量分配到各个服务器上。
负载均衡是将客户端的请求分配到服务器上的机制。

通过DNS服务器分配

可以在DNS服务器填写多个名称相同的记录,这样客户端每次查询DNS服务器都会按顺序返回不同的IP地址。

这种分配方式的缺点是:
一般的DNS服务器无法确定Web服务器是否正常工作,因此仍然会返回故障服务器的地址。
对于有些跨多个页面的操作,操作期间访问的服务器变化后,就无法完成。

负载均衡器

将负载均衡器的IP地址代替Web服务器的实际地址注册到DNS服务器上,这样客户端会认为负载均衡器是一台Web服务器,并向其发送请求。收到请求后,负载均衡器会判断将请求转发给哪台Web服务器。

负载均衡器会定期采集Web服务器的CPU、内存使用率,也能向Web服务器发送测试包,从而根据数据和响应时间判断负载状况。

操作不跨页面时,负载均衡器根据Web服务器负载状况来判断。

操作跨多个页面时,请求必须发到同一台Web服务器上。
HTTP的工作方式是发送请求前建立TCP连接,等服务器发送完响应后断开连接,每一次HTTP访问都是独立的,无法判断是否相关。在使用代理机制后,无法通过IP判断发送请求的客户端是哪一个。
这种情况的解决方案之一,是在HTTP头部字段中加了判断相关性的信息。负载均衡器可以根据HTTP头部的字段做出判断,将相关的请求发送到同一台Web服务器。

4 缓存服务器

Web服务器需要检查网址和访问权限,并在页面上填充数据,最后才将页面返回给客户端。
缓存服务器可以提前将要访问的数据准备好,直接发给客户端,能比Web服务器更快地返回数据。这部分请求交给缓存服务器处理,降低了Web服务器的负载。

缓存服务器适合不需要Web服务器动态生成的数据。

4.1 缓存服务器工作过程
缓存中无数据的情况
1 请求
2 转发
3 响应
4 转发响应
4 保存缓存
客户端
缓存服务器
Web服务器
缓存

第4步转发响应的时候,缓存服务器会在响应的头部加上via字段,告知客户端这个信息是经过缓存服务器中转的。
第4步同时会将响应数据保存到缓存中,并记录缓存时间。

一台缓存服务器对应多台Web服务器时,需要根据消息内容判断应该转发给哪台服务器。
随着缓存数据积累,用户访问数据命中缓存的几率也会提高。

命中缓存的情况
1 请求
2 询问数据是否变化
3 回答无变化
4 用缓存数据响应
客户端
缓存服务器
Web服务器

第2步会加一个If-Modified-Since头部字段,用来询问服务器本次请求的数据是否发生变化。Web服务器根据If-Modified-Since的值和页面数据的最后更新时间作比较,如果没发生变化,就不返回页面数据,而是返回一个表示数据无变化的响应。缓存服务器就将缓存的数据返回给客户端。

4.2 代理

缓存服务器是通过代理机制对数据进行缓存的服务器。
代理介于Web服务器和客户端之间,将Web服务器访问中转,并把Web服务器返回的数据保存在磁盘中,并代替Web服务器把磁盘的数据返回给客户端。

代理按照不熟的位置分为正向代理和反向代理。

正向代理

正向代理部署在客户端一侧。除了缓存之外,正向代理还能用来实现防火墙。除了包过滤之外,缓存服务器转发中可以查看请求的内容,因此也能控制公司内网允许访问的网站。

使用正向代理时,需要在浏览器设置的代理服务器一栏填写正向代理的IP地址。
浏览器发起请求时,会按照输入的网址判断目标服务器的域名,并向其发送消息,浏览器请求的URI是文件名或目录名(域名以后)。
设置正向代理后浏览器忽略网址栏的内容,直接把请求发给正向代理服务器。请求的URI是网址栏输入的完整网址(从“http:”开始到结束)。

反向代理

正向代理需要设置浏览器,这个很麻烦。

反向代理通过DNS解析引导客户端的访问,并在缓存服务器上设置转发目标,将请求消息中URI的目录名与Web服务器进行关联。反向代理可以转发不包含完整网址的消息。
服务器端的缓存服务器使用的就是反向代理。

透明代理

网络包的IP头部包含接收方的IP地址,知道了这个地址,就能知道要访问的服务器。
通过查看IP头部来确定转发目标的方式称为透明代理。

透明代理不需要像正向代理那样在浏览器设置参数,因此浏览器还是正常向Web服务器发送请求;
透明代理也不像反向代理那样在缓存服务器上设置转发目标。对DNS的设置会使透明代理本身成为访问目标,就无法判断转发目标了。

  • 如何让消息到达透明代理
    浏览器不会把透明代理服务器当做目标,透明代理自身也无法Web服务器
    透明代理必须放在消息从浏览器传输到Web服务器的路径上,拦截经过的消息,再转发给Web服务器。如果请求消息有多条路径能到达Web服务器,这些路径上都得设置透明代理。
    一般将网络设置为只有一条路可走的结构,然后在这条路上放透明代理。接入网就是这样的结构,接入网的入口可以放置透明代理。

5 内容分发服务

5.1 缓存服务器部署位置的影响

服务器端:降低Web服务器负担,无法减少互联网流量。Web服务器运营者能控制缓存服务器的数量和配置。
客户端:降低网络流量,少受网络拥塞的影响。但是Web服务器运营者无法控制缓存服务器。
互联网边缘:降低网络流量,且Web服务器运营者可以控制缓存服务器。

5.2 内容分发服务

Web服务器运营者和网络营商签约,把自己控制的缓存服务器放在客户端的运营商处。
虽然可以筛选一些主要的运营商进行签约,减少缓存服务器部署的数量,但是和运营商签约和部署这些服务器仍然很耗精力和费用,因此出现了专门从事相关服务的厂商,这种服务即内容分发服务,提供这种服务器的厂商称为CDSP。
CDSP和主要的网络供应商签约,部署很多台缓存服务器。也和Web服务器运营者签约,使缓存服务器配合Web服务器的工作。缓存服务器可以提供给多个Web服务器的运营者共享。
缓存服务器的运营工作由CDSP统一负责。

5.3 找到最近的缓存服务器的方法
使用DNS服务器分配最近的服务器

在DNS返回Web服务器IP地址时对返回的内容做一些加工。

b
DNS请求
DNS请求
估算的最近的
缓存服务器地址
服务器端的
DNS服务器
路由表A
路由表B
路由表C
路由表D
客户端的DNS服务器
缓存服务器A
路由器A
缓存服务器B
路由器B
缓存服务器C
路由器C
缓存服务器D
路由器D
客户端

事先从缓存服务器部署地点的路由器收集路由信息,将这些路由表集中在服务器端DNS服务器上。
客户端做出请求,先向客户端的DNS查询Web服务器的地址。客户端DNS层层询问后,找到服务器端的DNS服务器。
服务器端的DNS服务器根据各个路由器的路由表信息,得知各个路由器到达客户端DNS的路由,比较后找出距离客户端DNS最近的缓存服务器。

客户端DNS服务器一般和客户端离得较近,所以距离该DNS近的缓存服务器,和客户端的距离也近。
由于是根据客户端DNS的IP地址进行估算的,所以精度不高。

通过重定向分配访问目标

重定向是将客户端的访问引导到另一台服务器的操作。
将重定向服务器注册到Web服务器端的DNS服务器上,客户端会把请求发送到重定向服务器上。
重定向服务器也是收集了来自各个路由器的路由信息,根据这些信息找到最近的缓存服务器,然后把缓存服务器放到HTTP的Location字段中返回响应。
之后客户端会重新访问指定的缓存服务器。

重定向的缺点是增加了HTTP消息的交互次数,但是它根据客户端的IP地址估算,精度较高。

5.4 改善更新缓存的方法

第一次访问的数据需要向原始服务器请求,后续每次访问都需要向服务器询问数据是否发生变化。
如果遇到网络拥堵,响应时间就会受影响。

一种方法是让Web服务器在原始数据发生变化时,立即通知缓存服务器,使缓存服务器上一直是最新的状态。这样在第一次访问之后都能保持缓存效果。
另外,可以把页面的静态部分和动态部分分开,仅缓存内容不会发生变化的静态部分。

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

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

相关文章

springboot宠物领养系统-计算机毕业设计源码07863

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

持续总结中!2024年面试必问 20 道设计模式面试题(一)

一、什么是设计模式?请简述设计模式的分类。 设计模式是软件工程中的一种被广泛认可的解决方案模板,用于解决在软件设计过程中遇到的常见问题。它们是经验的总结,代表了一种在特定情况下被证明有效的解决方案。 设计模式的分类 设计模式通…

nginx的rewrite功能介绍

Rewrite 规则 ex:http://hostname/abc/abc.html –>http://hostname/abc.php?abc Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。 URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式…

4. Revit API UI 之 Ribbon(界面)

4. Revit API UI 之 Ribbon(界面) 第二篇中,我们提到了IExternalApplication,该接口需要实现两个方法:Revit启动时调用的OnStartup 方法,和Revit关闭时调研的OnShutdown 方法。文中还给了个例子&#xff0…

为什么idea总是提示将内部类设置为static

在写一些内部类的时候,Idea总是提示要设置为static,你知道为什么吗 在Java中,内部类可以被声明为static,这种内部类称为静态内部类(Static Nested Class)。静态内部类和非静态内部类有显著的区别&#xf…

2024年,计算机专业还值得选择吗

在2024年,计算机专业仍然是一个非常有前途和有价值的选择。计算机科学和技术的发展仍在不断加速,而全球范围内对技术人才的需求也在持续增长。以下是一些原因: 1. 高薪就业机会:计算机专业毕业生通常能够获得高薪的就业机会。技术…

mybatis之特殊SQL的执行

1.1模糊查询 尝试&#xff1a; //模糊查询用户 List<User> getUserByLike(Param("mohu") String mohu);<select id"getUserByLike" resultType"user">select * from user where username like %#{mohu}% </select>Test publ…

malloc和free函数在C语言中的作用

在C语言中&#xff0c;malloc和free函数是用于动态内存管理的关键函数。它们在程序运行时允许开发者根据需要动态地分配和释放内存。 malloc函数 malloc函数用于在堆&#xff08;heap&#xff09;上动态地分配指定大小的内存块&#xff0c;并返回一个指向该内存块的指针。如果…

普林斯顿大学教授终于把算法整理成图解笔记

普林斯顿大学教授终于把算法整理成图解笔记了&#xff01;&#xff01;&#xff01; 这些年虽然学到的编程知识越来越多&#xff0c;但是我对算法却始终没搞明白&#xff0c;直到偶然间看到这份笔记&#xff0c;我才认识到这些概念是多么简单。 对于很多刚入门的小伙伴来说&am…

如何让视频有高级感 高级感视频制作方法 高级感视频怎么剪 会声会影视频剪辑制作教程 会声会影中文免费下载

高质量视频通常具有清晰的画面、优质的音频和令人印象深刻的视觉效果。这篇文章来了解如何让视频有高级感&#xff0c;高级感视频制作方法。 一、如何让视频有高级感 要让视频有高级感&#xff0c;要注意以下几个要点&#xff1a; 1、剧本和故事性&#xff1a;一个好的剧本和…

建筑工程软件Revit中复杂大模型如何实现Web端轻量化?| HOOPS技术应用

建筑信息模型&#xff08; BIM&#xff09;技术在建筑工程中扮演着越来越重要的角色&#xff0c;而Autodesk Revit作为主流的BIM软件&#xff0c;被广泛应用于设计、施工和管理。然而&#xff0c;Revit生成的复杂大模型常常由于数据量庞大而难以直接在Web端展示和操作。这时&am…

MySQL 数据库 Navicat Premium 16.01 安装教程

MySQL 数据库 Navicat Premium 16.01 安装教程 目录 MySQL 数据库 Navicat Premium 16.01 安装教程前言安装步骤同意协议选择安装目录桌面快捷方式安装正在安装安装完成 步骤获取 前言 MySQL数据库管理用Navicat更加方便&#xff0c;可视化效果更好&#xff0c;今天给大家带来…

dp练习2

如何分析这个题目呢&#xff0c;要想着当前的最优解只和前面的最优解有关 class Solution { public:int numSquares(int n) {vector<int> f(n 1);for (int i 1; i < n; i) {int minn INT_MAX;for (int j 1; j * j < i; j) {minn min(minn, f[i - j * j]);}f[…

计算机组成原理(四)Cache存储器

文章目录 Cache存储器的基本原理cache命中率、平均访问时间、效率地址映射全相联映射直接映射组相联映射 查找算法cache 存储器替换策略cache 存储器-写操作策略习题 Cache存储器的基本原理 Cache是一种高速缓冲寄存器&#xff0c;是为了解决CPU和主存之间速度不匹配而采用的一…

线性表嘻嘻嘻

顺序存储结构 数组大小 #define MaxSize 50 存储类型&#xff08;整个顺序表的&#xff09; typedef struct{ElemType data[MaxSize];//ElemType看实际需求定int length; }SqList; 数组是用来存储元素的&#xff0c;length是长度。 这里的data可以是一个结构体数组&#…

树莓派4B_OpenCv学习笔记6:OpenCv识别已知颜色_运用掩膜

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 学了这些OpenCv的理论性知识&#xff0c;不进行实践实在…

qss实现登录界面美化

qss实现登录界面美化 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 去掉头部this->setWindowFlag(Qt::FramelessWindowHint);// 去掉空白部分th…

深度学习训练——batch_size参数设置过大反而训练更耗时的原因分析

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…

Matlab进阶绘图第60期—带伪彩图的曲面图

带伪彩图的曲面图是曲面图与伪彩图的组合。 其中&#xff0c;伪彩图与曲面图的颜色用于表示同一个特征。 由于伪彩图无遮挡但不直观&#xff0c;曲面图直观但有遮挡&#xff0c;而将二者组合&#xff0c;可以实现优势互补。 本期就来分享一下带伪彩图的曲面图的绘制方法&…

保护密码安全,探讨密码加盐及其在Go语言中的实现

介绍 在当今数字化时代&#xff0c;个人隐私和数据安全成为了人们关注的焦点之一。随着网络犯罪的不断增加&#xff0c;用户的密码安全性变得尤为重要。密码加盐作为一种常见的安全措施&#xff0c;被广泛应用于密码存储和认证系统中。本文将深入探讨密码加盐的概念、重要性以…