web服务器、应用服务器、web容器、反向代理服务器区别与联系
分类:
文章
•
2023-03-27 15:24:05
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加速
负载均衡
缓存静态内容
压缩
减速上传
安全防火墙
外网发布
突破互联网封锁
解决跨域问题
