tomcat如何处理请求

HTTP1.1 

Connection:keep-alive(代表长连接)

Connection:close(关闭连接)

 

 

1:浏览器请求数据,通过tcp/ip和对应的操作系统进行socket连接

2:socket会把请求数据存到操作系统的一个缓冲区中

3:tomcat第一次从socket中获取数据到InputBuffer(字节数组)中(tomcat缓冲区),BIO对应的是InternalInputBuffer

4:通过InputBuffer(缓冲区)进行解析

5:先解析请求行,把请求方法,请求url,和请求协议封装到Request对象中。,

6:再解析请求头,基于请求头初始化一些参数,Connection是keepalive还是是close.

7:然后在交给容器

8:容器再把请求交给具体的servlet进行处理

 

 

一:

 

浏览器和操作系统建立socket连接,每个请求都会分配一个线程

不同的浏览器,和后台建立的socket连接是有一定的数量限制的

如果用ie浏览器 ie是6个连接

用ie浏览器请求10个请求,

最多建立6个socket连接。每个不同的socket连接会处理多个请求

二:在每个请求头上会设置Connection,keepalive还是是close.

如果是请求头带着keepalive到后台,tomcat解析后,会带着keepalive响应给浏览器,同时标注此socket连接数据长连接,其它请求可以通过此连接请求到tomcat。

如果请求头带着close,tomcat解析后,会带着close响应给浏览器,浏览器接收后,关闭此socket连接, 不让其它请求通过此socket发送到后台

三:

tomcat可以设置处理的每个socket,允许有几个请求,如果设置为1,那么不管浏览器,带着keepalive还是close.tomcat处理后,会把colse响应给浏览器。浏览器关闭socket

四:

请求超时,每个socket 会在缓冲区排队等候处理,若果一个tomcat设置超时时间是20s。socket在缓冲区中呆了6s

那么。从socket中读取数据只有14秒。现在会减去socket在缓冲区排队的时间,如果socket在缓冲区呆了超过20秒,那么会抛出此socket超时异常

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值