《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)

《网络是怎么样连接的》读书笔记 - 服务器端的局域网中(四)

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第二天,点击查看活动详情

本章重点

  • 防火墙的地位作用以及现代主流的服务器部署方式。
  • 缓存服务器的作用以及部署方式。
  • 三种代理方式以及区别。
  • 内容分发服务是什么?缓存服务器不同部署方式的影响。

防火墙和网络访问

如果服务器不设置任何防护并且裸奔,很大概率受到网络攻击,现在公司基本都会使用防火墙+服务器的部署方式。还有一种是直接买服务器供应商也就是常见的上云,直接让专业的三方服务器管理进行防护。

image.png

防护网络攻击的手段目前主流的方式有三种,其中被使用最多也最有效的是包过滤

第一种方式为包过滤,包过滤非常简单,因为在网络包的头部包含了网络请求的所有信息,通过接收方 IP 地 址和发送方 IP 地址,我们可以判断出包的起点和终点。因为请求的终点是可以确定的,也就是WEB服务器,所以这之间加入防火墙来隔离异常请求。

第二种方式是使用端口的方式进行限制,防火墙控制某个端口的请求网络是否可以来放行不同IP进入不同端口的权限。

第三种是TCP层面的防护,TCP 在执行连接操作时需要收发 3 个包,第一个包通常使用其他端口,可以判断一定是在 Web 服务器 程序中特别设置过的,因此只要按照服务器的设置来调整防火墙设置即可,通常这个包中 TCP 控制位中 SYN 为 1,而 ACK 为 0。

其他的包中这些值都不同, 因 此只要按照这个规则就能够过滤到 TCP 连接的第一个包。因为WEB服务器发往互联网被阻断了,所以这样就实现了拦截,从反方向来看,第一个包是发往WEB服务器的,返回时从WEB返回的,所以互联网访问WE B是没有问题的。

最后这样就实现了“可进不可出”的效果,根据第三章讨论的地址转换的工作原理,当使用地址转换时,默认状态下是无法从互联网访问公司内网的,因此我们不需要再设置一条包过滤规 则来阻止从互联网访问公司内网。

image.png

image.png

最后需要说明包拦截过滤并不是防火墙特有的功能,而是路由器的包转发功能基础上附加的一种功能。

对于防火墙这种机制是典型的“攘外但是不能安内”的存在,意思是说虽然对外的敌人是拦截的,但是出现了防火墙无法防御的内鬼是解决不了的,所以针对防火墙无法处理的问题,又引申出几种处理方式:

  • 第一种是修复应用程序的BUG,这些BUG通常是技术人员在开发过程中没有考虑到的系统漏洞问题,这种问题是可以通过人为手段快速修复的 。
  • 第二种是用加一层的绝招,对于异常流量进行拦截,比如最为经典的DDos攻击,使用自身的防火墙显然是不行的,必须有外部监控防护服务器进行保护。

负载均衡

单机的负载均衡是没有意义的伪负载均衡,下面讨论的都所有情况都是在多物理或者多主机映射的虚拟机的情况进行介绍。

负载均衡通常会使用缓存服务器,缓存服务器是一台通过代理机制对数据进行缓存的服务器。

缓存服务器位于web服务器和客户端之间具备对于WEB的中转功能,主要工作非常简单就是把WEB服务器返回的数据缓存在磁盘中序列化存储,目的是提高WEB服务器的响应速度。

缓存服务器最大的问题是服务器更细数据之后缓存可能还没同步而看到旧数据,为此缓存提供了缓存最大的保存时间以及用户访问隔离的特性,简单理解就是针对不同的客户端看到的内容是不同的,不过从服务器的角度看与之交互的是缓存服务器。

判断什么时候需要直接返回服务器数据而不是缓存数据,一种简单的方案是检查客户端的网络报文信息变动,并且自己在返回的时候也要告知自己是缓存还是服务器数据。

最后缓存的最大问题是缓存命中率的问题,但是此问题不在本章科普范围之内不做过多介绍。

代理处理

正向代理:正向代理刚刚出现的时候,其目的之一就是缓存,这个目的和服务器 端的缓存服务器相同。当设置了 正向代理时,浏览器会忽略网址栏的内容,直接将所有请求发送给正向代 理。请求消息的内容也会有一些不同。

正向代理是最为简单直观的代理方式,具备有下面的特点:

1、访问内部节点:通常使用跳板作为进入内网的工具。

2、加快访问速度:代理服务器可以缓存内网资源,用户请求已缓存资源时,直接发送给用户,比如国内阿里云的MAVEN仓库。

3、访问控制:代理服务器可以设置访问权限,控制外部主机对内网资源的访问。简单的权限控制防止外部访问内部网络。

一些好用的代理工具:

1.reDuh源码github.com/sensepost/r…

2.reGeorg源码github.com/sensepost/r…

3.tunna 源码 github.com/SECFORCE/Tu…

反向代理

正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

反向代理服务器的作用:

集群式部署实现负载均衡,CDN技术(构建在数据网络上的一种分布式的内容分发网),前端服务器,Nginx(异步框架的网页服务器)等。

1、用户访问web服务时,并不知道访问的是代理服务器,代理服务器就是web服务器。

2、加快访问速度,和正向代理一样可以缓存内网数据。

3、实现负载均衡,降低单个服务器的负担,提高整体资源的利用率。

透明代理

意思是客户端根本不需要知道有代理服务器的存在,它修改你的请求报文,并会传送真实IP。注意加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。对于整个请求来说是无感知的。也因为是无感知的,所以透明代理不能和反向代理兼容。

透明代理的作用:

1、实践例子为当下很多公司使用的行为管理软件。

2、客户端访问web并不知道是通过代理服务器访问的。

3、防火墙设置透明代理,当PC让代理服务器请求web页面时,代理服务器返回页面数据。

内容分发服务

缓存服务器部署在不同的地方,其效果会完全不一样。关于部署的不同方式可以直接看下面的图,这里主要记录第三种部署方式的利弊。

第三种部署方式是和网络运营商签约的方式缓存服务器就近部署(类似CDN),当然这样的开销显然很大,所以在此之上也有中间商插入专门干这些事情,这些运营商被叫做CDSP( Content Delivery Service Provider,内容分发服务运营商)。

这些运营商会和主要的互联网供应商签约,并部署很多台缓存服务器,缓存服务器可以缓存多个网站的数据,因此 CDSP 的缓存服务器就可 以提供给多个 Web 服务器的运营者共享。

image.png

如何让客户端找最近的服务器

答案是是像负载均衡一样用 DNS 服务器来分配访问,对于DNS向Web返回IP的同时返回一些额外的信息。

而对于如何估算出客户端和就近服务器的距离,可以通过把所有的路由放到路由表中,可以通过路由次数的方式判断距离,虽然不一定完全一致,但是可以以较大的精度确定位置。

其他的办法是通过重定向的方式查找最近的缓存服务器,重定向服务器通过收集了来自各个路由器的路由信息,并根据这些信息找到最近 的缓存服务器。

除了收集路由信息,重定向也可以返回一个通过网络包往返时间估算到缓存服务器的距离的脚本, 通过在客户端运行脚本来找到最优的缓存服务器。

缓存更新的影响

缓存更新会影响缓存服务器的效率,所以更新方法非常重要。

比较常见的更新方式是每次原始服务器更新就立刻通知缓存服务器,让其一直保持最新状态,这个功能的执行者就是内容分发服务。

除了编写静态页面之外,还以一种方式是选择不保存页面而是将网页的动态内容和静态内容分离,比如图片服务器、文件服务器等等。

总结

这一章算是比较科普向的一章,其实也算是可看可不看的类型,个人认为重点是代理处理的部分,了解三种代理方式。

而负载均衡的内容则需要深入学习Nginx的相关内容,本章讲述的内容有些太浅了。

总之是轻松加愉快的一章内容。

相关文章
|
10天前
|
存储 Java 网络安全
如何使用Python批量连接网络设备?
【7月更文挑战第4天】
20 1
如何使用Python批量连接网络设备?
|
10天前
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
|
16天前
|
存储 机器学习/深度学习 弹性计算
阿里云ECS计算型c8i服务器测评_网络PPS_云盘IOPS性能参数
阿里云ECS计算型c8i实例采用Intel Xeon Emerald Rapids或Sapphire Rapids CPU,主频2.7 GHz起,支持CIPU架构,提供强大计算、存储、网络和安全性能。适用于机器学习、数据分析等场景。实例规格从2核到192核,内存比例1:2,支持ESSD云盘,网络带宽高达100 Gbit/s,具备IPv4/IPv6,vTPM和内存加密功能。详细规格参数表包括不同实例的vCPU、内存、网络带宽、IOPS等信息,最高可达100万PPS和100万IOPS。
|
17天前
|
存储 弹性计算 网络协议
阿里云服务器ECS计算型c7实例详解_网络PPS_云盘IOPS性能参数
阿里云ECS计算型c7实例,基于三代神龙架构,采用Intel Ice Lake CPU,2.7 GHz基频,3.5 GHz全核睿频,提供高性能计算、存储和网络能力。支持vTPM和Enclave特性,适用于高网络负载、游戏、数据分析等场景。实例规格从2核4GB至128核256GB,最大网络收发包可达2400万PPS。详细规格及性能参数见官方页面。
|
1天前
|
网络协议 安全 Python
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
我们将使用Python的内置库`http.server`来创建一个简单的Web服务器。虽然这个示例相对简单,但我们可以围绕它展开许多讨论,包括HTTP协议、网络编程、异常处理、多线程等。
5 0
|
10天前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
12天前
|
网络协议 网络安全
使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端
使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端
27 0
|
18天前
|
监控 安全 Linux
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理
39 0
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
48 1
|
3天前
|
Linux
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法