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