- 클라이언트와 서버
- 서버의 종류
- 서버의 포트
- 웹 애플리케이션 서버(WAS)란?
- Tomcat의 내부구조⭐⭐⭐
1. 클라이언트와 서버
1. 클라이언트
computer = client computer
browser = client application
2. 서버
Server = server computer
Tomcat = server application
클라이언트와 서버를 구분짓는 기준은 컴퓨터의 크기나 성능이 아니라 역할에 따라 달라진다. 일상 생활에 쓰는 컴퓨터도 서버 컴퓨터가 될 수 있다. 클라이언트도 서비스를 제공하면 서버가 될 수 있다.
2. 서버의 종류
서버의 종류는 어떤 서비스를 제공하는지에 따라 다르다. Email server는 Email 서비스를 제공하고 File server는 File 서비스 제공한다. 그러면 Web server에서 Web 서비스를 제공한다는 말이 뭘까? 브라우저로 볼 수 있는 모든 것을 Web이라 생각하면 쉽다. 유튜브, 이미지 등 브라우저에 보여지는 모든 것이 웹서버가 제공하는 Web 서비스이다.
3. 서버의 포트
클라이언트는 한 개의 IP 주소(111.22.33.44)를 갖고 있는데 여러 개의 서버에 어떻게 접근할 수 있을까?
이 때 필요한 것이 port 번호(port#)이다. 포트 번호로 Server 컴퓨터에 있는 여러 Server에 접근할 수 있다. 따라서 클라이언트가 본인의 IP주소와 포트번호를 이용해서 서버 접근이 가능하다. Web server의 포트 번호는 :80으로 생략 가능하지만, Tomcat의 포트 번호는 :8080로 생략 불가능하다.
포트 번호는 하나의 Server하고만 1:1 연결되야 한다. Eamil server는 포트번호 25, File server는 포트번호 22로 독립된 번호를 부여받는다. 서버와 포트번호가 1:1 대응 되는 것을 binding이라 한다. 포트 번호를 부여받고 Server가 켜지면 각 Server는 클라이언트의 요청을 기다리는데 이를 Listening이라 한다.
참고로 포트번호는 0~65535까지 약 6만개가 있고, 0~1023까지는 예약되어 있어 개인이 사용할 수 없다. Tomcat은 그 중에 8080을 쓰고 있다.
4. 웹 애플리케이션 서버(WAS)란?
Web Server는 서버 컴퓨터의 서버 중 한 개이고 고유한 포트 번호가 있다. 그런데 갑자기 Web Application Server는 왜 나올까? Email Server는 email 서비스를 File Server는 file을 등록하거나 다운받는 서비스를 할 테고, Web Application Server는 Web Application을 서비스할 것이다. 이때, Web Application의 용어가 확 와닿지 않는다.
Application은 프로그램이다. 클라이언트는 서버 컴퓨터에 설치된 프로그램을 간접적으로 사용한다. 서버 컴퓨터에도 많은 프로그램이 설치되있지만 클라이언트가 원격으로 호출할 수 있는 프로그램을 Application이라 한다. 이런 환경을 제공하는 것이 Web Application Server(WAS)이고 톰캣이 가장 많이 쓰이는 WAS이다.
옛날에는 클라이언트 PC마다 프로그램을 설치했다. 사용자가 많으면 모든 PC를 업데이트하는 것이 쉽지 않다. 심지어 90년대에는 업데이트를 하기 위해 외국으로 출장 가는 일도 빈번했다. WAS를 사용하면 서버 컴퓨터에 설치된 프로그램만 업데이트하면 된다. 또한 클라이언트의 PC에 프로그램을 설치하지 않아 공간이 절약된다.
5. Tomcat의 내부구조⭐⭐⭐
1. Server(Tomcat)
브라우저 URL로 :8080 서버에 요청이 가면 Thread가 이를 처리하려고 기다리고 있다. 미리 Thread Pool을 만들어 사용자의 요청이 들어오면 한가한 Thread가 요청을 맡는다.
2. Service
Server(Tomcat) 안에는 Service가 있는데 사용자의 요청을 처리하는 녀석이다. Service 안에는 Connector가 있고 요청할 때 어떤 Protocol로 요청했느냐에 따라서 Connector가 달라진다.
3. Engine(Catalina)
Connector가 요청을 Engine에게 전달하는데 이 Engine의 이름은 Catalina이다. 정리하면 Server(Tomcat)안에 Service가 있고 이를 실제로 처리하는 것은 Engine이다. Engine에는 여러 개의 Host가 존재한다.
4. Context
여러 Context가 STS에 한 개의 project안에 있다. 여러개의 Context를 통틀어 Web App이라 하고 STS prj와 같다. 반대로 생각하면 여러개의 Web App이 하나의 Host에 존재할 수 있다. 따라서 Context = Web App = STS prj는 서로 동립된 공간에서 영향을 주지 않는다.
5. Servlet
Context안에는 많은 Servlet이 있는데, let을 '작다'라는 뜻이고, Servlet은 작은 서버 프로그램이 된다. 같은 context안에서는 여러 Servlet 즉 서버 프로그램이 실행 가능하다. 우리의 URL을 보면 /list가 프로그램이고 작업결과를 컴퓨터에게 전달한다.
'스프링의 정석 > Ch. 02 Spring MVC' 카테고리의 다른 글
ch2_05. 클라이언트와 서버(3) (0) | 2023.04.12 |
---|---|
ch2_04. HTTP 요청과 응답 - 예제 (0) | 2023.04.10 |
ch2_03. HTTP 요청과 응답 - 실습 (0) | 2023.04.10 |
ch2_01. 원격 프로그램 실행 (0) | 2023.04.08 |
ch2_05. 클라이언트와 서버(1) (0) | 2023.04.02 |