클라이언트와 서버는 역활에 따라 구분되어진다.

  • 클라이언트: 서비스를 요청하는 애플리케이션 혹은 컴퓨터  (요청) +저장된 정보를 DB에 보관, 처리, 관리
  • 서버: 서비스를 제공하는 애플리케이션 혹은 컴퓨터 (응답)

서버는 또 다시 어떤 서비스를 제공하느냐에 따라 여러 종류로 나뉘게 된다.

  • Email server: 이메일 서비스를 제공
  • File server: 파일 제공
  • Web server: 브라우저를 통해서 받을 수 있는 모든 서비스를 제공!

실제 운영시에는 컴퓨터 한대에 소프트웨어 한 개를 주로 사용하지만 

컴퓨터 한 대에 여러 서버 소프트웨어를 설치할 수 있다 

ex 웹 서버와 메일 서버를 같은 컴퓨터에 설치 -> 웹 겸 메일 서버가 됨

 

만약 다음과 같은 서버 컴퓨터에 요청이 들어올 경우 어떤 요청인지 구분을 어떻게 할 수 있을까?

정답: 포트 번호를 통해 요청을 구분한다.

각각의 포트 번호는 각 서버랑 binding 되어 있으며 서버가 해당 포트를 통해 Listening 하고 있다.

+ 포트 번호 0~1023 까지는 예약이 되어 있으며 그것을 제외한 나머지 포트를 사용해야 하는데 약 6만 개의 포트를 사용 가능하다.

 

웹 애플리케이션 서버(WAS): 

  • Application(프로그램)
  • 하는 일: 서버에 프로그램을 설치해두면 클라이언트가 해당 프로그램을 사용하게 해준다
  • 사용하는 이유: 설치된 서버 1곳 만을 업데이트 하면 되기에 업데이트 용이성이 확보되며 클라이언트의 저장 공간을 절약해줄 수 있기 때문에

Tom Cat(WAS)의 작동 방식:

  1. 클라이언트가 브라우저에서 도메인 주소와 Tom Cat의 포트번호 8080 입력 (ex: http://www.suhanlim.com/event/list:8080)
  2.  tomcat 내부에 있던 Thread Pool중에 한가한 Thread가 사용자 요청 처리
    1. Connector 파트에서 입력한 도메인 주소의 프로토콜 방식 매칭 ex: http: 는 HTTP1.1 프로토콜 
    2. Engine 파트에서 입력한 도메인의 Host 매칭 일반적으로는 한 개씩만 존재하나 tomcat은 여러개의 도메인이 존재가능 ex: www.suhanlim.com
    3. Engine 파트안의 Context 매칭 Context는 하나의 Web App 즉 Spring 기준 하나의 STS 프로젝트 ex: event
    4. Context 파트안의 Servlet 매칭 작은 서버 프로그램 (서버에서 실행되는 작은 프로그램)==컨트롤러 클래스 내부 main 함수 ex: list 

 

 

 

 

+ Recent posts