Categories
Tags
Backtracking Base-64 인코딩 Cache-Control CI-CD Content-negotiation CORS CPU Scheduling Docker GitHub Actions HTTP HTTP 기본 인증 HTTP 완벽 가이드 HTTP2.0 HTTPS HTTP버전 Linux Memory Management Nginx OPTION 메소드 Paging Primality Test proxy Review robots.txt Simulation Spring Boot SSL, TLS TCP 커넥션 TRACE 메소드 UA (User Agent) URL Virtualization (OS) 검색 엔진 국제화 내용 협상 무중단 배포 엔터티와 인코딩 웹 로봇 웹 서버 지속 커넥션 캐시 쿠키 크롤러 클라이언트 식별 트랜스 코딩 프록시
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)
참고자료
[HTTP 완벽 가이드] 05. 웹 서버
https://punchdrunkard.github.io/posts/book/htttp-guide/http05/