CS 지식 - 서버관련

GoldenDusk·2023년 7월 13일
0

CS지식

목록 보기
3/26
post-thumbnail

1. 서버(Server)

1) 서버란..

언어적인 관점에서 보자면

  • 테니스, 탁구, 배구 따위에서 하는 서브하는 쪽, 또는 그 사람
  • 음식, 음료를 내는데 쓰는 도구
  • 주된 정보의 제공이나, 작업을 수행하는 컴퓨터 시스템

2) 컴퓨터의 서버는 클라이언트에 서비스를 제공한다.

웹브라우저 : 클라이언트
컴퓨터 : 서버

3) 서버의 처리는 클라이언트의 요청으로 시작된다.

서버는 그 자체로 작동하는 것이 아니라, 불특정 다수의 컴퓨터에 대해 일방적으로 서비스를 제공하지 않음
클라이언트로부터 요청(request)을 받아서 처음으로 처리를 시작하고, 서비스를 제공(응답, response)한다.

  1. 클라이언트는 서버에 무언가의 서비스를 요청한다.
  2. 서버는 요청에 따라 맞춰 처리를 수행한다.
  3. 서버는 처리 결과를 클라이언트로 반환
  4. 클라이언트는 처리 결과를 받는다.

4) 웹서비스에 대입해보자

클라이언트 : 구글 크롬, 사파리와 같은 웹브라우저
서버 : 웹사이트(의 구성 파일)이 있는 컴퓨터

  1. 웹브라우저는 웹서버에 ㅇㅇ 사이트의 데이터를 주십시오라고 요청한다.
  2. 웹서버는 ㅇㅇ 사이트의 파일을 찾는다.
  3. 웹서버는 ㅇㅇ 사이트의 파일을 웹브라우저에 반환한다.
  4. 웹브라우저는 ㅇㅇ사이트의 파일을 받아서 화면에 표시한다.
    ⇒ 이러한 시스템을 클라이언트/서버 시스템이라고 함

출처 : 서버의 기초 책


2. 웹 서버(Web Server)

웹서비스

클라이언트 : 구글 크롬, 사파리와 같은 웹브라우저
서버 : 웹사이트(의 구성 파일)이 있는 컴퓨터

웹 서버란(WEB) = 아파치

  • 하드웨어와 소프트웨어 혹은 두 개가 같이 동작하는 것을 의미
  • 말 그대로 작성된 html 페이지 등을 네트워크 망에 종속되지 않고, 웹서비스를 할 수 있도록 어플리케이션
  • 브라우저에서 웹 서버에서 불려진 파일을 필요로 할 때, 브라우저는 HTTP를 통해 파일을 요청
  • 요청이 올바른 웹 서버(하드웨어)에 도달 시, HTTP 서버(소프트웨어)는 요청된 문서를 HTTP를 이용해 보내줌

웹 서버 소프트웨어 종류

  • 서비스별로 서버 소프트웨어가 있으며, 각각 특징이 있으나 웹 서버로의 기능은 공통
  • APache
  • IIS
  • nginx

하드웨어 측면

  • 웹 서버는 웹 서버의 소프트웨어와 website의 컴포넌트 파일을 저장하는 컴퓨터
  • 소프트웨어 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨
    • 컴포넌트 파일이란?
      • HTML문서, images, CSS stylesheets, JavaScript files
  • 웹 서버는 인터넷에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)을 주고받을 수 있도록 함

소프트웨어 측면

  • 웹 서버는 기본적으로 웹 사용자가 어떻게 호스트에 파일들에 접근하는지를 관리하는 컴퓨터 프로그램
  • HTTP 서버는 URL과 HTTP(우리의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어
    • URL의 구성요소
      • 프로토콜, 서버주소, 포트번호, 파일경로
  • HTTPS 서버, HTTP 서버를 웹 서버라고 부르기로 함

📌 참고로 ㅇㅇ 서버의 ㅇㅇ에는 제공하는 서비스의 이름을 넣는다.
ex. 카카오톡 서비스를 제공하는 것은 카카오톡 서버
ex2. 웹 서버를 ‘HTTP 서버’ 메일 서버를 ‘SMTP 서버’라고 부르기도 함


3. 웹 컨테이너(Web Container)

웹 컨테이너란?

  • 서블릿 컨테이너라고도 함
  • JSP + 서블릿을 실행시킬 수 있는 소프트웨어
  • 웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용
  • 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장
  • 서블릿, 자바 서버 페이지(JSP) 파일, 그리고 서버-사이드 코드가 포함된 다른 타입의 파일들에 대한 요청을 다룬다.
  • 서블릿 객체 생성, 서블릿을 로드와 언로드하며, 요청과 응답 객체를 생성하고 관리하고, 다른 서블릿 관리 작업을 수행
  • 웹 컴포넌트 자바 EE 아키텍처 제약을 구현하고, 보안, 병행성, 생명주기 관리, 트랜잭션, 배포 등 다른 서비스를 포함하는 웹 컴포넌트의 실행환경 명세

서블릿 컨테이너 목록

  • 아파치 톰캣
  • 아파치 제로니모
  • 오라클의 클래스피시
  • 제이보스
  • 출처

https://ko.wikipedia.org/wiki/웹_컨테이너

https://helloworld-88.tistory.com/71#:~:text=■ 웹 애플리케이션 서버 (WAS%2C Web Application Server)란%3F,컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어 (소프트웨어 엔진)이다.


4. WAS(Web Application Server) = tomcat

WAS란?

  • 웹 서버 + 웹 컨테이너
  • 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)
  • 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별되며, 주로 데이터베이스 서버와 같이 수행
  • 웹 상에 사용하는 컴포넌트를 올려놓고 사용하게 되는 서버

기능

  • 프로그램 실행 환경과 데이터 베이스 접속 기능 제공
  • 여러 개의 트랜잭션 관리
  • 업무를 처리하는 비즈니스 로직 수행
  • Web Service 플랫폼의 역활

WAS 종류

  • tomcat
  • tMax jeus
  • Oracle

WEB 서버와 WAS 비교

  • WEB 서버 : HTML 문서와 같은 정적 컨텐츠를 처리 하는 것(HTTP 프로토콜을 통해 읽힐 수 있는 문서)
  • WAS 서버 : asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스 처리하는 것

5. HTTP(HyperText Treansfer protocol)

HTTP란?

  • 웹 서비스를 위해 이용되는 프로토콜로 보안성이 안 좋음
  • 암호화되지 않는 상태로 웹 볼 때 사용되는 프로토콜
  • 인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약

6. HTTPS(HTTP Secure)

HTTPS란?

  • 암호화된 상태로 웹을 볼 때 HTTP에 Secure을 뜻하는 s가 붙어 HTTPS라고 함

7. 프로토콜(Protocol)

프로토콜이란?

  • 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메세지를 주고 받는 양식과 규칙의 체계, 통신 규약 및 약속
  • 톰 마릴은 컴퓨터가 메세지를 전달하고, 메세지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메세지를 재전송하는 일련의 방법을 기술적 은어로 프로토콜이라고 한다.
  • 통신을 위해 프로토콜이 가져야 하는 일반적인 기능에는 데이터 처리 기능, 제어 기능, 관리적 기능

프로토콜의 기본 요소

  • 구문(Syntax) : 전송하고자 하는 데이터의 형식(Format), 부호화(Coding), 신호 레벨(Singnal Level) 등을 규정
  • 의미(Semantics) : 두 기기간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
  • 시간(Timing) : 두 기기 간의 통신 속도, 메세지의 순서 등을 규정

프로토콜 종류


8. 포트(Port)

  • 네트워크 상에서 특정 PC를 나타내는 IP 주소와 그 주소에 진입할 수 있는 정해진 통로
    • IP 주소 : 네트워크에 연결된 특정 PC의 주소를 나타내는 체계
  • IP 내에서 애플리케이션 상호 구분(프로세스 구분)을 위해 사용하는 번호
  • 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜
  • 이미 사용 중은 포트는 중복해서 사용할 수 없다.
  • 포트 번호는 0~ 65,535 까지 사용할 수 있다.
  • 포트 번호
    • IP 주소가 가리키는 PC에 접속할 수 있는 통로
    • 잘 알려진 포트 번호
      • 22 : SSH
      • 80 : HTTP
      • 443 : HTTPS

웹 서비스에 이용되는 포트번호

  • 80번 포트(실제 상용화된 서비스 제공 시 이용)
  • 출처

https://hanamon.kr/네트워크-기본-ip-주소와-포트-port/


9. 정적 웹 프로그래밍과 동적 웹 프로그래밍

정적 웹 프로그래밍

  • 주어진 HTML 파일을 보여주기만 함

동적 웹 프로그래밍

  • 사용자 입력에 따라 다른 페이지를 보여주거나, 필요에 따라 동적으로 페이지 생성해서 보여줌

CGI

  • 사용자 입력을 받아들이기 위해 과 태그를 도입한 가장 초창기의 동적 웹 프로그래밍 기술

JSP(Java server page)

  • HTML 코드에 JAVA 코드를 넣어 동적 웹페이지를 생성하는 웹어플리케이션 도구
  • JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답
    • 자바 서블릿이란?
      • 서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램
      • 자바 언어를 기반으로 만들지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작
  • 필요 소프트웨어
    • 웹브라우저(크롬 등)
    • JSP 컨테이너 기능을 포함한 웹 서버(톰캣 등)
    • JDK(java delvelopment kit, jsp 컴파일 및 실행을 위해 필요)
    • 통합 개발환경(이클립스 등)
    • 데이터베이스 서버(MySQL, Oracle)
    • 기타 라이브러리(JDBC, Apache Commons 등)
  • 출처

https://javacpro.tistory.com/43

ASP

  • IIS는 마이크로소프트에서 ASP 개발을 위해 이용

톰캣(tomcat) 서버

  • HTTP 요청과 응답 처리 외에, JSP 기반의 동적 웹 프로그래밍 기술을 함께 지원하기 위한 웹 서버
  • 개발 과정에서 톰캣 서버와 연결을 위해 일반적으로 이용되는 포트번호
    • 8080 포트
  • 이런 에러 발생 원인

  • 외부에서 실행되는 톰캣 서버 존재

  • 서버 연결 정보가 제대로 주어지지 않을 때

  • 톰캣이 아닌 다른 웹 서버가 이미 실행 중일때

    CF. 여러 개의 브라우저 서버 동시 접속 시도는 지원 되어야 하는 기능


10. JDK와 JRE

JRE(JAVA Runtime Enviroment)

  • java 실행에 필요한 프로그램만을 가지고 있음

JDK(Java Development Kit)

  • JRE 외에 개발에 필요한 컴파일러나 디버거 등을 함께 포함한다는 점
profile
내 지식을 기록하여, 다른 사람들과 공유하여 함께 발전하는 사람이 되고 싶다. gitbook에도 정리중 ~

0개의 댓글