TIL | Spring 클라이언트와 서버

김윤희·2022년 8월 1일
0

클라이언트와 서버

클라이언트와 서버


  • 클라이언트(client) : 서비스를 요청하는 애플리케이션(or 컴퓨터)
  • 서버(server) : 서비스(service)를 제공하는 애플리케이션(or 컴퓨터)

명확하게 부분을 나눠보자면
클라이언트의 브라우저가 클라이언트 애플리케이션
클라이이언트의 컴퓨더
서버 컴퓨터
Tomcat은 서버 애플리케이션으로 볼 수 있다
(역할에 따른 구분이다 서비스를 요청하는게 클라이언트고, 서비스를 제공하는게 서버)

✔ 애플리케이션이란?
기술, 시스템 및 제품 등을 사용하는 것을 말한다
애플리케이션이란 애플리케이션 프로그램, 즉 응용프로그램의 줄임 말이다
응용프로그램은 사용자 또는 어떤 경우에는 다른 응용프로그램에게, 특정한 기능을 직접 수행하도록 설계된 프로그램이다



서버의 종류


  • 서버의 종류는 여러가지가 있는데 어떤 서비스를 제공하는지에 따라서 서버의 종류가 달라진다

✔ Email service를 제공하는게 Email server고,
File service를 제공하는건 File server,
Web 서비스를 제공하는건 Web server이다

여기에서 Web 서비스를 제공한다는 건 우리가 브라우저를 통해서 받을 수 있는 모든 서비스를 제공한다



서버의 포트


  • 1대의 pc에 여러종류에 server가 있을 수 있다 (예를들어 Email server, File server, Web server)
  • 클라이언트가 IP 주소로 요청을 했을때 어떤 서버에 대한 요청인지 구분할 수 있을까?
    • 한대의 pc에 여러종류에 server가 존재하기 때문에 IP주소만으로는 구분할 수 없다

❗❗ 이럴때 필요한게 포트번호이다

  • 그래서 IP주소와 포트번호를 함께 써준다 !

    • IP:Port#
  • 그렇게 되면 클라이언트가 어느 서버로 보내는지 구분이 가능하다

    • 예를들어 1111.22.33.44 IP 주소에 server는 총 세개인데 (Email server, File server, Web server)
    • 서버 각각 포트번호가 25 / 22 / 80 으로 연결되어있을때
      • server가 port 번호랑 연결되어 있는 걸 binding 되었다고 한다
        (Email server의 port번호가 25이면 Email server가 25번 포트를 Listening하고 있다고 한다 (요청을 기다리는 상태))
      • 한 port에 한 server만 연결될 수 있다
    • 1111.22.33.44:25 으로 요청이 오면 어느 server에 대한 요청인지 구분이 가능하다
    • ❗ Web server는 기본이 80인데 생략이 가능하다
  • 대표전화에 내선번호가 있는걸 생각하면 이해가 쉽다

  • 0-1023번 포트번호까지는 예약되어있어서 사용할 수 없다 (잘 알려진 포트번호)

  • 예약된 포트를 제외하고 약 6만개가 사용가능하다



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


  • Web Server : Web을 서비스
  • WAS : Web Application Server : 웹 애플리케이션(프로그램)을 서비스한다
    • server에 프로그램을 설치해 놀고 클라이언트가 프로그램을 사용할 수 있게 해준다
  • Tomcat = WAS
  • 프로그램을 클라이언트 컴퓨터에 설치를 하게 되면 요즘은 좀 괜찮아졌지만 옛날에는 update가 큰일이었다 한두명도 아니고 사용자가 많을 경우 더 일이 많아지는데 server컴퓨터 하나에만 프로그램을 설치하면 한군데만 업데이트를 하면 되고, 각각 프로그램을 설치하지 않아서 저장공간도 차지하지 않으니 WAS로 프로그램을 사용하는게 좋다



Tomcat의 내부 구조


브라우저가 요청을 하면 tomcat에 미리 만들어진 여러 Thread pool 중 하나가
tomcat 서버 안에 있는 service 안에
connector 에 어떤 protocal 종류인지에 따라 처리할connector가 달라진다
(예를들어 http로 왔으면 HTTP1.1 connector가 처리한다)
connector가 정해지면 Engine(Catalina) 으로 요청을 보낸다(Catalina는 엔진 이름)
Engine에는 Host 가 있는데 n개 가능하다(여러개)
그리고 그 host에는 context (= 스프링 프로젝트) 가 있는데 이것도 여러개 있을 수 있다(하나의 context가 web application) ex) /ch2 , /ch3 , ...
web application 안에는 여러개의 Servlet 이 있다! ex) /ch2/list , /ch3/detail , ...
서블릿 : Servlet(작다라는 뜻) / 작은 서버 프로그램
즉, 서버 프로그램 여러개가 같은 context 안에서 돌아간다는 뜻이다 ❗
url과 연결된 서블릿이 실행된 결과가 클라이언트한테 전달된다

0개의 댓글