웹 서버 실행 환경

27
서버 실행 환경이란?

Upload: -

Post on 07-Jul-2015

539 views

Category:

Documents


2 download

DESCRIPTION

웹 서버 실행 환경(Socket 통신 및 HTTP 프로토콜 해석 등을 추상화한 환경)에 대한 이야기 입니다.

TRANSCRIPT

Page 1: 웹 서버 실행 환경

웹 서버 실행 환경이란?

Page 2: 웹 서버 실행 환경

목차

• 웹 개발자 이것까지 알아야 하나?

• 그럼 웹 서버는 무엇을 어떻게 처리하나?

• HTTP 메시지 상세 분석

Page 3: 웹 서버 실행 환경

웹 서버 실행 환경이란?

Socket 통신 및 HTTP 프로토콜 해석 등을 추상화한 환경

?

들어는본듯?

SMS?인증?

HTML5?WEB Socket??

?HTML?

WHAT?

Page 4: 웹 서버 실행 환경

1. 웹 개발자가 이것까지 알아야 하나?

TCP

Keep Alive

GzipHTTP

Chunked

등....;;;;;Cache

Session

Page 5: 웹 서버 실행 환경

"관련 Needs가 발생하지 않는 한 굳이 알아야 할 필요성은 없다고 생각한다." by 전성균!!

1. 웹 개발자가 이것까지 알아야 하나?

TCP

Keep Alive

GzipHTTP

Chunked

등....;;;;;

1. 웹 개발자가 이것까지 알아야 하나?

TCP

Keep Alive

GzipHTTP

Chunked

등....;;;;;Cache

1. 웹 개발자가 이것까지 알아야 하나?

TCP

Keep Alive

GzipHTTP

Chunked

등....;;;;;Cache

Session

Page 6: 웹 서버 실행 환경

그럼 몰라도 상관 없겠네?

이런거 까지 알아 뭐하겠노?또 소고기 사묵겠지?

Page 7: 웹 서버 실행 환경
Page 8: 웹 서버 실행 환경

"하지만 다양한 기능 구현 시 좀 더 최적화된 결과물을 만들어 낼 수 있다."

Page 9: 웹 서버 실행 환경

2. 그럼 웹 서버는 무엇을 어떻게 처리하나?

Page 10: 웹 서버 실행 환경

Web Server +

Web Application Server

너무 간단한거 아니야?

Page 11: 웹 서버 실행 환경

Wire Shake로 본 웹 서버 처리 과정

Page 12: 웹 서버 실행 환경

웹 서버 처리 과정1. HTTP Session(논리적 연결) 생성

2. 브라우저 내부 Thread가 Client Socket을 만들어 Server Socket 과의 연결을 수행한다3. 브라우저와 웹 서버는 HTTP Request 및 Response를 수행한다.

4. Server Socket Close

5. Client Socket Close 및 브라우저 쓰레드 종료.

6. HTTP Session Close

Page 13: 웹 서버 실행 환경

3. HTTP 메시지 상세 분석

Page 14: 웹 서버 실행 환경

HTTP 메시지

Page 15: 웹 서버 실행 환경

- HTTP 메시지는 원격 기계에 있는 문서의 위치와 메시지를 지정하는 방법이다.

- HTTP 메시지는 아스키코드 13번인 "캐리지 리턴(\r)"과 10번인 "라인피드(\n)"의 조합으로 각 행을 구분한다.(CRLF)

- HTTP 메시지는 시작행과 부가정보(선택적으로 추가 가능한 메시지 헤더와 메시지 바디)로 구성된다.

Page 16: 웹 서버 실행 환경

시작행

Page 17: 웹 서버 실행 환경

- 시작 행은 HTTP 메시지의 가장 첫 행에 존재한다.

- 시작 행은 HTTP (메서드/URL/버전/응답코드) 등의 정보로 구성된다.

- HTTP POST 요청 시 시작 행을 가장 먼저 읽어드린 웹 서버는 "메시지 바디"가 들어올 것을 예상 후 메시지 헤더의 Content-Length 길이를 읽어드려 메시지 바디 크기를 파악한다.

- HTTP GET 요청 시 시작 행을 가장 먼저 읽어드린 웹 서버는 "메시지 바디"가 존재하지 않는다는 것을예상한다.

Page 18: 웹 서버 실행 환경

HTTP 메시지 헤더

Page 19: 웹 서버 실행 환경

- 메시지 헤더는 콜론(:)으로 구분된 이름/값 쌍으로 정의된다.

- 메시지 헤더는 여러 개일 수 있으며, 가장 마지막에 내용 없는 메시지 헤더를 추가해 더 이상의 메시지 헤더가 없음을 알린다.

- Chunked 인코딩 방식에서는 크기가 0인 청크를 사용해 메시지 바디의 끝을 알린다.

즉 메시지 바디의 종료 시점은 크기가 0인 청크를 만날 때이다.

- 메시지 바디의 끝을 알리는 방법으로 Content-Length 메시지 헤더를 사용한다.(POST 요청 시 해당)

만약 이 값이 지정된 경우는 메시지 헤더 전송이 모두 완료된 후 해당 크기 만큼의 메시지 바디가 따라온다는 의미를 가지게 된다.(Chunked 인코딩 방식 제외)

Page 20: 웹 서버 실행 환경

HTTP 메시지 바디

Page 21: 웹 서버 실행 환경

- 메시지 헤더 종료 후 메시지 헤더의 Content-Length 길이를 통해 메시지 바디를 얼마나 읽어야 되는지 판단한다. 

- 만약 바이너리(mime-type: multipart/form-data) 데이터 전송 시 메시지 바디는 임의의 문자열인 "7dd3ba3a4316ee"로 각 행이 구분된다.

- 메시지 헤더의 Content-Length로 전달받은 크기에 도달하면 메시지 읽기를 종료한다.

이후 모든 내용(시작 행 + 부가정보)을 취합해 클라이언트로 응답한다.(정적 HTML 등)

Page 22: 웹 서버 실행 환경

HTTP 헤더 처리

Page 23: 웹 서버 실행 환경
Page 24: 웹 서버 실행 환경

HTTP 바디 처리

Page 25: 웹 서버 실행 환경
Page 26: 웹 서버 실행 환경

최희탁 지음

Hanbit eBook

Realtime 07

웹 프로그래머를 위한

서블릿 컨테이너의 이해

참고 서적

Page 27: 웹 서버 실행 환경

감사합니다.