代理网页服务器(免费网页代理浏览器)

"我们知道,不同肤色的人,外貌差异很大,很难识别双胞胎。有趣的是,Web服务器/Web容器/Web应用服务器/反向代理有点像四胞胎,经常一起出现在网络上。本文将

"

我们知道,不同肤色的人,外貌差异很大,很难识别双胞胎。有趣的是,Web服务器/Web容器/Web应用服务器/反向代理有点像四胞胎,经常一起出现在网络上。本文将区分这四个概念。

代理网页服务器(免费网页代理浏览器)插图

小可爱可爱的小东西

Web 服务器概念与基本原理

Web服务器的历史

1989年,互联网之父伯纳斯·李向他的雇主欧洲核子研究中心提出了一个新项目,旨在通过使用超文本系统方便科学家之间的信息交流。

这个项目促使Berners-Lee在1990年编写了两个程序:

一个名为 World Wide Web 的浏览器。世界上第一个网络服务器,后来被称为 CERN httpd,它运行在 NeXTSTEP 上在 1991 年至 1994 年期间,用于通过万维网冲浪和交换数据的早期技术的简单性和有效性有助于将其移植到许多不同的操作系统,并将其用于科学组织和大学,然后传播到行业。

1994年,Berners-Lee决定成立万维网联盟(W3C)来管理许多相关技术(HTTP、HTML等)的进一步发展。)通过标准化流程。

这是服务器:

代理网页服务器(免费网页代理浏览器)插图(1)

Web服务器的主要功能是存储、处理和向客户交付网页。客户端和服务器之间的通信使用超文本传输协议(HTTP)来执行。

最常见的交付页面是HTML文档,除了文本内容之外,可能还包含图像、样式表和脚本。

一个用户代理,通常是Web浏览器或者Web爬虫,发起HTTP请求获取服务器资源,服务器根据请求返回资源或者响应某种原因的错误消息。

这种资源通常是服务器辅助存储器上的真实文件,但根据Web服务器的实现,情况不一定如此。

代理网页服务器(免费网页代理浏览器)插图(2)

虽然主要功能是提供内容,但是HTTP的完整实现还包括从客户端接收内容的方式。此功能用于提交Web表单,包括上传文件。

许多通用Web服务器也支持使用动态服务器页面(ASP)、PHP或其他脚本语言的服务器端脚本。

这意味着Web服务器的行为可以编写在一个单独的文件中,而实际的服务器软件保持不变。

通常,该函数用于动态生成HTML文档(“实时”),而不是返回静态文档。前者主要用于从数据库中检索或修改信息;后者通常更快,更容易缓存,但它不能提供动态内容。

网络服务器不仅用于服务万维网。它们也可以嵌入到打印机、路由器、网络摄像机等设备中。,并且只服务于本地网络。

然后,网络服务器可以用于监控或管理所讨论的设备的系统的一部分。

这通常意味着不需要在客户端计算机上安装其他软件,因为只需要一个web浏览器(现在包含了大多数操作系统)。

Web服务器的工作原理

HTTP是基于TCP的应用层协议,用于用户代理和Web服务器之间的通信。

Web服务器通常以问答的方式工作:

在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识 URI,指明动作类型(GET/POST/DELETE/PUT…)用户代理解析用户输入 URI 并从中获取目标域名,交由 DNS 服务器解析。如果 URI 中指定某 IP 地址,就无需这步。如果与服务器的会话还没建立,此时先建立 TCP 连接,并完成 HTTP 协商(确定双方均可接受的处理方式,包括协议版本,是否加密,内容格式等等)。用户代理把请求内容封装成 HTTP 数据包向服务器发送。服务器接收到资源请求并以之前协商好的方式解包并处理。服务器请求的资源封装成 HTTP 数据包并返回给用户代理。

接下来,我们来重点介绍一下服务器的工作原理,如下图所示:

代理网页服务器(免费网页代理浏览器)插图(3)

TCP监听模块:服务器监听某个端口(一般默认端口为8080,用户可以设置其他端口)与用户代理建立连接。一旦建立了连接,来自用户代理的后续HTTP请求将不需要进入监听模块。

预处理:这里主要做三件事:从TCP消息中获取HTTP请求消息,根据与用户代理的协商进行解密、解压缩、安全处理等。根据服务器本身的配置,进行安全处理,建立会话状态等等。

UR路由:解析URL字符串和动作,确定用户代理请求的资源,根据匹配规则(通常是正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块。

静态资源处理模块:负责查找静态资源,如HTML/JavaScript/CSS文件/图片/图像,确定内容是字符流还是字节流,确定对应的MIME。

比如HTML生成的是MIME为text/html的字符流,mpeg视频文件生成的是MIME为video/mpeg的字节流。

动态资源处理模块:运行业务逻辑处理,动态确定返回资源的内容和类型。内容和类型的处理原则同上。

后期处理:根据与用户协商的协议进行加密、压缩、安全处理等。

输出模块:将处理后的内容和类型封装成HTTP消息,并将TCP消息(内容为HTTP消息)发送给TCP连接另一端的用户代理。

主流Web服务器

Apache、IIS和Nginx的市场份额如下:

代理网页服务器(免费网页代理浏览器)插图(4)

Tomcat,Jetty,WebSphere,WebLogic,Kerstrel等等也是广泛使用的。

Web 应用程序容器概念与基本原理

Web应用程序容器的来源

Web服务器的出现标志着WWW时代的到来,世界变得更加扁平。当初尝到甜头的先行者并不满足于在互联网上获取静态资源,于是出现了CGI脚本来动态获取资源。

后来网络发展的方向是增强Web服务器动态获取资源的能力。以下是代表性的动态技术:

代理网页服务器(免费网页代理浏览器)插图(5)

Web应用容器的基本工作原理

通常,Web应用程序容器由以下系统组成:

代理网页服务器(免费网页代理浏览器)插图(6)

注意:浅蓝色模块是用于实现业务程序的主要模块。

与Web服务器相比,容器增加或加强了以下模块:

分配线程池资源,容器为每个请求分配一个线程进行处理,通常采取线程池的方式高效率由 CPU 算资源。封装 Request 上下文,一个请求对应一个 Request 上下文,它主要封装了用户请求的主要构成。URL,HTTP 请求头,以及基于请求头构建的 Session,Cookie 等对象,方便编程使用。封装 Response 上下文,一个请求对应一个 Response 上下文,主要用于向用户代理返回资源。可以在其中写入输出流,或者重定向,或者返回错误码等等。URL 路由,在容器里,运行开发人员设置不同的路由匹配规则,比如让 .HTM 返回 .HTML,也可以自定义 .xyz 返回 .HTML 资源。更加灵活的配置可以参考 Java MVC 或者 ASP.NET MVC 的配置方案。动态资源处理模块,通常在这里具体的容器和开发语言都有自己的高效开发模型,比如 Java 的 Servlet,ASP.NET 的 Web Form,MVC。回收资源,这里会回收刚才的线程资源,为了线程复用,除非服务器空闲一般会将线程返回线程池。可以看出,Web 容器本身具备了做为一个 Web 服务器的功能,事实上通常实现 Web 容器功能的服务器就是一个 Web 服务器。比如 Tomcat,IIS,Jetty。

主流Web容器

包括Tomcat、IIS、Jetty。WebSphere、WebLogic等。也被广泛使用。

Web应用服务器的概念和基本原理

在Web服务器发展的同时,应用服务器也长期存在和发展。

一些公司为Unix开发了Tuxedo(面向事务的中间件)、TopEnd、Encina和其他产品,这些产品都是从IMS和CICS这样的主机应用程序管理和监控环境中派生出来的。

这些产品中的大多数都指定了一个“封闭的”特定于产品的通信协议来互连胖客户端和服务器。

到了90年代,这些传统的应用服务器产品开始嵌入HTTP通信功能,起初要使用网关来实现。很快他们之间的界限开始模糊。

与此同时,Web服务器也越来越成熟,可以处理更高的负载、更多的并发和更好的功能。应用服务器开始增加越来越多的基于HTTP的通信功能。所有这些都导致了Web服务器和应用服务器之间界限的缩小。

目前,“应用服务器”和“Web服务器”的界限已经变得模糊。但人们也区分这两个术语以示强调。

当有人说“Web服务器”时,你通常会认为它是一个以HTTP为核心,以Web UI为向导的应用程序。

当有人谈到“应用服务器”时,你可能会想到“高负载、企业级特性、事务和队列、多渠道通信(HTTP和更多协议)”。但是现在基本上同样的产品提供了这些需求。

下图描述了一个典型的Web应用服务器的结构图:

代理网页服务器(免费网页代理浏览器)插图(7)

从上图可以看出,Web应用服务器包括Web容器,内置了事务、安全、集成、通信、高可用等功能。支持企业应用程序。

它大大减少了重复开发的量,保证了业务系统的快速开发和部署,同时它还是一个Web服务器。

Web应用服务器可以选择使用大厂商的WebLogic、WebSphere等重量级产品。

你也可以使用像Tomcat和Jetty这样的Web Containner加上第三方框架(Spring、Hibernate等)。)来构建自己的应用服务器;;在下面。NET核心平台,可以选择IIS、Apache、Nginx和ASP.NET核心来构建。

反向代理概念与基本原理

反向代理的基本概念

反向代理是代理服务器的一种。它根据客户端的请求,从后端服务器(比如Web服务器)获取资源,然后将这些资源返回给客户端。

与正向代理不同,正向代理作为一种媒介,将在互联网上获得的资源返回给相关联的客户端,而反向代理用作服务器端(如Web服务器)的代理,而不是客户端。

客户端可以通过正向代理访问很多不同的资源,而反向代理是指很多客户端通过它访问不同后端服务器上的资源,不知道这些后端服务器的存在,以为所有的资源都来自这个反向代理服务器。

代理网页服务器(免费网页代理浏览器)插图(8)

互联网中的请求被发送到反向代理,反向代理将请求转发到内部网中的服务器。

反向代理的主要功能是:

加密和SSL加速负载均衡缓存静态内容压缩减速上传安全防火墙外网发布突破互联网封锁解决跨域问题

反向代理的基本工作原理

反向代理服务器的组成和处理过程如下:

代理网页服务器(免费网页代理浏览器)插图(9)

左边浅黄色的功能模块处理外网报文,右边灰色的功能模块处理内网报文。

TCP监控模块

TCP监控请求,这里的请求是指消息内容为应用层协议(如HTTP、FTP、Email等应用层协议)的请求。

至于这里是否会生成一个单独的线程开始处理,这个就看服务器自己了。目前最流行的方法是先进入消息队列,然后异步处理,这样可以大大提高代理的吞吐量和稳定性。

匹配代理服务器

根据一个表(存储外网URI和内网服务器的对应关系,通常需要手动设置),匹配的话代理会继续处理,否则会根据外网协议,比如HTTP协议返回错误消息,这个会返回404。

应用负载平衡策略

对于大型互联网应用,为了稳定整个系统,解决单点问题,需要根据用户自定义的策略,将消息合理地转发到代理服务器。简单的策略是哈希分布或者随机分布,一般可以由用户配置和选择。

预处理

这里根据协商好的外网应用协议进行解密、安全、会话、解压缩等处理。

生成新的网络消息

这里按照约定的内网应用协议生成网络消息,加密、安全、会话、压缩等处理都可能在这里进行。

转发到代理服务器

将新生成的网络消息发送到内部网服务器(可能是Web服务器、FTP服务器、邮件服务器)。

接受网络消息

接受内网服务器反馈的网络消息。

预处理

在这里,加密、安全、对话、压缩等。根据商定的外部网络应用协议进行处理。

资源输出模块

此时,生成符合外网应用协议要求的消息,并发送给外网连接的另一端(用户代理)。

通用反向代理服务器

你必须记住他们的名字:Ngnix,IIS,Apache。

总结

从概念上讲:

Web 服务器是提供 WWW 服务的程序。Web 容器是提供给开发者的框架。Web 应用程序服务器内容丰富得多,既可由各厂商通常遵循一定的工业标准并自定义扩展功能而成,也可以利用开源组件轻量级拼装打造。反向代理服务器在企业级应用中表现突出,具有解决集中式安全,负载均衡等等优点。

如今,这四个概念的界限越来越模糊。看看这张表:

代理网页服务器(免费网页代理浏览器)插图(10)

关于Kerstrel是否是Web容器有两种观点:

由于 Kerstrel 不提供编写应用的框架,所以它不是容器;ASP.NET Core 才是容器,因为它提供了开发应用的框架并提供 Web 应用(MVC,Web API)运行环境。Kerstrel 提供了运行环境。

我们欢迎您的强烈意见,以帮助我们澄清ASP.NET核心集装箱的概念。

参考资料:

https://en.wikipedia.org/wiki/Web_serverhttp://www.cnblogs.com/vipyoumay/p/5853694.htmlhttps://zh.wikipedia.org/wiki/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86

作者:帅虫哥出处:cnblogs.com/vipyoumay/p/7455431.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/106667.html

发表回复

登录后才能评论