해피 코딩!

Web Server란? 본문

Network

Web Server란?

지속가능한 성장을 2020. 11. 23. 19:04

"Web server"는 하드웨어, 소프트웨어 혹은 두 개 모두를 의미할 수 있습니다.

본 내용은 HTTP 완벽 가이드의 내용과 정보검색을 통하여 작성자가 재구성 하였습니다.

틀리다고 생각하시는 부분을 지적해주세요! 피드백을 환영합니다!

WebServer란 무엇인가

Web server는 하드웨어, 소프트웨어 혹은 두 개 모두를 의미하며 이것은 웹 페이지 제공에 특화된 장비(양 쪽 모두)를 가리킨다.

Web server는 HTTP 요청을 처리하고, 응답을 제공한다.

알고 보게 되면 URL 앞에 HTTP가 붙는 것을 볼 수 있는데, 이것이 HTTP를 사용한다는 것이다.

http -> 웹 서버와 웹 클리아이언트가 서로 정보를 주고 받기 위한 프로토콜,

Web server는 HTTP 및 그와 관련된 TCP 처리를 구현한 것이다. Web server는 자신이 제공하는 리소스를 관리하고, Web server를 설정, 통제, 확장하기 위한 관리 기능을 제공한다. Web server는 TCP 커넥션 관리에 대한 책임을 운영체제와 나누어 가진다.

운영체제는 컴퓨터 시스템의 하드웨어를 관리하고 TCP/ IP 네트워크 지원, 웹 리소스를 유지하기 위한 파일 시스템, 현재 연산 활동을 제어하기 위한 프로세스 관리등을 제공한다.

Web Server는 가벼움과 높은 성능을 목표로 한다.

Web server의 의미

  1. 하드웨어 측면에서, web server는 website의 컴포넌트 파일들을 저장하는 컴퓨터입니다. (컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files가 있습니다.) 그리고 이 파일들을 최종 소비자의 디바이스에 전달합니다. web server는 인터넷에 연결되어 있고, mozilla.org와 같은 domain name을 통해 접속될 수 있습니다.

  2. 소프트웨어 측면에서, web server는 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리합니다. 이 문서에서 web server는 HTTP서버로 국한합니다. HTTP 서버는 URL(Web addresses)과 HTTP(당신의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부입니다.

Web server의 차이

Web server는 Static Web, Dynamic Web으로 구분이 되어 있다.

  • Static Web는 언제 접속하여도 같은 리소스를 제공하는 웹 사이트를 칭하며 이것은 이미 Client 개발자의 영역에서 작성이 된 실제 사용자들에게 파일만이 서빙 된다는 것이다.

개인적으로 이것을 웹 서버에 API요청이 갔는가 아닌가로 판단하는 것으로 생각한다. 예로 지금 내가 작성하고 있는 블로그 사이트가 정적 웹 사이트인 것이다.

  • Dynamic Web는 서버에서 추가적인 요청을 처리하여 제공되는 웹 사이트를 칭하며 동적으로 실제 사용자들과 상호작용을 하기 때문에 매 순간 제공되는 페이지의 내용이 다르다.

좋은 예제가 떠올랐다, 학교의 도서관을 생각해보자 각각의 서적들은 이미 도서관의 직원들이 정리해둔 정적인 서비스이다. 사용자는 이미 서적들이 배치된 영역에 가서 원하는 책(정보)를 가져와야만 한다. 언제든 그 책의 내용은 변하지 않는다. 이것이 정적인 웹 서버이다. 뭐 최신판이나 대여용인 케이스는 웹 페이지가 사라졌다고 가정한다.

하지만 사용자가 도서관 직원을 통하여 원하는 책을 얻고자 한다면, 동적인 처리를 통하여 책이 대여되었는지, 개정판이 나왔는지, 위치는 어디인지 사용자의 요구에 맞게 처리가 될 것이다. 이것을 동적 웹서버의 예제로 정해본다.

Web server가 하는 일

간단한 Web server가 아닌 상용 웹 서버는 훨씬 복잡하지만, 공통적으로 수행하는 일 들이 있다.

  1. 커넥션을 맺는다 -- 클라이언트의 접속을 받아들이거나, 원치 않는 클라이언트 요청을 닫는다. (Django의 Allow_host를 칭하는 것일까, AWS의 보안그룹을 칭하는 것 일까? 서버로의 커넥션일지 사용자로의 커넥션일지)
  2. 요청을 받는다 -- HTTP 요청 메세지를 네트워크로 부터 읽어 들인다.
  3. 요청을 처리한다 -- 요청 메세지를 해석하고 행동을 취한다.
  4. 리소스에 접근한다 -- 메세지에서 지정한 리소스에 접근한다.
  5. 응답을 만든다 -- 올바른 헤더를 포함한 HTTP 응답 메세지를 생성한다.
  6. 응답을 보낸다 -- 클라이언트에게 응답을 돌려준다.
  7. 트랜잭션 로그를 남긴다 -- 로그파일에 트랜잭션 완료에 대한 기록을 남긴다.

이 글은 다음 웹 서버가 하는 일로 연결 됩니다.

'Network' 카테고리의 다른 글

TLS, SSL과 HTTPS  (0) 2020.12.19
stateless, stateful - 세션과 토큰 인증방식  (0) 2020.12.16
Web Server가 하는 일  (0) 2020.11.23
Web이란?  (0) 2020.11.23
Comments