Tomcat如何处理多个请求

Jay*_*esh 5 containers tomcat servlets java-ee

我知道创建Web应用程序,但我有一个基本的疑问.

我很抱歉提出非常愚蠢的问题,但我想澄清我的怀疑.

Tomcat容器如何处理请求,我的意思是当我发送home.jsp页面的请求时,我只得到home.jsp页面的响应,而不是register.jsp页面,同时可能是其他人给出的请求来自世界其他角落的人.

例如:

Client A --------request(a.jsp)----------> Tomcat (check request received for a.jsp and give proper a.jsp response to client A)

Client B --------request(b.jsp)----------> Tomcat (check request received for b.jsp and give proper b.jsp response to client B)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Tomcat如何在请求者和对正确请求者的响应之间不会混淆.

内部如何工作.

一些解释这一点的链接也会有所帮助.

谢谢.

JB *_*zet 11

您基本上是在询问TCP的工作原理.这是一个相当大的主题.基本上,它可以按原样恢复:Tomcat侦听给定TCP端口上的连接(默认为8080).每次某些浏览器打开与Tomcat的连接时,此连接都由远程主机的IP地址以及此主机用于连接到Tomcat的TCP端口标识.

浏览器通过此连接发送HTTP请求,当请求进入Tomcat时,Tomcat会从其线程池中分配一个线程来处理请求.生成并发送响应后,线程将返回池,准备从任何客户端提供另一个请求.

TCP堆栈本身不是由Tomcat实现的,而是由OS实现的.Java运行时提供java.io.Socket和其他相关类,它们使用操作系统提供的底层TCP IP堆栈.而Tomcat依赖于java.net.Socket和其他相关的类.

  • “每次某个浏览器打开一个到 Tomcat 的连接时,这个连接都是由远程主机的 IP 地址以及该主机用来连接到 Tomcat 的 TCP 端口来标识的。” 在这种情况下,同一台带有两个浏览器的 PC 说 IE 和 Firefox 都将具有相同的 IP 地址,并且都尝试连接到 tomcat 的相同端口 8080 那么这里每个浏览器的区别因素是什么? (3认同)
  • 两者都使用不同的本地端口。连接的每一侧都有一个端口。 (2认同)