웹 서버 상세 처리 과정
1. 정적 페이지 접근 시(HTTP Server)
- 브라우저를 통한 정적 페이지(html, img, js, css, xml등) 접근 시 웹 서버 내부 처리 과정은 아래와 같다.
- Wite Shark를 통해 본 TCP/HTTP 처리 과정
- 파란 테두리: Socket(TCP) 처리 과정을 나타낸다.(TCP 세션 수립)
- 빨간 테두리: HTTP Request/Response 처리 과정을 나타낸다.
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를 수행한다.
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