웹 서버 상세 처리 과정






1. 정적 페이지 접근 시(HTTP Server)




- 브라우저를 통한 정적 페이지(html, img, js, css, xml등) 접근 시 웹 서버 내부 처리 과정은 아래와 같다.









- Wite Shark를 통해 본 TCP/HTTP 처리 과정



- 파란 테두리: Socket(TCP) 처리 과정을 나타낸다.(TCP 세션 수립)

- 빨간 테두리: HTTP Request/Response 처리 과정을 나타낸다.




1. HTTP Session(논리적 연결) 생성


2. 클라이언트(브라우저) 프로그램안의 ThreadClient Socket(TCP(임의의 남는 랜덤 포트))을 만들어(생성) 서버 Socket(TCP(80))에 연결을 수행한다.(이때 Client-Socket에는 HTTP 통신 전문(Request-Header ) 대한 내용이 포함된다.)


- 이 과정을 통해 TCP 세션 수립(3-way HandShaking)이 완료된다.

- 이 과정을 통해 Client/Server 메시지(데이터 패킷) 교환 준비가 완료된다.


3. "웹 서버"는 요청된 Client-Socket 데이터(HTTP 통신 전문)를 바탕으로 HTTP Request Response를 수행한다.


3. 클라이언트(브라우저)와 웹 서버는 HTTP Request 및 Response를 수행한다.


4. 서버 Socket Close(웹 서버는 HTTP Response 수행 후 생성된 서버 Socket을 닫는다. 하지만 Socket은 보통 바로 끊어지지 않고 얼마간 Listen(대기) 상태로 유지된다.)


5. 클라이언트 Socket Close 및 브라우저 쓰레드 종료.


6. HTTP Session Close

- 클라이언트(사용자) 접속 종료 시 서버에 적재된 HTTP Session은 소멸된다.






2. 동적 페이지 접근 시(HTTP Server + WAS 구성 시)




- 브라우저를 통한 동적 페이지(asp, aspx, php, jsp등) 접근 시 웹 서버 내부 처리 과정은 아래와 같다.





1. HTTP Session(논리적 연결) 생성


2. 클라이언트(브라우저) 프로그램안의 Thread가 Client Socket(TCP(임의의 남는 랜덤 포트))을 만들어(생성) 서버 Socket(TCP(80))에 연결을 수행한다.(이때 Client-Socket에는 HTTP 통신 전문(Request-Header ) 대한 내용이 포함된다.)


이 과정을 통해 TCP 세션 수립(3-way HandShaking)이 완료된다.

이 과정을 통해 Client/Server 메시지(데이터 패킷) 교환 준비가 완료된다.


3. "웹 서버"는 요청된 Client-Socket 데이터(HTTP 통신 전문)를 바탕으로 HTTP Request 및 Response를 수행한다.


3. 클라이언트(브라우저)와 웹 서버는 HTTP Request 및 Response를 수행한다.


- 이때 요청된 동적 페이지(index.aspx) 처리를 위해 WAS에 요청(구문 해석) 후 그 결과(*.html)를 응답한다.


4. 서버 Socket Close(웹 서버는 HTTP Response 수행 후 생성된 서버 Socket을 닫는다. 하지만 Socket은 보통 바로 끊어지지 않고 얼마간 Listen(대기) 상태로 유지된다.)


5. 클라이언트 Socket Close 및 브라우저 쓰레드 종료.


6. HTTP Session Close

- 클라이언트(사용자) 접속 종료 시 서버에 적재된 HTTP Session은 소멸된다.



IIS는 웹 서버(정적 컨텐츠 처리) +  WAS(보통 동적 컨텐츠 처리를 위해 사용)가 결합된 형태를 가진다즉, 분리된(웹 서버 + WAS) 형태와는 달리 내부 처리 과정이 다소 상이 할 수 있다. 하지만 기본 계념은 크게 벗어나지 않는다.


웹 서버의 주된 역활은 클라이언트/서버간의 HTTP 통신이며, WAS 비지니스 로직처리가 포함된 동적 페이지 처리   비중을 둔다.(정적 페이지 처리 또한 가능하다.)






3. HTTP Session Close 처리



- 클라이언트 접속 종료  서버에 적재된 HTTP Session은 소멸된다.(이 과정을 통해 브라우저에 생성된 Memory Cookie도 같이 소멸된다.)




1. 사용자 물리적 접속 종료 이벤트(브라우저 닫기 )


2. HTTP Session Timeout


- HTTP Session 생성 후 웹 서버에 접근한 클라이언트(사용자)가 서버에 할당된 Session Timeout 시간 까지 아무런 사용자 이벤트(사이트 내부에서 일어나는 모든 행위)를 발생 시키는 않을 경우 웹 서버는 내부적으로 논리적 세션 연결을 끊어버린다.)


3. 웹 서버 재 시작(IIS Restart)


4. *.dll 파일 Re-Build 과정(ASP.NET 기준) 






참고 사이트:


web server와 WAS(web application server)

http://pds5.egloos.com/pds/200708/18/42/200703_WAS(Web_Application_Server).pdf


TCP 세션 수립 과정

http://mohwaproject.tistory.com/entry/TCP-3-Way-HandshakeTCP-%EC%84%B8%EC%85%98-%EC%88%98%EB%A6%BD