Tomcat的最重要的两大组件就是网络框架Coyote和Servlet容器Catalina,前者封装了底层的网络通信(Socket请求及响应),后者负责处理具体的业务。
Connector中介绍几个核心概念:
名词 | 描述 |
Endpoint | Coyote通信端点,通信监听Socket的接口,是对传输层的抽象。抽象类为AbstractEndpoint |
Processor | Coyote协议处理接口,负责构造Request和Response对象,并通过CoyoteAdapter将其交由Catalina容器处理,是对应用层的抽象。 |
ProtocolHandler | Coyote协议接口,通过封装Endpoint和Processor,实现针对具体协议的处理。 |
UpgradeProtocol | HTTP升级协议,用于处理HTTP/2 |
Connector处理请求如下图:
Tomcat自8.5版本开始支持HTTP/2,相对于HTTP/1.1的改进有:
1、采用二进制格式传输数据而非HTTP/1.1的文本格式
2、HTTP/2对消息头采用了HPACK压缩,提升了传输效率
3、基于帧和流的多路复用,真正实现了一个TCP连接多请求并发处理
4、支持服务器主动推送
HTTP/2与HTTP/1.1形象的比对图如下:
想要详细了解HTTP/2协议的,请查看https://en.wikipedia.org/wiki/HTTP/2
Tomcat想要配置使用HTTP/2协议的: