웹 서버
- HTTP 및 그와 관련된 TCP처리를 구현한 것
- 모든 웹 서버는 리소스에 대한 HTTP 요청을 받아서 콘텐츠를 클라이언트에게 돌려준다.
- 자신이 제공하는 리소스를 관리하고 웹 서버를 설정, 통제, 확장하기 위한 관리 기능을 제공
- 웹 서버의 형태
- 다목적 소프트웨어 웹 서버를 표준 컴퓨터 시스템에 설치하고 실행할 수 있다.
- 전자기기 안에 몇 개의 컴퓨터 칩만으로 구현된 웹 서버를 내장시켜서 관리 콘솔로 제공
- 웹 서버가 하는 일
- 커넥션을 맺는다. -- 클라이언트의 접속을 받아들이거나, 닫는다.
- 요청을 받는다. -- 요청 메시지를 네트워크로부터 읽어들임
- 요청 처리 -- 메시지를 해석하고 행동
- 리소스에 접근
- 응답 생성
- 응답을 보낸다.
- 트랜잭션을 로그로 남긴다.
(5) 응답 만들기
: 응답 상태코드, 응답 헤더, 응답 본문 포함
- 응답 엔터티
- Content-type 헤더: 응답 본문의 MIME 타입 서술
- Content-Length 헤더: 응답 본문 길이 서술
- 실제 응답 본문 내용
- MIME 타입과 리소스를 연결하는 방법
- mime.types: 확장자 기반 타입 연계 ex) image/gif
- 매직 타이핑: 타입을 알아보기 위해 파일 내용을 검사해 매직 파일에 해당하는 패턴을 찾음
- 유형 명시: 확장자나 내용에 상관없이 명시
- 유형 협상: 웹 서버가 사용자와의 협상으로 타입 판별
리다이렉션
: 웹 서버는 요청을 수행하기 위해 브라우저가 다른 곳으로 가도록 리다이렉트 할 수 있다.
리다이렉션 응답의 상태코드 = 3XX
- 리다이렉트 사용
- 영구히 리소스가 옮겨진 경우
- 임시로 리소스가 옮겨진 경우: (303 See Other, 307 Temporary Redirect)
- URL 증강: 문맥 정보를 포함시키기 위해 재 작성된 URL로 리다이렉트 (303, 307 상태코드)
- 부하 균형: 과부화된 서버가 요청을 받으면, 클라이언트를 좀 덜 부하가 걸린 서버로 리다이렉트 (303, 307 상태코드)
- 친밀한 다른 서버가 있을 때: (303, 307 상태코드)
- 디렉터리 이름 정규화: /를 빠뜨렸을 때, 정상 도착을 위해 /를 추가한 URL로 리다이렉트
(6) 응답 보내기
: 비지속적인 커넥션이라면 서버는 모든 메시지를 전송했을 때 자신 쪽 커넥션을 닫고, 지속적인 커넥션이라면 서버가 Content-Length 계산이나 클라이언트 응답이 언제 끝나는지 알 수 없는 경우 커넥션은 열린 상태를 유지한다.
(7) 로깅
: 트랜잭션이 완료되었을 때 웹 서버는 트랜잭션이 어떻게 수행되었는지에 대한 로그를 로그파일에 기록
'개발도서 읽기 > HTTP 완벽 가이드' 카테고리의 다른 글
[2. HTTP 아키텍처] 7장) 캐시 (0) | 2021.05.02 |
---|---|
[2. HTTP 아키텍처] 6장) 프락시 (0) | 2021.04.29 |
[1. HTTP: 웹의 기초] 4장) 커넥션 관리 (0) | 2021.04.18 |
[1. HTTP: 웹의 기초] 3장) HTTP 메시지 (0) | 2021.04.18 |
[1. HTTP: 웹의 기초] 2장) URL과 리소스 (0) | 2021.04.11 |