Chapter 05 - 웹 서버

📌 읽으면서 밑줄친 내용 그대로 옮겨 적음. *이 붙은 문장은 생각.
  • 웹 서버는 HTTP 요청을 처리하고 응답을 제공한다.
  • 웹 서버는 HTTP 프로토콜을 구현하고, 웹 리소스를 관리하고, 웹 서버 관리 기능을 제공한다.
  • 웹 서버의 동작
    1. 클라이언트 커넥션 수락
      1. 새 커넥션 다루기
      2. 클라이언트 호스트 명 식별
        • 대부분의 웹 서버는 '역방향 DNS(reverse DNS)'를 사용해서 클라이언트의 IP 주소를 클라이언트의 호스트 명으로 변환하도록 설정되어 있다.
      3. ident를 통해 클라이언트 사용자 알아내기
        • ident 프로토콜은 서버에게 어떤 사용자 이름이 HTTP 커넥션을 초기화햇는지 찾아낼 수 있게 해준다.
    2. 요청 메시지 수신
      1. 메시지의 내부 표현
      2. 커넥션 입력/출력 처리 아키텍처
        • 단일 스레드 웹 서버
          • 한 번에 하나씩 요청을 처리한다.
        • 멀티프로세스와 멀티스레드 웹 서버
          • 여러 요청을 동시에 처리하기 위해 여러 개의 프로세스 혹은 고효율 스레드를 할당한다.
        • 다중 I/O 서버
          • 모든 커넥션은 동시에 그 활동을 감시당한다.
          • 스레드와 프로세스는 유휴 상태의 커넥션에 매여 기다리느라 리소스를 낭비하지 않는다.
        • 다중 멀티스레드 웹 서버
          • 멀티스레딩과 다중화(multiplexing)를 결합한다.
    3. 요청 처리
    4. 리소스의 매핑과 접근
      1. Docroot
        • 일반적으로 웹 서버 파일 시스템의 특별한 폴더를 웹 콘텐츠를 위해 예약해 둔다. 이 폴더는 문서 루트 혹은 docroot로 불린다.
      2. 디렉터리 목록
        • 클라이언트가 디렉터리 URL을 요청했을 때 다음과 같이 몇 가지 다른 행동을 취하도록 설정할 수 있다.
          • 에러를 반환한다.
          • 디렉터리 대신 특별한 '색인 파일'을 반환한다.
          • 디렉터리를 탐색해서 그 내용을 담은 HTML 페이지를 반환한다.
      3. 동적 콘텐츠 리소스 매핑
        • 사실, 웹 서버들 중에서 애플리케이션 서버라고 불리는 것들은 웹 서버를 복잡한 백엔드 애플리케이션과 연결하는 일을 한다.
      4. 서버사이드 인클루드(Server-Side Includes, SSI)
      5. 접근 제어
    5. 응답 만들기
      1. 응답 엔터티
        • 응답 본문의 MIME 타입을 서술하는 Content-Type 헤더
        • 응답 본문의 길이를 서술하는 Content-Length gpej
        • 실제 응답 본문의 내용
      2. MIME 타입 결정하기
        1. mime.types
        2. 매직 타이핑(Magic typing)
        3. 유형 명시(Explicit typing)
        4. 유형 협상(Type negotiation)
      3. 리다이렉션
        1. 영구히 리소스가 옮겨진 경우
        2. 임시로 리소스가 옮겨진 경우
        3. URL 증강
        4. 부하 균형
        5. 친밀한 다른 서버가 있을 때
        6. 디렉터리 이름 정규화
    6. 응답 보내기
      • 서버는 커넥션 상태를 추적해야 하며 지속적인 커넥션은 특별히 주의해서 다룰 필요가 있다.
    7. 로깅

알게된 점

  • 웹 서버의 전체적인 동작 흐름

관련해서 같이 이야기 나누고 싶은 점

  • 이번에는 특별히 궁금한점이나 어려운점은 없었던 것 같습니다..