web服务器、应用服务器、web容器、反向代理服务器区别与联系

版权声明:懦怯囚禁人的灵魂,希望可以令你感受自由。强者自救,圣者渡人 https://blog.csdn.net/yeiweilan/article/details/82657358

Web服务器工作原理

  • HTTP协议基于TCP协议上,是一个应用层协议,用于用户代理和Web服务器进行通信。Web服务器通常采用一问一答的方式进行工作:
    在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识URI,指明动作类型(GET/POST/DELETE/PUT…)
    用户代理解析用户输入URI并从中获取目标域名,交由DNS服务器解析。如果URI中指定某IP地址,这无需这步。
    如果与服务器的会话还没建立,此时先建立TCP连接,并完成HTTP协商(确定双方均可接受的处理方式,包括协议版本,是否加密,内容格式等等)。
    用户代理把请求内容封装成HTTP数据包向服务器发送。
    服务器接收到资源请求并以之前协商好的方式解包并处理。
    服务器请求的资源封装成HTTP数据包并返回给用户代理。
  • Web服务器的主要功能是存储,处理和传递网页给客户。客户端和服务器之间的通信使用超文本传输协议(HTTP)进行。交付的页面最常见的是HTML文档,除了文本内容之外,还可能包含图像,样式表和脚本。

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服务器”时,你通常要把它认为是以HTTP为核心、web UI为向导的应用。当有人说到“应用服务器”时,你可能想到“高负载、企业级特性、事务和队列、多通道通信(HTTP和更多的协议)”。但现在提供这些需求的基本上都是同一个产品。

反向代理服务器

  • 反向代理的主要作用为:
    加密和SSL加速
    负载均衡
    缓存静态内容
    压缩
    减速上传
    安全防火墙
    外网发布
    突破互联网封锁
    解决跨域问题

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yeiweilan/article/details/82657358