关于程序员:常见问题四层代理和七层代理有什么区别

37次阅读

共计 2614 个字符,预计需要花费 7 分钟才能阅读完成。

最近在做集中答疑的时候,有不少同学有同一个疑难:

在后盾服务部署、运维的场景中,常常会用到代理,常见的有四层代理和七层代理。那四层代理和七层代理有什么区别呢?

01 OSI 七层模型

02 TCP/IP 四层模型

03 代理是什么

代理(英语:Proxy)也称网络代理,是一种非凡的网络服务,容许一个网络终端(个别为客户端)通过这个服务与另一个网络终端(个别为服务器)进行非间接的连贯。

一些网关、路由器等网络设备具备网络代理性能。个别认为代理服务有利于保障网络终端的隐衷或平安,避免攻打。

04 四层代理

如果说网络层通信的粒度是物理终端设备的话,IP 就是标记不同物理设施的符号,那么传输层通信的粒度是过程,端口就是标记不同过程的符号。

四层代理的四层就是 OSI 七层模型中的传输层;四层代理是基于 IP+ 端口做的代理。四层通过虚构 IP+ 端口接管申请,而后再调配到实在的服务器。

以常见的 TCP 为例,从三次握手的第一次握手开始,代理设施在接管到第一个来自客户端的 SYN 申请时,即依照肯定的策略抉择一个被代理的后端服务器,并对报文中指标 IP 地址进行批改(改为后端服务器 IP),间接转发给该服务器。

TCP 连贯建设,即三次握手,实际上是客户端和后端服务器建设的,代理设施只是起到一个相似路由器的转发动作。在某些部署状况下,为保障服务器回包能够正确返回给负载平衡设施,在转发报文的同时可能还会对报文原来的源地址进行批改。

04 七层代理

七层代理的七层就是 OSI 七层模型中的应用层;七层代理是基于内容数据做的代理(了解应用层中的利用数据),最终的转发规定取决于内容的差别。鉴于七层利用协定十分宽泛,当初的七层代理次要是指 HTTP 代理。

和四层代理不同的是,七层代理必须要先和代理设施三次握手后,能力失去七层(HTTP 层)的具体内容,而后再转发。意思就是代理机必须要与客户端和后端服务器的机器都要建设连贯。显然,七层代理对代理设施的性能要求要高于四层代理。

咱们常应用的 Nginx,用作代理服务器的时候,个别都是工作在第七层的。应用 Nginx,咱们能够代理动态文件、ajax 后盾接口、CDN 重定向等等,都是在传输层之上理解内容后做的工作。

七层利用负载的益处,是使得整个网络更智能化。

例如拜访一个网站的用户流量,能够通过七层的形式,将对图片类的申请转发到特定的图片服务器并能够应用缓存技术;将对文字类的申请能够转发到特定的文字服务器并能够应用压缩技术。当然这只是七层利用的一个小案例,从技术原理上,这种形式能够对客户端的申请和服务器的响应进行任意意义上的批改,极大的晋升了利用零碎在网络层的灵活性。很多在后盾,例如 Nginx 或者 Apache 上部署的性能能够前移到负载平衡设施上,例如客户申请中的 Header 重写,服务器响应中的关键字过滤或者内容插入等性能。

另外一个经常被提到性能就是 安全性

网络中最常见的 SYN Flood 攻打,即黑客管制泛滥源客户端,应用虚伪 IP 地址对同一指标发送 SYN 攻打,通常这种攻打会大量发送 SYN 报文,耗尽服务器上的相干资源,以达到 Denial of Service(DoS)的目标。从技术原理上也能够看出,四层模式下这些 SYN 攻打都会被转发到后端的服务器上;

而七层模式下这些 SYN 攻打天然在负载平衡设施上就截止,不会影响后盾服务器的失常经营。另外负载平衡设施能够在七层层面设定多种策略,过滤特定报文,例如 SQL Injection 等利用层面的特定攻打伎俩,从利用层面进一步提高零碎整体平安。

当初的七层代理,次要还是着重于利用 HTTP 协定,所以其利用范畴次要是泛滥的网站或者外部信息平台等基于 B / S 开发的零碎。四层代理则对应其余 TCP 利用,例如基于 C / S 开发的零碎。

05 常见的代理组件

Nginx

Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协定下发行。

其特点是 占有内存少,并发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中体现较好,中国大陆应用 Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

这里能够简略比照下 Nginx 和 Apache 的区别,在资源上,Nginx 占用的内存更少;在性能上,Nginx 的并发能力更强;在社区方面,Nginx 和 Apache 都领有宽泛的使用者,Apache 的插件会比 Nginx 丰盛一些。另外 Nginx 的性能比 Apache 要丰盛一些,Nginx 除了作为 Web 服务器以外,也常常作为反向代理服务器等应用,而 Apache 则次要作为 Web 服务器去应用。

LVS

LVS 这个用的比拟少,LVS 全称是 Linux Virtual Server,也就是 Linux 虚构服务器, 是一个由章文嵩博士发动的自由软件我的项目,它的官方站点是 www.linuxvirtualserver.org。

当初 LVS 曾经是 Linux 规范内核的一部分,在 Linux2.4 内核以前,应用 LVS 时必须要从新编译内核以反对 LVS 功能模块,然而从 Linux2.4 内核当前,曾经齐全内置了 LVS 的各个功能模块,无需给内核打任何补丁,能够间接应用 LVS 提供的各种性能。

LVS 次要用于服务器集群的负载平衡。它工作在 OSI 模型第四层传输层,能够实现高性能,高可用的服务器集群技术。它便宜,可把许多低性能的服务器组合在一起造成一个超级服务器。它易用,配置非常简单,且有多种负载平衡的办法。它稳固牢靠,即便在集群的服务器中某台服务器无奈失常工作,也不影响整体成果。另外可扩展性也十分好。

HAProxy

HAProxy 是一个收费的负载平衡软件,能够运行于大部分支流的 Linux 操作系统上,既能够做四层代理,也能够做七层代理。

HAProxy 也是反对虚拟主机的。HAProxy 的长处可能补充 Nginx 的一些毛病,比方反对 Session 的放弃,Cookie 的疏导;同时反对通过获取指定的 url 来检测后端服务器的状态。

HAProxy 跟 LVS 相似,自身就只是一款负载平衡软件;单纯从效率上来讲 HAProxy 会比 Nginx 有更杰出的负载平衡速度,在并发解决上也是优于 Nginx 的。

HAProxy 反对 TCP 协定的负载平衡转发,比方:能够对 MySQL 读进行负载平衡,对后端的 MySQL 节点进行检测和负载平衡,大家能够用 LVS+Keepalived 对 MySQL 主从做负载平衡。

以上,心愿对你有所帮忙。

作者 | 咚咚呛

本文由 mdnice 多平台公布

正文完
 0