1. 서버(Server)
1) 서버란..
언어적인 관점에서 보자면
- 테니스, 탁구, 배구 따위에서 하는 서브하는 쪽, 또는 그 사람
- 음식, 음료를 내는데 쓰는 도구
- 주된 정보의 제공이나, 작업을 수행하는 컴퓨터 시스템
2) 컴퓨터의 서버는 클라이언트에 서비스를 제공한다.
웹브라우저 : 클라이언트
컴퓨터 : 서버
3) 서버의 처리는 클라이언트의 요청으로 시작된다.
서버는 그 자체로 작동하는 것이 아니라, 불특정 다수의 컴퓨터에 대해 일방적으로 서비스를 제공하지 않음
클라이언트로부터 요청(request)
을 받아서 처음으로 처리를 시작하고, 서비스를 제공(응답, response)
한다.
- 클라이언트는 서버에 무언가의 서비스를 요청한다.
- 서버는 요청에 따라 맞춰 처리를 수행한다.
- 서버는 처리 결과를 클라이언트로 반환
- 클라이언트는 처리 결과를 받는다.
4) 웹서비스에 대입해보자
클라이언트 : 구글 크롬, 사파리와 같은 웹브라우저
서버 : 웹사이트(의 구성 파일)이 있는 컴퓨터
- 웹브라우저는 웹서버에 ㅇㅇ 사이트의 데이터를 주십시오라고 요청한다.
- 웹서버는 ㅇㅇ 사이트의 파일을 찾는다.
- 웹서버는 ㅇㅇ 사이트의 파일을 웹브라우저에 반환한다.
- 웹브라우저는 ㅇㅇ사이트의 파일을 받아서 화면에 표시한다.
⇒ 이러한 시스템을 클라이언트/서버 시스템
이라고 함
출처 : 서버의 기초 책
2. 웹 서버(Web Server)
웹서비스
클라이언트 : 구글 크롬, 사파리와 같은 웹브라우저
서버 : 웹사이트(의 구성 파일)이 있는 컴퓨터
웹 서버란(WEB) = 아파치
- 하드웨어와 소프트웨어 혹은 두 개가 같이 동작하는 것을 의미
- 말 그대로 작성된 html 페이지 등을 네트워크 망에 종속되지 않고, 웹서비스를 할 수 있도록 어플리케이션
- 브라우저에서 웹 서버에서 불려진 파일을 필요로 할 때, 브라우저는 HTTP를 통해 파일을 요청
- 요청이 올바른
웹 서버(하드웨어)
에 도달 시, HTTP 서버(소프트웨어)
는 요청된 문서를 HTTP를 이용해 보내줌
웹 서버 소프트웨어 종류
- 서비스별로 서버 소프트웨어가 있으며, 각각 특징이 있으나 웹 서버로의 기능은 공통
- APache
- IIS
- nginx
하드웨어 측면
웹 서버
는 웹 서버의 소프트웨어와 website의 컴포넌트 파일을 저장하는 컴퓨터
- 소프트웨어 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨
- 컴포넌트 파일이란?
- HTML문서, images, CSS stylesheets, JavaScript files
- 웹 서버는 인터넷에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)을 주고받을 수 있도록 함
소프트웨어 측면
- 웹 서버는 기본적으로 웹 사용자가 어떻게 호스트에 파일들에 접근하는지를 관리하는 컴퓨터 프로그램
- HTTP 서버는 URL과 HTTP(우리의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어
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 종류
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. 정적 웹 프로그래밍과 동적 웹 프로그래밍
정적 웹 프로그래밍
동적 웹 프로그래밍
- 사용자 입력에 따라 다른 페이지를 보여주거나, 필요에 따라 동적으로 페이지 생성해서 보여줌
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 기반의 동적 웹 프로그래밍 기술을 함께 지원하기 위한 웹 서버
- 개발 과정에서 톰캣 서버와 연결을 위해 일반적으로 이용되는 포트번호
- 이런 에러 발생 원인
10. JDK와 JRE
JRE(JAVA Runtime Enviroment)
- java 실행에 필요한 프로그램만을 가지고 있음
JDK(Java Development Kit)
- JRE 외에 개발에 필요한 컴파일러나 디버거 등을 함께 포함한다는 점