TCP 代理作为反向代理和负载平衡器

指南, 5 月-06-2022 年5 分钟阅读

传输控制协议(TCP)代理在开放系统互连(OSI)模型的 TCP 层运行。TCP 代理服务器是客户端和目标服务器之间的中间代理。 客户端与 TCP 代理服务器建立连接,TCP 代理服务器再与目的地服务器建立连接。TCP

传输控制协议(TCP)代理在开放系统互连(OSI)模型的 TCP 层运行。TCP 代理服务器是客户端和目标服务器之间的中间代理。 

客户端与 TCP 代理服务器建立连接,TCP 代理服务器再与目的地服务器建立连接。TCP 代理服务器既是服务器又是客户端,可访问根据网络地址限制连接的服务。

有些网页只能通过内部机器访问,从其他地方访问时会收到拒绝访问的错误信息。不过,只要在一台内部机器上使用代理,就可以在互联网的任何地方通过网络浏览器查看该网页。

网络服务器认为,它是在向运行代理服务器的机器上的客户端提供数据。然而,代理会将数据从网络转发到实际客户端。 

代理服务器接受来自多个客户端的连接,并使用多个连接将其转发到服务器。客户端或服务器必须在其连接上读取或写入数据,并且不得拒绝任何操作而挂起代理服务器。

OSI 模型 - 预览

OSI 模型将计算机联网过程概念化。它有七个层次:

  • 物理层
  • 数据链路层
  • 网络层
  • 传输层
  • 会话层
  • 显示层
  • 应用层

传输层负责在网络上传输数据。它使用两种不同的协议,即 TCP 和用户数据报协议(UDP)。TCP 通常用于数据传输,该协议指导如何发送数据。它将信息分割成段,然后从源发送到目的地。

插座连接

在正常情况下,发送方和接收方传输数据块。发送方和接收方同时与不同的机器进行通信,因此代理会在进行通信的发送方和接收方之间建立套接字连接。

套接字是双方使用 IP 和端口号建立的逻辑连接。代理在发送方和接收方之间建立套接字连接。由 IP 地址和端口号组成的套接字地址在发送方和接收方之间的通信中是唯一的。

唯一的套接字地址可确保数据平行传输,数据包不会相互碰撞。

在 TCP 层实施代理

TCP 代理接收传入流量并打开一个传出套接字,通过该套接字将传入流量传送到目的地服务器。它在客户端和服务器之间移动数据,但不能更改任何数据,因为它不理解这些数据。

这一层的代理可以访问接收方试图连接后端服务器的 IP 地址和端口号。如果服务器使用端口号 3306 来监听请求,那么代理就会在这一层实现该端口,并监听该端口。 

代理监听该端口,并将信息转发给服务器。TCP 代理通过单一主机:端口组合的套接字创建连接。

在传输层实施代理既轻便又快捷,因为该层只负责数据传输。

代理作为来回传递信息的媒介,不能读取信息。这些代理可以帮助你监控网络,将内部网络从公共网络中隐藏起来,对连接进行排队以防止服务器过载,并限制连接。它是通过 TCP 通信的负载平衡服务的最佳解决方案,例如 MYSQL 和 Postgres 的数据库流量。

TCP 代理作为反向代理

反向代理接受客户端的请求,将其转发给能满足该请求的服务器,并将服务器的响应返回给客户端。即使只有一个服务器或应用程序,也可以部署反向代理。

网络上的其他用户可以公开看到反向代理。它在网站的网络边缘实施,接受来自网络浏览器和移动应用程序的请求。 

将 TCP 代理作为反向代理实施有以下优点:

安全性 - 它提高了网络的安全性。恶意客户端无法访问后端服务器,因为它们对外部网络不可见。恶意客户端无法直接访问后端服务器以利用任何漏洞。

防止 DDOS 攻击 - 后端服务器受反向代理保护,防止分布式拒绝服务(DDOS)。

调节流量 - 它可以拒绝来自特定客户端 IP 地址的流量(黑名单),或限制来自客户端的连接数。

可扩展性和灵活性 - 由于客户端只能看到反向代理的地址,因此可以灵活地更改后端配置。为了平衡服务器的负载,您可以增加或减少服务器的数量,以适应不断变化的流量。

网络加速 - 它缩短了为请求客户端生成响应所需的时间。 

压缩 - TCP 代理在返回客户端之前作出响应,减少网络传输数据所需的带宽。

加密 - 客户端和服务器之间的网络通信需要加密。加密过程会给客户端和服务器带来开销,因为它需要耗费大量计算资源。反向代理执行加密和解密,从而将后端服务器解放出来,只为客户提供服务。

缓存 - 反向代理将请求的副本存储在本地系统中,然后再提供给客户端。反向代理从缓存中为请求提供服务,而不是将请求转发到服务器,当客户端再次请求时再获取相同的请求。 

TCP 代理作为负载平衡器

负载平衡器是一种代理,可在有多个服务器时管理流量。它能使服务器高效运行,并在高流量时扩展服务器。负载平衡器在服务器之间分配流量,并将客户端的原始连接直接路由到健康的后端服务器,而不会中断。

TCP 代理使用直接服务器返回,将响应从健康的后端服务器直接发送到客户端,而不是发送到负载平衡器。后端服务器终止安全套接字层(SSL)流量,而不是负载平衡器。 

会议亲和力

客户端和服务器之间的 TCP 通信支持会话亲和性。会话亲和性是指,只要后端服务器健康且有能力,客户端就可以向同一后端服务器发送请求。 

监控服务器

TCP 代理通过定期监控后端服务器的就绪状态,对其进行健康检查。当后端服务器无法处理流量时,它就是一个不健康的节点,服务器会将流量重定向到其他健康的后端服务器。

TCP 代理在充当负载平衡器时具有以下特点:

异步行为 - TCP 代理具有异步行为,这意味着如果一个客户端突然停止从套接字到代理的读取,其他客户端一定不会注意到代理服务的中断。

支持其他协议 - TCP 代理支持 HTTP 和其他应用层协议,如 FTP。

充当反向代理 - 用户可根据执行位置使用 TCP 代理作为反向代理。在服务器端,它负责管理从客户端到用户的流量。 

窗口比例选项

TCP 接收窗口是接收器在连接过程中可以缓冲处理的数据量(以字节为单位)。接收方必须在开始通信前更新窗口大小,并等待确认。 

发送方根据窗口大小发送数据。Windows TCP/IP 协议栈的设计会根据不断变化的数据大小进行调整,并使用更大的窗口大小。发送方每次传输时,都会使用比上次传输更大的窗口大小。

窗口大小不是固定的,因为您可以通过调整最大网段大小(MSS)来调整窗口大小。客户端和服务器会在连接设置期间协商 MSS。将接收窗口调整为 MSS 的增量,可增加批量数据传输过程中使用的全尺寸 TCP 网段的百分比。

接收窗口大小按以下方式确定:

客户端向服务器发送第一个连接请求时,会告知接收窗口大小为 16K(16,384 字节)。连接建立后,客户端会根据 MSS 调整接收窗口大小。

常见问题

1.反向代理与负载平衡代理有何不同?

反向代理负载平衡代理
反向代理是在客户端和服务器之间实施的中间应用程序。负载平衡代理可在多个后端服务器之间均匀、高效地分配流量。
反向代理可确保客户端不与原始服务器直接通信,从而增强网络服务器的安全性。网站有多个后端服务器,在发生网络中断或 DDoS 攻击时,负载平衡代理可将流量重新路由到其他服务器,从而防止网站关闭。
过程- 用户发出 HTTP 请求。- 反向代理接收请求。- 反向代理允许或拒绝用户的请求。- 如果允许,反向代理会将请求转发给服务器。- 如果拒绝,反向代理会向客户端发送一条错误信息。- 服务器向反向代理发送相应的回复。反向代理将服务器的回复转发给客户端。流程:- 负载均衡器接收客户端请求- 负载均衡器将请求发送给后端服务器组中的单个服务器- 所选服务器将响应发回给负载均衡器- 负载均衡器将服务器的响应转发给用户。
一些开源反向代理的例子有:NGINXApache HTTP 服务器Apache 流量服务器一些负载平衡算法的例子有:哈希循环罗宾二选一幂次算法

2.HTTP 代理与 TCP 代理的区别。

HTTP 代理TCP 代理
在非军事区(DMZ)中,它被用作负载平衡器或公共 IP 提供者,以保护后端服务器。它被用作客户端与服务器之间 TCP 连接的反向代理。
创建 HTTP 请求/响应。打开 TCP 套接字连接并通过它传输数据。
HTTP 代理会读取主机地址并连接到相应主机。TCP 代理不会更改数据,因为它无法理解数据。
除 HTTP 外,它还能处理 HTTPS 和 FTP 请求。除 TCP 外,它还能处理 HTTP 和 FTP 请求。

最终想法

TCP 代理既是反向代理,也是负载平衡器。这两类应用程序都位于客户端和服务器之间,接受前者的请求,并传递后者的响应。

有时,反向代理和负载平衡器可能听起来一样,从而导致混淆。探究在网站上部署它们的时间和原因将有助于你理解它们。

数据收集是一项艰巨的任务,对于成熟的企业或初创公司都很重要。这是一个需要了解市场趋势、竞争对手分析和客户偏好以做出决策的过程。 

ProxyScrape提供高级代理、住宅代理和专用代理,用于从网站收集大量数据。代理服务器组合灵活,价格合理。请继续查看我们的博客,了解有关新推出的代理服务器、其用途以及ProxyScrape 所提供的优势的更多信息。