Tomcat学习积累笔记---Tomcat的连接器组件---Coyote

Tomcat学习积累笔记—Tomcat的连接器组件—Coyote

1.Coyote简介

Coyote 是Tomcat 中连接器的组件名称 , 是对外的接⼝。客户端通过Coyote与服务器建⽴连接、发送请求并接受响应 。
  1. Coyote 封装了底层的⽹络通信(Socket 请求及响应处理)
  2. Coyote 使Catalina 容器(容器组件)与具体的请求协议(http请求,应用层)IO操作⽅式(有一些IO模型:BIO,NIO等,传输层)完全解耦
  3. Coyote 将Socket 输⼊转换封装为 Request 对象,进⼀步封装后交由Catalina 容器进⾏处理,处理请求完成后, Catalina 通过Coyote 提供的Response 对象将结果写⼊输出流
  4. Coyote 负责的是具体协议(应⽤层)IO(传输层)相关内容
解耦

在这里插入图片描述
在这里插入图片描述

  1. Tomcat Coyote ⽀持的 IO模型与协议,协议对应应用层,IO模型对应传输层
  2. Tomcat⽀持多种应⽤层协议和I/O模型,如下:
    在这里插入图片描述
  3. 在 8.0 之前 ,Tomcat 默认采⽤的I/O⽅式为 BIO,之后改为 NIO。 ⽆论 NIO、NIO2 还是 APR, 在性能⽅⾯均优于以往的BIO。 如果采⽤APR,甚⾄可以达到 Apache HTTP Server 的影响性能。

2.Coyote内部组件及工作流程

在这里插入图片描述

流程分析
  1. 当一个request的http请求过来的时候连接器组件要捕获这个请求
  2. Coyote 的组件EndPoint,指的是一个通信端点,而且Coyote具有处理Socket的通信功能,而且EndPoint就是具体来做处理Socket通信的活的
  3. EndPoint对标是TCP/IP这部分的处理(Sockrt通信的处理),是实现TCP/IP协议的,也是对传输层的抽象,后来会发现他就是做Socket通信编码
  4. 捕获到socket之后将它传入到Processor中,Processor是处理HTTP/AJP的(应用层协议),所以说Processor是应用协议处理接口
  5. Processor解析由EndPoint传过来的socket,读取里面的字节流,将socket解析成Request对象,这个Request对象是tomcat原生的Request对象
  6. Request对象通过AdapterRequest对象转换成ServletRequest对象,之后传递给Container
  7. Containner处理完就开始返回是上面的逆向方式
  8. 可以看出:EndPointProcessorAdapter这三个组件共同完成Coyote的功能
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值