클라이언트?


웹 사용자의 인터넷이 연결된 장치들(e.g. 스마트폰, 노트북, 컴퓨터 등)과 이런 장치들과
이런 장치들에서 웹에 접근할 때 이용하는 소프트웨어(e.g. 크롬, 파이어폭스 등의 웹브라우저)

서버?


웹페이지, 사이트, 앱 등을 저장하는 컴퓨터.
클라이언트의 장비가 웹페이지에 접근하길 원할 때,
서버로부터 클라이언트의 장치로 사용자의 웹 브라우저에서 보여지기 위한 웹 페이지 사본이 다운로드 되는 것

![client_server](./assets/clientServer.png)

> 출처 : http://tcpschool.com/webbasic/works

웹 서버(Web Server)?

  • HTTP 프로토콜을 기반으로 웹 브라우저의 요청을 서비스
  • 정적인 컨텐츠(e.g. ~.html, ~.png, ~jpg, ~.css)를 제공할 때는 WAS를 거치지 않고 바로 제공
  • 동적인 컨텐츠 요청이 들어오면, 해당 요청을 WAS에 보내고, 결과를 WAS가 전달
  • e.g. Apache Server, Nginx, IIS…

웹 애플리케이션 서버(Web Application Server)

  • DB조회 등 로직 처리를 요구하는 동적인 컨텐츠를 HTTP 통신을 통해 제공
  • 웹 컨테이너 혹은 서블릿 컨테이너라고 불림. JSP, Servlet 구동 환경을 제공
  • e.g. Tomcat, JBoss, Jeus, Weo Sphere
  • 동작 프로세스 ```
  1. 웹서버 클라이언트의 요청에 맞는 servlet을 메모리에 올린다.
  2. web.xml을 참조해 해당 servlet에 대한 thread를 생성한다.
  3. HttpServletRequest, HttpServletResponse 객체를 생성하고,
  4. 그에 맞는 doGet / doPost 메소드를 호출, 생성된 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
  5. WAS는 HttpResponse 형태로 바꾸어 웹서버에 전달하고 생성된 스레드와 HttpServletRequest, HttpServletResponse 객체를 제거한다.

```