< KEY WORD >
: 일반적으로 네트워크 프로그램에서 서비스를 요청하는 쪽을 클라이언트라 부르고, 요청을 받아 알맞은 기능이나 데이터를 제공하는 쪽을 서버라고 한다.

하이퍼텍스트 전송 규약(프로토콜)
발명
: Tim Berners-Lee의 팀은 CERN(유럽 원자핵 공동연구소)에서 HTML, WEB BROWER, 웹 브라우저 관련 기술, HTTP를 발명했다. 문서화된 최초의 HTTP버전은 v0.9(1991년)이다.
HTTP란?
: 서버와 클라이언트가 인터넷상에서 데이터를 주고받기 위한 프로토콜이다.
현재 버전 HTTP/2까지 등장.
HTTP 작동방식
: HTTP는 서버/클라이언트 모델을 따른다.
- 장점 : 불특정 다수를 대상 서비스에 적합, 클라이언트&서버가 계속 연결된 형태가 아니기 때문에 서로간 최대 연결 수보다 훨씬 많은 요청과 응답을 처리할 수 있음
- 단점 : 연결을 끊어버리기 때문에 클라이언트 이전 상황을 알 수 없음(=무상태, Stateless), 이 때문에 정보를 유지하기 위해 Cookie같은 기술이 등장.
인터넷 상의 자원의 위치
: 특정 웹 서버의 특정 파일에 접근하기 위한 경로이다.
URL은 크게 프로토콜, IP주소, 도메인 이름으로 나뉜다.


웹 서버 : 보통 소프트웨어(Software)를 말하지만, 여기서는 웹 서버 소프트웨어가 동작하는 컴퓨터를 말한다. 웹서버는 클라이언트로부터 요청(HTML문서나 각종 리소스)을 받아, 요청하는 것을 넘겨주는 일을 한다. 만약 요청한 것이 서버에 없거나 주소가 틀려 서버가 찾지 못하면 "404 NOT FOUND(요청한 자료를 서버에서 찾을 수 없습니다)" 메시지가 뜨는 것을 볼 수 있다.
웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적(static)인 데이터이거나 동적인 결과가 될 수 있다.
정적인 데이터 : HTML,그림,소리,파일 등 변하지 않는 데이터
많이 사용하는 웹 서버 소프트웨어의 종류
1) Apache : Apache Software Foundation에서 개발한 오픈소스 소프트웨어 웹서버(거의 대부분 운영체제에서 설치, 사용할 수 있음)
2) Nginx : 차세대 웹서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하는 것이 목적으로 만들어진 오픈소스 소프트웨어 서버
3) Microsoft IIS
웹 브라우저(=웹 클라이언트) : 사용자가 서버에 요청을 보낼 수 있는 기능을 제공. 요청을 보내고 난 다음, 서버가 보내온 요청의 결과를 화면에 출력하는 일도 클라이언트의 역할이다. 클라이언트라는 용어는 사용자라는 사람 외에 브라우저라는 응용프로그램을 뜻하기도 한다.
브라우저(Browser)는 서버랑 통신하는 explorer, chrome, Mozilla 와 같은 소프트웨어를 말한다 브라우저의 주된 역할은 HTML 코드를 읽어서(파싱) 화면에 보이는 것이다.
클라이언트는 사용자와 브라우저 둘다 의미하기 때문에 구별해 사용하지 않는다. 총칭해서 사용자가 요구한 대로 동작하는 웹 브라우저라는 뜻으로 이해하면 된다.

URL을 입력하면 해당하는 사이트가 뜬다.(요청과 응답)

웹브라우저에서 URL을 입력하면 웹 서버 프로그램이 웹브라우저에게 웹페이지를 제공.(4번)
웹브라우저와 웹 서버는 서로 다른 컴퓨터에 위치하는데, 웹 브라우저가 웹 서버에 연결하려면 IP주소라는 웹 서버가 실행중인 컴퓨터의 주소를 알아야 한다.
각 컴퓨터마다 고유한 IP주소를 가지고 있는데 192.168.0.1과 같은 숫자로 구성되어 있어 외우기가 쉽지 않다. 그렇기에 https://velog.io/@gggggeun1와 같은 도메인 이름을 사용한다
: 웹 브라우저와 웹 서버는 IP주소를 이용해 연결하기 때문에 도메인 이름을 IP주소로 변환해야하는데, 이때 사용하는 것이 DNS이다. 웹 브라우저에서 URL을 입력하면, 도메인 이름에 해당하는 IP주소를 DNS에 요청하고(1번), DNS는 IP주소로 응답을 제공한다.(2번)
: 한개의 컴퓨터에서 웹 서버 프로그램 뿐만 아니라 스트리밍 서버, 채팅 서버 프로그램 등이 실행 될 수도 있다. IP주소는 연결할 컴퓨터를 구분하는데 사용되기 때문에, IP주소만으로 컴퓨터의 어떤 서버 프로그램을 실행 할 지 알 수 없다. 그래서 포트를 사용한다.
포트는 숫자로 된 번호로서 서버 프로그램마다 구분되는 포트 번호를 사용하며, 클라이언트는 IP주소와 함께 포트 번호를 사용해서 원하는 서버 프로그램에 연결하게 된다.
웹 서버 기본포트 : 80, 이는 URL에서 프로토콜이 http인 경우 별도로 포트를 지정하지 않으면 80번 포트로 연결한다는 뜻이다.
http://localhost라는 URL을 사용하면 웹 브라우저는 80번 포트를 이용해 서버에 연결하고, http://localhost:8080/ 을 사용하면 웹 브라우저는 8080번 포트를 이용해 서버에 연결한다.
즉 IP:컴퓨터 구분, PORT:서버 프로그램 구분
DBMS (DataBase Management System)
: 다수의 사용자가 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어
미들웨어 (MiddleWare)
: 클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 있다. 비즈니스 로직을 클라이언트와 DBMS사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 한다.

WAS (Web Application Server)
: WAS는 일종의 미드웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다. (동적데이터)

웹서버 vs WAS
WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있어 현재 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는데 있어서 성능상 큰 차이가 없다. 그러나 규모가 커질수록 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹 서버와 WAS를 분리한다.