1056 words
5 minutes
[HTTP 완벽 가이드] 05. 웹 서버
NOTE

웹 서버의 역할은 1. HTTP 자체에 대한 처리 (HTTP 프로토콜 구현과 HTTP 및 그와 관련된 TCP 처리 2. 웹 리소스 관리 3. 웹 서버 관리 이다.

키워드#

웹 서버

메모 및 핵심 요점#

  • 모든 웹 서버의 기본 기능 : 리소스에 대한 HTTP 요청을 받아서 콘텐츠를 클라이언트에게 돌려준다. 🌧️ HTTP 트랜잭션을 생각해보면 클라이언트는 요청을 하는 쪽, 서버는 응답을 하는 쪽이다. 즉 여기서 나오는 “웹 서버”는 HTTP 응답을 하는 역할을 한다.
  • 웹 서버의 기능 : HTTP 프로토콜 구현, HTTP 및 그와 관련된 TCP 처리 (🌧️ 통신의 관점), 웹 리소스 관리 (🌧️ 서버가 가지고 있는 자원에 대한 관점), 웹 서버 관리 (🌧️ 서버 그 자체에 대한 관점)
    • 웹 서버는 TCP 커넥션 관리에 대한 책임을 운영체제와 나눠 갖는다. (🌧️ 결국 어떤 서버에서 일어나는 모든 연산 과정과 네트워크 지원의 기저에는 운영체제가 base 가 되므로)
  • 웹 서버의 형태 : 1. 다목적 소프트웨어 웹 서버 2. 임베디드 웹 서버
    • 다목적 소프트웨어 웹 서버 : 해당 웹 서버 프로그램을 사용하면 네트워크에 연결된 거의 모든 컴퓨터와 운영체제에서 동작한다. 다양한 웹 서버 프로그램이 존재하지만, 그중 몇 가지 웹 서버 소프트웨어만이 널리 사용되고 있다. (2022년 12월 기준, nginx가 점유율 1위를 가지고 있다.)
    • 임베디드 웹 서버 : 제품에 내장될 목적으로 만들어진 웹 서버.
  • 대부분의 웹 서버는 ‘역방향 DNS(reverse DNS)’를 사용하여 클라이언트의 IP 주소를 클라이언트의 호스트 명으로 변환하도록 설정되어 있다.
  • ident 프로토콜은 서버에게 어떤 사용자 이름이 HTTP 커넥션을 초기화했는지 찾아낼 수 있게 해준다.
    • ident는 조직 내부에서는 잘 사용할 수 있지만, 공공 인터넷에서는 다음을 포함한 여러 이유로 잘 동작하지 않는다.
  • 웹 서버 아키텍처의 차이에 따라 요청을 처리하는 방식도 달라진다.
    • 많은 웹 서버는 다중 I/O 서버 방식을 택한다. 이 방식에서 서버와 맺어지는 모든 커넥션은 서버에서 감시 당하고 있으며, 이를 통하여 커넥션의 상태를 확인할 수 있고 이 상태에 따라 다른 양의 처리를 할 수 있다. ⇒ 따라서 스레드와 프로젝트는 유휴 상태의 커넥션에 매여 기다리느라 리소스를 낭비하지 않는다.
  • 웹 서버의 리소스는 문서 루트에서 지원된다.

인용#

웹 서버는 HTTP 및 그와 관련된 TCP 처리를 구현한 것이다. 웹 서버는 자신이 제공하는 리소스를 관리하고 웹 서버를 설정, 통제, 확장하기 위한 관리 기능을 제공한다. (126p)

웹 서버는 HTTP 프로토콜을 구현하고, 웹 리소스를 관리하고, 웹 서버 관리 기능을 제공한다. 웹 서버는 TCP 커넥션 관리에 대한 책임을 운영체제와 나눠 갖는다. (126p)

HTTP/1.1의 기능들을 지원하려면, 풍부한 리소스 자원, 가상 호스팅, 접근 제어, 로깅, 설정, 모니터링, 그 외 성능을 위한 각종 기능들이 필요하다. (128p)

사용자가 디렉터리 URI를 요청했을 때 기본 색인 파일이 없고 디렉터리 색인 기능이 꺼져 있지 않다면, 많은 웹 서버는 자동으로 그 디렉터리의 파일들을 크기, 변경일 및 그 파일에 대한 링크와 함께 열거한 HTML 을 반환한다. (🌧️ 디렉터리에서 바로 Live Server 켰을 떄, 나오는 그거 말하는 것 같다…) (141p)

참고자료#

December 2022 Web Server Survey

[HTTP 완벽 가이드] 05. 웹 서버
https://punchdrunkard.github.io/posts/book/htttp-guide/http05/
Author
42
Published at
2023-01-18