web应用服务器(什么是web服务器?web服务器的概念与基本原理)

1.1.web服务器的概念和基本原理1.1.1.web服务器的历史

1989年,互联网之父·伯纳斯·Lee向他的雇主CERN提出了一个新项目,通过使用超文本系统来简化科学家之间的信息交流。该项目促使伯纳斯·Lee在1990年准备了两个项目:

  • 一种叫做万维网的浏览器。
  • 世界上第一台网络服务器,后来被称为CERNhttpd,运行在nextstep上
    1991年至1994年期间,用于在万维网上冲浪和交换数据的早期技术的简单性和有效性帮助它们迁移到许多不同的操作系统,在科学组织和大学中使用,然后传播到工业界。

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

web服务器的主要功能是存储、处理和向客户交付网页。客户端和服务器之间的通信使用超文本传输}协议(HTTP)。交付的最常见页面是HTML文档,除了文本内容外,还可能包含图像、样式表和脚本。

用户代理(通常是web浏览器或web爬虫)通过发起HTTP请求来获取服务器资源。服务器根据请求返回资源,或者出于某种原因响应错误消息。此资源通常是服务器辅助存储上的真实文件,但情况并非如此,具体取决于web服务器的实现。

虽然主要功能是提供内容,但HTTP的完整实现还包括从客户端接收内容的方式。此功能用于提交web表单,包括上传文件。许多通用web服务器还支持使用活动服务器页面(ASP)、PHP或其他脚本语言的服务器端脚本。这意味着web服务器的行为可以在单独的文件中编写脚本,而实际的服务器软件保持不变。通常,此函数用于动态生成HTML文档(“即时”),而不是返回静态文档。前者主要用于从数据库中检索或修改信息。后者通常更快、更容易缓存,但不提供动态内容。

网络服务器不仅用于服务万维网。它们还可以嵌入打印机、路由器、网络摄像头等设备中,只为本地网络服务。然后,web服务器可以用作系统的一部分,用于监控或管理相关设备。这通常意味着不需要在客户端计算机上安装其他软件,因为只需要一个web浏览器(现在包括在大多数操作系统中)。

1.1.2.web服务器的工作原理

Liu-Yifei协议是基于TCP协议的应用层协议,用于用户代理和web服务器之间的通信。Web服务器通常以问答方式工作:

  1. 用户在用户代理上发起资源请求。请求内容包括但不限于:指定资源的唯一标识URI并指示操作类型(get/post/delete/put…)
  2. 用户代理解析用户输入的URI,从中获取目标域名,并将其发送到DNS服务器进行解析。如果在URI中指定了IP地址,则无需执行此步骤。
  3. 如果与服务器的会话尚未建立,首先建立TCP连接并完成HTTP的协商(确定双方可接受的处理方法,包括协议版本、加密、内容格式等)。
  4. 用户代理将请求内容封装到HTTP数据包中,并将其发送到服务器。
  5. 服务器接收资源请求,并以先前协商的方式对其进行解包和处理。
  6. 服务器请求的资源被封装到LiuYifei数据包中,并返回给用户代理。

接下来,重点介绍服务器端的工作原理

更多Linux内核视频教程和文本资料。免费获取背景私信[kernel]


  • TCP侦听模块服务器侦听端口(通常默认为端口8080,用户可以设置其他端口)以与用户代理建立连接。一旦建立连接,用户代理的后续HTTP请求将不再进入监控模块。
  • 这里的预处理主要做三件事:1.从TCP消息中获取HTTP请求消息。2.根据与用户代理的协商进行解密、解压、安全处理等。3.根据服务器本身的配置进行安全处理,建立会话状态。
  • Urroute解析URL字符串和操作以确定用户代理请求的资源,并根据匹配规则(通常根据正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块。
  • 静态资源处理模块负责查找静态资源,例如HTML/JavaScript/CSS文件/图片/图像,确定内容是字符流或字节流,并确定相应的mime。例如,HTML生成mime为text/HTML的字符流,MPEG视频文件生成mime为video/MPEG的字流。
  • 动态资源处理模块运行业务逻辑处理,动态确定返回的资源内容和类型。内容和类型的处理原则同上。
  • 后处理根据与用户协商的协议进行加密、压缩、安全处理等。
  • 资源输出模块将处理后的内容和类型封装到HTTP消息中,并将TCP消息(内容为HTTP消息)发送到TCP连接另一端的用户代理。

主流网络服务器

此外,Tomcat、jetty、WebSphere、Weblogic、Kerstrel等也经常使用。

1.2.web应用容器的概念和基本原理1.2.1.web应用程序容器的起源

web服务器的出现标志着WWW时代的到来,世界变得更加平面化。一开始,尝到甜头的先驱者开始对在互联网上获取静态资源感到不满,因此CGI脚本出现了动态获取资源的趋势。后来,网络的发展方向也朝着增强web服务器动态获取资源的能力的方向发展。以下是具有代表性的动态技术:

|技术术语|特性|
|:-------------|:-------------|:-------------|
|CGI(公共网关接口)作为一个独立的进程运行,可以用多种语言开发,如C、C++、VB和Perl。它是灵活的,但效率低,维护复杂|
|PHP|服务器端嵌入式HTML脚本,开源,功能强大,可扩展性差|
|JSP|HTML脚本嵌入到服务器中,服务器是跨平台的,需要在部署前编译。主要缺点是编写JSP很复杂,需要熟悉Java和相关技术
|ASP|服务器端嵌入HTML脚本,开发简单,功能强大,只能在windows下运行|

随后,web服务器正朝着企业应用程序的方向发展。快速的业务变化迫使web开发人员面临新的挑战:如何快速编写健壮、可靠且符合业务要求的程序并顺利部署它们?解决这一挑战的有效方法是创建一个web程序开发框架(包括运行环境,如解释和执行JSP和webAPI)。该框架解决了健壮性和可靠性问题,并提供了快速开发接口。换句话说,开发人员只需要关注业务本身的实现。如果有更高的要求,他们可以定制和扩展框架。这个框架的另一个名称是web应用程序容器。

1.2.2.web应用容器的基本工作原理

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

  • allocatethreadpool资源容器为每个要处理的请求分配一个线程。它通常采用线程池的方法来高效地计算CPU资源。
  • 封装请求上下文。请求对应于请求上下文。它主要封装了用户请求的主要组件:URL、HTTP请求头、会话、cookie等基于请求头构建的对象,便于编程。
  • 封装响应上下文。请求对应于响应上下文,该上下文主要用于将资源返回给用户代理。您可以编写输出流、重定向、返回错误代码等等。
  • URL路由在容器中,正在运行的开发人员设置不同的路由匹配规则,例如HtmreturnHTML,也可以自定义XYZreturnsHTML资源。有关更灵活的配置,请参阅JavaMVC或ASPNetMVC配置方案。
  • 对于特定的容器和开发语言,动态资源处理模块通常有自己的高效开发模型,例如JavaServlet和ASPNetWeb表单、MVC。
  • 回收资源这里将回收刚才的线程资源。对于线程重用,除非服务器空闲,否则线程通常会返回到线程池。可以看出,web容器本身具有作为web服务器的功能。实际上,通常实现web容器功能的服务器是web服务器,例如Tomcat、IIS、jetty。

主流网络容器

包括Tomcat、IIS和jetty。

WebSphere、Weblogic等的使用越来越多。

1.3.web应用服务器的概念和基本原理

在web服务器发展的同一时期,应用服务器已经存在和发展了很长时间。一些公司已经为UNIX开发了Tuxedo(面向事务的中间件)、Topend、encina等产品。这些产品源自与IMS和CICS类似的主机应用程序管理和监视环境。这些产品中的大多数都指定了一个“封闭的”特定于产品的通信协议来互连胖客户机和服务器。20世纪90年代,这些传统的应用服务器产品开始嵌入HTTP的通信功能,这是通过使用网关实现的。很快,他们之间的界限开始模糊。

同时,web服务器越来越成熟,能够处理更高的负载、更多的并发性,具有更好的特性;应用服务器开始在HTTP的基础上增加越来越多的通信功能。所有这些都导致web服务器和应用服务器之间的界限变得更窄。

目前,“应用服务器”和“web服务器”之间的界限已经变得模糊。然而,这两个术语也有区别并用作强调。

当有人谈论“web服务器”时,你通常认为它是一个以HTTP为核心、以webUI为向导的应用程序。当有人谈到“应用服务器”时,你可能会想到“高负载、企业特性、事务和队列、多通道通信(HTTP和更多协议)”。但现在这些要求基本上是由同一个产品提供的。

Web应用服务器包括Web容器和内置的支持企业应用的事务、安全、集成、通信、高可用性等功能,大大减少了重复开发的数量,保证了业务系统的快速开发和部署,它本身也是一个Web服务器。web应用服务器可以选择使用大型制造商的Weblogic和WebSphere等重量级产品,或者使用Tomcat和jetty等web容器和第三方框架(spring、hibernate等)来构建自己的应用服务器网络核心平台,可以选择IIS、Apache、nginx和ASP网络核心构建。

1.4.反向代理的概念和基本原则1.4.1.反向代理的基本概念

反向代理是一种代理服务器。根据客户端的请求,它从后端服务器(如web服务器)获取资源,然后将这些资源返回给客户端。与前向代理不同,前向代理用作将在Internet上获得的资源返回给相关客户端的媒介,而反向代理用作服务器(如web服务器)上的代理,而不是客户端上的代理。客户端可以通过正向代理访问许多不同的资源,而反向代理意味着许多客户端通过它访问不同后端服务器上的资源,而不知道这些后端服务器的存在,并且认为所有资源都来自这个反向代理服务器。

Internet中的请求被发送到反向代理,反向代理将请求转发到intranet中的服务器。

反向代理的主要功能有:

  • 加密和SSL加速
  • 负载平衡
  • 缓存静态内容
  • 压紧
  • 放慢上传速度
  • 安全防火墙
  • 网络出版
  • 打破互联网封锁
  • 解决跨领域问题
1.4.2.反向代理的基本工作原理
  • TCP监控模块监控TCP请求。这里的请求指的是其消息内容是应用层协议(如HTTP、FTP、电子邮件和其他应用层协议)的请求。至于是否会生成一个单独的线程来开始处理,这取决于服务器。目前,最流行的是先进入消息队列,然后异步处理,这可以极大地提高代理的吞吐量和稳定性。
  • 匹配代理服务器。代理服务器基于一个表(该表存储InternetURL和intranet服务器之间的对应关系,通常需要手动设置)。如果匹配,它将继续处理。否则,它将根据互联网协议返回错误信息,例如返回404的HTTP协议。
  • 在大规模互联网应用中应用负载均衡策略,为了提高系统的整体稳定性,解决单点问题,需要根据用户定义的策略合理地将消息转发到代理服务器。简单的策略是哈希分布或随机分布,通常可以由用户配置和选择。
  • 这里的预处理、解密、安全、会话、解压缩和其他处理都是根据协商的extranet应用协议进行的。
  • 根据协商的intranet应用协议生成新生成的网络消息。这里可以执行加密、安全、会话、压缩和其他处理。
  • 转发到代理服务器,并将新生成的网络消息发送到intranet服务器(web服务器、FTP服务器、邮件服务器或其他服务器)。
  • 接受网络消息并接受内网服务器反馈的网络消息。
  • 这里的预处理、加密、安全、会话、压缩和其他处理都是根据协商的extranet应用协议进行的。
  • 此时,资源输出模块生成满足extranet应用程序协议要求的消息,并将其发送到extranet连接的另一端(用户代理)。

公共反向代理服务器

你必须记住他们的名字:ngnix,IIS,Apache。 1.5.总结

从概念上讲:Web服务器是一个提供www服务的程序;Web容器是开发人员的框架;web应用服务器的内容更加丰富。它可以由通常遵循特定行业标准和定制扩展功能的各种制造商组成,也可以通过开源组件的轻量级组装来构建;反向代理服务器在企业应用中非常出色。它具有集中安全、负载平衡等优点。现在这四个概念的界限变得越来越模糊。看看这张桌子:

软件术语

网络服务器

Web容器

Web应用服务器

我可以反向代理吗

免费web服务器网站

IIS


Nginx



阿帕奇



Tomcat



码头



WebSphere


网络逻辑


Kerstrel



Http。系统



对于Kerstrel是否是一个网络容器,有两种观点:

1.由于Kerstrel没有提供编写应用程序的框架,因此它不是一个容器;asp。Net核心是容器,因为它提供了开发应用程序的框架,并提供了Web应用程序(MVC、WebAPI)的运行环境。

2.Kerstrel提供了运营环境。

非常欢迎您提出您的强烈意见,以帮助我们澄清ASPNet核心容器的概念。

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友