본문 바로가기
network

[WEB] What is the web server?

by objet 2022. 11. 24.

웹 서버(web server)란 HTTP(Hypertext Transfer Protocol)과 그 외 다른 프로토콜을 사용하는 소프트웨어와 하드웨어를 뜻합니다. (각종 프로토콜들은 주로 World Wide Web에서 발생하는 리퀘스트를 처리합니다.)

웹 서버의 주요 기능은 저장해두었던 웹페이지들을 처리(processing)하고 유저에게 보내는 과정을 통해 웹사이트 컨텐츠들을 띄우는 것입니다. HTTP, 더 큰 의미로 웹 서버는 SMTP과 FTP을 지원합니다.

SMTP : Simple Mail Transfer Protocol, email 이용을 위함

FTP : File Transfer Protocol, 파일을 전송하고 저장하는 역할

 

웹 서버 하드웨어는 인터넷과 연결되어 있으며 인터넷으로 연결된 또 다른 디바이스들과 데이터들을 교환할 수 있습니다. 

웹 서버 소프트웨어는 유저가 교환받은 파일에 접근하는 방식을 제어합니다. (웹 서버가 동작하는 과정은 client-server 형식의 모델의 한 예라고 볼 수 있습니다.) 즉, 웹사이트를 호스팅하기 위해서는 웹 서버 소프트웨어를 가지고 있어야 합니다.

 

웹 서버는 웹 호스팅 또는 웹사이트를 위한 데이터 호스팅, 웹을 기반으로 한 어플리케이션(웹 어플리케이션)에 쓰이고 있습니다.

 

 

 

 

웹 서버는 어떻게 동작할까?

웹 서버 소프트웨어는 웹사이트의 도메인 이름을 통해 사이트에 접근할 수 있으며 사이트의 컨텐츠들을 유저의 요청에 따라 전송합니다. 앞에서 말했다싶이, 소프트웨어는 최소 HTTP 서버를 포함한 여러 컴포넌트들로 이루어져 있습니다. HTTP 서버는 HTTP, 즉 인터넷 상의 프로토콜과 URL들을 소프트웨어가 이해할 수 있도록 합니다. 

하드웨어적 관점에서의 웹 서버는 웹 서버 소프트웨어와 웹사이트에 필요한 여러 파일들(e.g. HTML 문서나 이미지, JavaScript 파일)을 저장하고 있는 한 대의 컴퓨터입니다.

 

구글 크롬이나 파이어폭스같은 웹 브라우저가 웹 서버 상의 호스팅된 파일들을 필요로 할 때, 브라우저는 HTTP로 해당 파일을 요청하게 됩니다. 요청이 웹 서버로 수신되면, HTTP 서버는 그 요청을 승인하고 요청한 컨텐츠를 찾아 HTTP로 브라우저에게 넘겨줍니다.

 

더욱 깊게 들어가봅시다. 브라우저가 웹 서버를 통해 페이지를 요청하면, 해당 요청은 여러 단계에 걸쳐 수행됩니다.

첫번째로, 어떤 유저가 웹 브라우저의 주소 바에 접속하고 싶은 사이트의 URL을 기입합니다.

그 후 웹 브라우저는 URL로부터 해당 도메인 네임의 IP주소를 얻게 됩니다. 이 과정 속에서, URL은 DNS(Domain Name System)을 통해 번역되거나 또는 브라우저에 저장되어있던 캐시를 통해 IP 주소로 바뀌게 됩니다. 여기서 해당 브라우저(URL을 입력했던 페이지)가 웹 서버로 바뀌게 됩니다. 

그 다음, 해당 브라우저는 HTTP request를 날려서 특정 파일을 요청합니다. 웹 서버가 응답하면, HTTP를 통해 브라우저에게 요청된 페이지를 송신합니다. 만약 요청된 페이지가 존재하지 않거나 보내는 과정에서 무언가 잘못되었다면, 웹 서버는 에러 메세지를 응답하게 됩니다. 

이런 과정을 걸쳐 브라우저는 우리가 원하는 웹페이지를 띄울 수 있게 되는 것입니다.

 

하나의 웹 서버에서 여러 개의 도메인들이 호스팅되는 것도 가능합니다.

 

 

 

 

웹 서버의 용례

웹 서버들은 큰 규모의 인터넷(또는 인트라넷) 관련 프로그램들의 일부로 제공됩니다.

다음은 웹 서버를 사용하는 프로그램의 대표적인 예입니다:

  • 이메일 송수신
  • 파일 전송 프로토콜(FTP) 파일의 다운로드 요청
  • 웹페이지 구축 및 퍼블리싱

대다수의 기본 웹 서버들은 서버 사이드 스크립팅(server-side scripting, 서버와 클라이언트가 통신을 주고받을 때 서버 측의 응답을 위한 프로그램을 일컫음)을 지원합니다. 서버 사이드 스크립팅은 서버 머신에서 동작하며, 일반적으로 데이터베이스 접근과 같은 광범위한 기능들을 갖추고 있습니다. 서버 사이드 스크립팅 과정에서는 ASP(Active Server Pages), PHP(Hypertext Preprocessor)가 주로 사용됩니다. 이 과정에서 HTML 문서가 동적으로 생성되기도 합니다.

 

 

 

 

정적 웹 서버 vs 동적 웹 서버

웹 서버는 동적 컨텐츠든 정적 컨텐츠든 둘 다 사용할 수 있습니다.

정적이라 함은, 있는 그대로 표시되는 컨텐츠를 의미하며 이에 반해 동적 컨텐츠는 계속 바뀌고 업데이트될 수 있습니다.

정적 웹 서버는 컴퓨터와 HTTP 소프트웨어로 이루어져 있습니다. 호스팅된 파일들이 그대로 브라우저에 보이기 때문에 이를 정적이라고 합니다.

 

동적 웹 브라우저는 웹 서버와 어플리케이션 서버, 데이터베이스와 같은 여러 소프트웨어들로 구성되어 있습니다. 이 웹 브라우저에서는 어플리케이션 서버가 호스트 파일들을 브라우저로 보내기 전에 업데이트시킬 수 있기 때문에 동적으로 여겨집니다. 또한 웹 서버는 데이터베이스에서 요청이 왔을 때 해당 요청에 맞춰 컨텐츠를 만들어낼 수 있습니다. 이렇듯 동적 웹 브라우저에서의 프로세스가 확실히 더 유연하지만, 그만큼 더 복잡합니다.

 

 

업계에서 가장 많이 쓰이는 웹 서버 소프트웨어들은 다음과 같습니다:

  • Apache HTTP Server: Apache Software Foundation에서 만들어졌으며, 무료로 쓸 수 있습니다. Windows, Mac OS X, Unix, Linux, Solaris 및 그 외 운영체제들의 오픈 소스 웹 서버가 공개되어 있습니다. (단, Apache license 필요)
  • Microsoft Internet Information Services (IIS): Microsoft사에서 당사 플랫폼에 사용하기 위해 개발되었으며, 오픈 소스가 공개되어 있지는 않지만 보편적으로 널리 쓰입니다.
  • Nginx: 인기있는 관리자형 오픈소스 웹서버입니다. 프로그램이 가볍고(light resource utilization and scalability), 이벤트 기반 아키텍처에서 발생하는 많은 동시 세션(디바이스에서 동시에 지원할 수 있는 TCP 세션)을 다룰 수 있다는 점이 가장 큰 장점입니다. Nginx 또한 proxy server와 load balancer(트래픽이 많을 때 여러 대의 서버가 분산처리하여 적절히 분산시키는 장치 또는 기술)로 쓰일 수 있습니다.
  • Lighttpd: FreeBSD OS를 지원하는 무료로 사용 가능한 웹 서버입니다. 빠르고 안전하며 CPU 전력을 적게 소모합니다.
  • Sun Java System Web Server: Windows, Linux and Unix에서 동작하는 Sun Microsystems에서 기원된 무료 웹 서버입니다. 중~대형 웹사이트에 적합합니다. 

Apache를 필두로 IIS와 Nginx(Engine X라고 읽는다)가 웹 서버 시장에서 강세입니다. 그 외 웹서버로는 Novell's NetWare server, Google Web Server (GWS) 그리고 IBM's family of Domino servers 등이 있습니다.

 

추가 팁) 웹 서버의 선택에 있어 고려사항은 다음과 같습니다:

  1. 자신의 OS와 원하는 서버에서 잘 동작하는가?
  2. 서버 사이드 프로그래밍을 다루기 위한 기능들이 충분한가?
  3. 개인정보 보안이 철저한가?
  4. 해당 웹 서버에서 제공하는 검색 엔진과 퍼블리싱, 사이트 구축 툴이 충분한가?

웹 서버는 제각각 구성과 기본 값들이 다를 겁니다. 높은 수행능력을 가진 웹 서버를 만들기 위해서는 높은 처리량과 낮은 지연속도를 최우선으로 고려하는 게 도움이 될 겁니다.

 

 

 

 

웹 서버 보안 팁

웹서버를 사용할 때 더욱 안전한 환경을 만들기 위한 안전 수칙이 있습니다. 몇 가지 안전 수칙 과정은 다음과 같습니다:

  • 리버스 프록시(reverse proxy) : 내부 서버를 숨기고, 내부 서버에서 발생하는 트래픽들을 즉시 처리하기 위해 고안되었습니다.
  • 접근 제한: 인프라 머신을 통한 웹 호스트의 접근을 차단하고, SSH를 사용하여 접근하게 합시다.
  • 가장 최근에 패치된 웹 서버 상태 유지: 취약점이 개선된 상태를 유지합니다.
  • 확인되지 않은 활동을 막기 위해 주기적으로 네트워크 모니터링을 해야 합니다.
  • 방화벽과 SSL 사용: 방화벽은 HTTP 트래픽을 모니터링할 수 있으며, SSL(Secure Sockets Layer)는 데이터 보안을 강화합니다.

 

 

 

 

 

출처

https://www.techtarget.com/whatis/definition/Web-server

https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_web_server

https://en.wikipedia.org/wiki/Web_server

https://www.geeksforgeeks.org/static-vs-dynamic-website/

'network' 카테고리의 다른 글

WebSocket Protocol (RFC 6455 번역)  (0) 2023.04.06