Tomcat 工作原理

网友投稿 708 2022-11-21

Tomcat 工作原理

Tomcat 工作原理

1 服务器分类

1.1JavaEE 更名

JavaEE,很多人都知道它是社区驱动的企业软件标准。JavaEE 是利用 Java CommunityProcess 开发的,每个版本都集成了符合业界需求的新特性,提供了一个丰富的企业软件平台,提高了应用可移植性,提高了开发人员的工作效率。2018-03-05 日,据国外媒体报道,开源组织 Eclipse 基金会宣布将 JavaEE(EnterpriseEdition)被更名为 JakartaEE(雅加达)。这是 Oracle 将 Java 移交给开源组织 Eclipse 后实现对 Java品牌控制的最新举措。

1.2应用服务器( JavaEE Application Server )

应用服务器是 Java EE 规范的具体实现, 可以执行/驱动基于 JavaEE 平台开发的 web 项目。绝大部分的应用服务器都是付费产品。常见的应用服务:Weblogic(BEA)WebLogic 是 BEA 公司的产品。WebLogic 支持企业级的、多层次的和完全分布式的 Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供 JavaEE 平台所拥有的一切应用服务器的用户来说,WebLogic 是一个十分理想的选择。Webshpere(IBM)WebSphere 是 IBM 公司的产品,WebSphere Application Server 是基于 JavaEE 的应用环境,可以运行多种操作系统平台,用于建立、部署和管理 JavaEE 应用程序。JBoss(RedHad)JBoss 是一个种遵从 JavaEE 规范的、开放源代码的、纯 Java 的 EJB 服务器,对于 JavaEE有很好的支持。Geronimo(Apache)Geronimo 是 Apache 软件基金会的开放源码 J2EE 服务器,是一个符合 J2EE 标准的应用服务器。

1.3Web 容器( Web Server )

只实现了 JavaEE 平台下部分技术标准,如 Servlet,Jsp,JNDI,JavaMail。Web 容器是开源免费的。Tomcat(Apache 开源免费)Tomcat 是 Apache 软件基金会的一款完全开源免费的 Servlet 容器,它是全世界最著名的基于 Java 语言的轻量级应用服务器,它支持 HTML、JS 等静态资源的处理,因此又可以作为轻量级 Web 容器使用Jetty(Jetty 开源免费)Jetty 是挂在 eclipse 基金会下,基于 Java 语言编写的实现 Servlet 规范的 Web 容器。

2 TCP 协议

TCP 是一个可靠的传输协议,在创建连接时会经历三次握手,在断开连接时会经历四次挥手。

2.1建立连接的三次握手

2.2断开连接的四次挥手

3 Http 协议

3.1Http 协议简介

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。HTTP 是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个 HTTP 请求到服务器上指定端口(默认端口为 80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如 HTML 文件和图像。我们称这个应答服务器为源服务器(origin server)。通常,由 HTTP 客户端发起一个请求,创建一个到服务器指定端口(默认是 80 端口)的 TCP 连接。HTTP 服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

3.2Http 协议特点

单向性无状态

3.3Http 工作原理

HTTP 请求/响应的步骤:客户端连接到 Web 服务器一个 HTTP 客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个TCP 套接字连接。例如,HTTP 请求通过 TCP 套接字,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据 4 部分组成。服务器接受请求并返回 HTTP 响应Web 服务器解析请求,定位请求资源。服务器将资源复本写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据 4 部分组成。释放连接 TCP 连接若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放TCP 连接;若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求客户端浏览器解析 HTML 内容客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集。客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示例如:在浏览器地址栏键入 URL,按下回车之后会经历以下流程:浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立 TCP 连接;浏览器发出读取文件(URL 中域名后面部分对应的文件)的 HTTP 请求,该请求报文作为TCP 三次握手的第三个报文的数据发送给服务器;服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;释放 TCP 连接;浏览器将该 html 文本并显示内容;

4 Tomcat 架构介绍

5 Tomcat 组件介绍

5.1Server 组件

Server 是最顶级的组件,代表 Tomcat 的运行实例,一个 JVM 中只会有一个 Server。

5.2Listener 组件

在 Tomcat 生命周期中完成不同的工作。

5.3GlobalNamingResources 组件

集成 JNDI。

5.4Service 组件

指的是一个服务,主要的功能是把 connector 组件和 engine 组织起来,使得通过connector 组件与整个容器通讯的应用可以使用 engine 提供的服务。

5.5Connector 组件

连接器组件,可以配置多个连接器支持多种协议,如 等。

5.6Engine 组件

服务引擎,这个可以理解为一个真正的服务器,内部提供了多个虚拟主机对外服务。

5.7Host 组件

虚拟主机,每一个虚拟主机相当于一台服务器,并且内部可以部署多个应用,每个虚拟主机可以绑定一个域名,并指定多个别名。

5.8Context 组件

应用上下文,每一个 webapp 都有一个单独的 context,也可以理解为每一个 context 代表一个 webapp。

5.9Valva 组件

6 Tomcat 处理请求过程

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:两表映射查询(1)
下一篇:springboot如何读取sftp的文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~