클라이언트와 서버는 역활에 따라 구분되어진다.
- 클라이언트: 서비스를 요청하는 애플리케이션 혹은 컴퓨터 (요청) +저장된 정보를 DB에 보관, 처리, 관리
- 서버: 서비스를 제공하는 애플리케이션 혹은 컴퓨터 (응답)
서버는 또 다시 어떤 서비스를 제공하느냐에 따라 여러 종류로 나뉘게 된다.
- Email server: 이메일 서비스를 제공
- File server: 파일 제공
- Web server: 브라우저를 통해서 받을 수 있는 모든 서비스를 제공!
실제 운영시에는 컴퓨터 한대에 소프트웨어 한 개를 주로 사용하지만
컴퓨터 한 대에 여러 서버 소프트웨어를 설치할 수 있다

ex 웹 서버와 메일 서버를 같은 컴퓨터에 설치 -> 웹 겸 메일 서버가 됨
만약 다음과 같은 서버 컴퓨터에 요청이 들어올 경우 어떤 요청인지 구분을 어떻게 할 수 있을까?
정답: 포트 번호를 통해 요청을 구분한다.
각각의 포트 번호는 각 서버랑 binding 되어 있으며 서버가 해당 포트를 통해 Listening 하고 있다.
+ 포트 번호 0~1023 까지는 예약이 되어 있으며 그것을 제외한 나머지 포트를 사용해야 하는데 약 6만 개의 포트를 사용 가능하다.
웹 애플리케이션 서버(WAS):
- Application(프로그램)
- 하는 일: 서버에 프로그램을 설치해두면 클라이언트가 해당 프로그램을 사용하게 해준다
- 사용하는 이유: 설치된 서버 1곳 만을 업데이트 하면 되기에 업데이트 용이성이 확보되며 클라이언트의 저장 공간을 절약해줄 수 있기 때문에
Tom Cat(WAS)의 작동 방식:
- 클라이언트가 브라우저에서 도메인 주소와 Tom Cat의 포트번호 8080 입력 (ex: http://www.suhanlim.com/event/list:8080)
- tomcat 내부에 있던 Thread Pool중에 한가한 Thread가 사용자 요청 처리
- Connector 파트에서 입력한 도메인 주소의 프로토콜 방식 매칭 ex: http: 는 HTTP1.1 프로토콜
- Engine 파트에서 입력한 도메인의 Host 매칭 일반적으로는 한 개씩만 존재하나 tomcat은 여러개의 도메인이 존재가능 ex: www.suhanlim.com
- Engine 파트안의 Context 매칭 Context는 하나의 Web App 즉 Spring 기준 하나의 STS 프로젝트 ex: event
- Context 파트안의 Servlet 매칭 작은 서버 프로그램 (서버에서 실행되는 작은 프로그램)==컨트롤러 클래스 내부 main 함수 ex: list
'Development > Spring' 카테고리의 다른 글
| Spring의 4개의 저장소 (0) | 2023.01.19 |
|---|---|
| HTTP 프로토콜의 바이너리 파일 전송 (0) | 2023.01.08 |
| 웹과 HTTP 프로토콜 (0) | 2023.01.06 |
| Spring 원격 프로그램과 데이터 주고(request) 받기 (response) (0) | 2023.01.04 |
| Spring 원격 프로그램 실행 과정 (0) | 2023.01.04 |