본문 바로가기

IT 살이/04. 기술 - 프로그래밍

02. IIS - HTTP 요청 처리

다음 그림은 커널 모드의 리스너부터 시작해서 HTTP 요청을 처리하는 과정을 그림으로 그렸다.( 다른 프로토콜 요청 처리에 대한 그림은 이와 유사하게 될 것으로 본다.)



구성 요소들이 좀 더 상세하게 그려졌고, 서로간의 관련서도 보여주도록 그렸다. configuration 저장소가 있다. 이 configuration 저장소는 파일 시스템의 파일("ApplicationHost.config")로 되어 있다. 이곳에 웹 어플리케이션과 어플리케이션 풀등의 정보가 저장된다.

ASPX 요청이 들어온다고 가정해보자(IIS7.x의 통합모드에서는 HTML 요청도 비슷한 처리 과정을 거친다). 


1) 커널모드의 HTTP 리스너인 http.sys가 요청을 받고 이 요청은 커널 모드의 Request Queue에 넣는다. 

2) HTTP.sys는 configuration저장소에서 해당 URL에 매핑되는 어플리케이션의 정보들을 얻고자 WAS에 조회를 하게 된다.

3) WWW서비스는 어플리케이션 풀 및 사이트 설정 정보등을 건네받는다.

4) WWW서비스는 HTTP.sys 설정하는데 건네받은 설정 정보를 사용하다.  

5) WAS는 HTTP 요청이 매핑되는 어플리케이션 풀에 대한 프로세스를 생성한다. 

6) HTTP 요청을 워커 프로세스에서 처리해서 그 응답을 HTTP.sys에 전달한다.

7) 그 응답을 클라이언트로 전달한다.


HTTP요청이 오면 해당 URL을 처리할 워커 프로세스가 생성되어 있는지 확인한다. 없으면요청이 들어왔다는 것을 W3SVC에 있는 HTTP 리스너 어댑터에 알려서, 해당 URL에 해당하는 워커 프로세스를 생성한다. 해당 요청을 처리할 워커 프로세스가 있다면 워커 프로세스는 Request Queue에서 꺼내가서 처리한다. 


다음 절에서는 워커 프로세스에서의 처리 과정을 좀 자세히 보도록 한다.


Introduction to IIS Architectures

http://www.iis.net/learn/get-started/introduction-to-iis/introduction-to-iis-architecture#Request

- HTTP 요청 처리 프로세스에 대한 정리가 포함되어 있다.