In the real world, the server (called also web server) and the application server are two distinct things but work together :
- the (web) server processes incoming network requests over the HTTP protocol.
Httpd Apache, IIS and nginx are web servers.
- the application server is a software framework that provides both facilities to create web applications and a server environment to run them.
About Servlet/JSP, these are neither servers nor web applications. These are elementary parts of a web application (WAR file or exploded WAR in a directory).
The web applications (a WAR in Java) are deployed on an application server (Servlet Container in Java). Tomcat and Jetty represent this kind of server.
These servers rely generally on a web server for multiple reasons : serve HTTP static resources (images, css, js...), proxy benefits, SSL and so for...
Here is schema of how a request and its response are transmitted through the different nodes (the numbers between parenthesis represent the order in the sequence) :
Web browser | Web server | Tomcat | web app targeted
http request : req (1) -> req (2) -> req (3) -> req (4)
http response : res (8) <- res (7) <- res (6) <- res (5)
Note that in local environments, you may not have a web server configured with the tomcat. So you can consider this node as optional in the schema.
As a side note, in the Java world, you have also the Java EE servers that are really another thing. They have to implement the JEE server standards. JBoss, Glassfish or Weblogic are examples of them.
These are an alternative to Servlet Container but are less and less used as heavier.