1. 웹 서버(Web server)


1.1 클라이언트 와 서버 (Client and server)

먼저 웹 서버를 이해하기 전에 클라이언트와 서버가 무엇인지 알아야할 필요성이 있습니다.
클라이언트는 파일을 서버에 요청해서 사용하는 장치, 프로그램을 의미하고,
서버는 요청받은 파일을 전달하는 프로그램을 의미합니다.

이해되기 쉽게 예를 들어보면,
클라이언트(장치: 사용자의 컴퓨터, 프로그램: 웹브라우저), 서버(프로그램: 웹서버)로 볼 수 있는데
사용자가 웹브라우저를 통해 URL에 입력하는 것은 요청하는 것에 해당하고,
웹서버는 URL에 입력된 요청을 전달하여 웹브라우저에 나타냅니다.

client-server-network

​ <출처 :https://www.liquidweb.com/blog/client-server-architecture/>


1.2 URL 알아보기


URL 구성

URL은 사용자가 서버에 요청하는 것이라고 알아보았습니다.
URL은 어떻게 구성되어 있을까요?
[protocol]:// [ip주소 or 도메인 주소]:[포트]/[파일경로]입니다.

간단히 설명하면,
●protocol : 국가간의 통신을 위한 약속된 언어(http, https 등)

●ip주소 : 통신을 주고 받기 위한 할당된 주소

●도메인 주소 : 편리성을 위해 만들어진 소유권있는 할당된 주소

●포트 : 여러 서버가 존재하는데 (web, email 등) 모든 서버의 파일을 주고 받는 것이 아니라
서버에 따라 포트 번호가 정해져 있어서 해당 서버에 파일을 주고 받을수 있도록 하는 역할을 담당


URL에서 생략된 부분

우리가 알고 있는 사이트와 비교해서 알아볼까요?
https://www.naver.com 를 알고 있을 겁니다.
하지만 위에서는 분명 포트번호와 파일 경로까지 있어야 URL이라고 생각했는데 여기서는 볼 수가 없습니다.
왜 그런 걸까요?


먼저 포토 번호를 살펴보겠습니다.
사실 http, https 는 포트 번호가 있습니다.
http = 80 포트

https = 443 포트
그렇기 때문에 http://www.naver.com:443 에서 443을 생략할 수 있었습니다.

하지만 http 나 https가 포트번호가 있다고 해서 뒤에 무조건 포트가 80 이나 443이 와야하는 것은 아닙니다.
무엇보다 사용자의 편리성이 중요합니다. 그래서 프로토콜과 같이 자주쓰는 포트를 생략하기 위해 사용되는 것입니다.
이용에 따라서 다른 포트를 이용해도 상관없습니다.


다음은 파일경로에 대해서 알아보겠습니다.
포트와 마찬가지로 네이버는 파일경로가 나타나지 않고 생략되었다는 것을 유추할 수 있을 것 입니다.
파일경로를 생략하면 어떤 파일을 지칭하는 것일 까요?
바로 index.html 파일입니다.


파일 경로라면 잘 알고 계실겁니다. C:/Windows/System 형태를 많이 보셨죠? 폴더안에 폴더가 있고 폴더 안에 폴더나 파일이 있죠.
사실 index.html은 /var/www/html/index.html 의 경로입니다.
그렇지만 URL에선 /index.html을 web root 경로라고 하고 위의 상위 폴더가 더는 확인할 수 없는 형태입니다.
왜냐하면 모든 파일을 인터넷에 공유하는 것이 아니라 특정 파일을 공유하고 싶기 때문이죠.
그래서 웹사이트를 개설한다면 해당경로에 보여주고 싶은 파일을 만들면 됩니다.


1.3 웹서버 이해하기


웹서버란? 사용자가 URL을 입력해서 파일을 전송해주는 역할을 해준다는 것을 알았습니다.


그럼 웹브라우저는 무엇일까요? 대표적으로 chorm, Safari, Firefox 등이 있죠.
웹서버로 부터 파일을 받아 HTML 문서와 그림, 멀티미디어 파일을 해석해서 사이트에 보여주죠.
네이버와 같은 사이트도 마찬가지로 웹브라우저를 통해 파일이 해석되어 나타난 페이지입니다.


이런 것을 정적 페이지라고 부릅니다. 모든 사람이 똑같은 화면을 볼 수 있죠.
하지만 사용자 각자 로그인을 하면 어떠할까요?
전부 다른 파일을 전송받아야 합니다.


그렇다면 전세계 사람들에게 각자 다른 파일을 전송해야 하는데 현실적으로 그 많은 파일을 관리하는 것은 어려움이 있습니다.
그래서 동적 페이지가 필요합니다.


동적 페이지는 요청에 따라 데이터를 가공하여 각각에 맞는 결과를 출력합니다. 동적 페이지를 만들기 위해서는
WAS(Web Application Server) 와 DB(DataBase)가 필요합니다. DB는 데이터를 생성, 삭제, 수정, 읽는 역할을 하며,
WAS가 요청에 따라 데이터를 가공하는 역할을 합니다.


이렇게 정적 페이지를 만드는 과정을 프론트 엔드라고 하고 동적 페이지를 만드는 과정을 백 엔드라고 대략적으로 표현할 수 있습니다.
웹서버의 동작을 간단하게 그림으로 알아보고 마무리 하겠습니다.

images_green9930_post_08297dd4-ce30-4330-bd08-62d81569696a_image

​ <출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html>

카테고리:

업데이트:

댓글남기기