web服务器的主要功能 web服务器是什么服务器

我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难 。有意思的是 Web 服务器/Web 容器/Web 应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现 。本文将对这四个概念进行区分 。
虽然主要功能是提供内容,但 HTTP 的完整实现还包括从客户端接收内容的方式 。此功能用于提交 Web 表单,包括上传文件 。
许多通用 Web 服务器还支持使用 Active Server Pages(ASP),PHP 或其他脚本语言的服务器端脚本 。
这意味着 Web 服务器的行为可以在单独的文件中脚本化,而实际的服务器软件保持不变 。
通常,此函数用于动态生成 HTML 文档(“即时”),而不是返回静态文档 。前者主要用于从数据库检索或修改信息;后者通常快得多,并且更容易被缓存,但不能提供动态内容 。
【web服务器的主要功能 web服务器是什么服务器】Web 服务器不仅用于为万维网服务 。它们也可以被嵌入到诸如打印机,路由器,网络摄像机等设备中,并且仅服务于本地网络 。
然后,Web 服务器可以用于监视或管理所讨论的设备的系统的一部分 。
这通常意味着客户端计算机上不需要安装其他软件,因为只需要一个网络浏览器(现在大多数操作系统都包含在内) 。
Web 服务器工作原理
HTTP 协议基于 TCP 协议上,是一个应用层协议,用于用户代理和 Web 服务器进行通信 。
Web 服务器通常采用一问一答的方式进行工作:

  • 在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识 URI,指明动作类型(GET/POST/delete/PUT…)
  • 用户代理解析用户输入 URI 并从中获取目标域名,交由 DNS 服务器解析 。如果 URI 中指定某 IP 地址,就无需这步 。
  • 如果与服务器的会话还没建立,此时先建立 TCP 连接,并完成 HTTP 协商(确定双方均可接受的处理方式,包括协议版本,是否加密,内容格式等等) 。
  • 用户代理把请求内容封装成 HTTP 数据包向服务器发送 。
  • 服务器接收到资源请求并以之前协商好的方式解包并处理 。
  • 服务器请求的资源封装成 HTTP 数据包并返回给用户代理 。
接下来重点说说服务器端的工作原理,如下图:
还有比较多使用 Tomcat,Jetty,WebSphere,WebLogic,Kerstrel 等等 。
Web 应用程序容器概念与基本原理
Web 应用程序容器的由来
Web 服务器的出现标志着 WWW 时代的到来,世界变得更加平面化 。当初尝到甜头的开创者们开始不满足于在互联网上获取静态资源,于是出现了 CGI 脚本来动态获取资源 。
再后来网络发展方向也是朝着增强 Web 服务器动态获取资源的能力前进 。以下是代表性的动态技术:
注:浅蓝色的模块是实现业务程序的主要使用模块
相对于 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 的主机应用管理和监控环境衍生而来的 。
大部分的这些产品都指定了“封闭的”产品专用通信协议来互连胖客户机(“fat” client)和服务器 。
在 90 年代,这些传统的应用服务器产品开始嵌入 HTTP 通信功能,刚开始要利用网关来实现 。不久后它们之间的界线开始变得模糊了 。
同时,Web 服务器越来越成熟,可以处理更高的负载、更多的并发和拥有更好的特性;应用服务器开始添加越来越多的基于 HTTP 的通信功能 。所有的这些导致了 Web 服务器与应用服务器的界限变得更窄了 。
目前,“应用服务器”和“Web 服务器”之间的界限已经变得模糊不清了 。但是人们还把这两个术语区分开来,作为强调使用 。
当有人说到“Web 服务器”时,你通常要把它认为是以 HTTP 为核心、Web UI 为向导的应用 。
当有人说到“应用服务器”时,你可能想到“高负载、企业级特性、事务和队列、多通道通信(HTTP 和更多的协议)” 。但现在提供这些需求的基本上都是同一个产品 。
下图描述一个典型的 Web 应用服务器的结构图:
web服务器的主要功能 web服务器是什么服务器

文章插图
web服务器的主要功能 web服务器是什么服务器

文章插图
web服务器的主要功能 web服务器是什么服务器

文章插图
web服务器的主要功能 web服务器是什么服务器

文章插图
web服务器的主要功能 web服务器是什么服务器

文章插图
关于 Kerstrel 是否是 Web 容器,有两种观点:
  • 由于 Kerstrel 不提供编写应用的框架,所以它不是容器;ASP.NET Core 才是容器,因为它提供了开发应用的框架并提供 Web 应用(MVC,Web API)运行环境 。
  • Kerstrel 提供了运行环境 。
非常欢迎大家提出自己的有力观点,帮助我们清晰化这个 ASP.NET Core 容器概念 。
以上就是网?web服务器是什么服务器(web服务器的主要功能)的相关内容了,更多精彩请关注作者:号SEO专员

    推荐阅读