* HTTP 통신 분석(동작 원리)
간단한 예를 통해 HTTP 1.1 의 동작 원리를 분석해 보겠습니다.
말씀 드렸듯이 HTTP 1.1 부터는 HTTP 연결 유지를 사용할 수 있습니다.
HTTP 1.1 의 연결 유지 측면에서의 동작원리를 파악해 보겠습니다.
(이전 버전의 HTTP 는 연결유지를 사용하지 않는 것과 동일한 방식으로 동작합니다)
테스트 시나리오>>
클라이언트는 웹 서버의 test.htm 파일을 요청한다.test.htm 은 이미지를 하나 포함하는 html 파일이다
① 연결 유지(Keep-Alive) 사용시.
서버 측 : HTTP 연결 유지 사용, 연결 유휴 시간 제한 120 초
클라이언트 측 : HTTP 연결 유휴 시간 60 초
(이 경우 더 작은 값 즉 클라이언트의 값이 사용되므로 1분 동안 연결 유지가 된다)
- 첫 요청

1 : 클라이언트와 웹 서버가 통신을 위한 소켓 연결을 맺는다
2 : 웹 서버의 test.htm 파일을 요청(Request) 하고 서버는 응답한다(200 OK)
3 : test.htm 파일에 포함되어 있는 test.gif 파일을 요청 하고 서버는 응답한다(200 ok)
- 두 번째 요청 
1분 안에 두 번째 요청을 하였다.(클라이언트 웹 브라우저의 연결 유지 시간은 1분이다)
연결 유지를 사용하기 때문에 기존의 연결을 사용하여 리소스를 요청함을 알 수 있다.
응답 코드는 304 Not Modified 이다
(단, 1분이 지난 후에 다시 요청하면 연결을 다시 맺는걸 확인 할 수 있다)
- 이 요청에서의 HTTP 헤더 값

요청 헤더에서 클라이언트는 연결 유지를 사용함을 알 수 있다. 응답 헤더에서는 응답 후 연결을 해제 하는 헤더 값을 볼 수 없다.
② 연결 유지 사용하지 않을 시.
서버 측 : HTTP 연결 유지 사용 하지 않음.
클라이언트 측 : HTTP 연결 유휴 시간 60 초
(이 경우 더 작은 값 즉 서버 값이 사용되므로 연결이 유지 되지 않는다)
- 첫 요청 
1 : 클라이언트와 웹 서버가 통신을 위한 소켓 연결을 맺는다
2 : 웹 서버의 test.htm 파일을 요청(Request) 하고 서버는 응답과 동시에
연결을 해제 한다(응답코드는 [Close Connection] 에 포함되어 있다)
3 : test.htm 파일에 포함되어 있는 test.gif 파일을 요청하기 위해 다시 서버와 연결을 맺는다. 서버는 test.gif 파일을
응답하고 다시 연결을 해제 한다. 이 요청에서는 총 두 번의 연결/해제 과정이 있었다.
- 두 번째 요청
첫 요청과 동일한 과정이 일어 난다.
- 이 요청에서의 HTTP 헤더 값

요청하는 클라이언트는 연결 유지를 사용하고 있어도 웹 서버는 연결 유지를 사용하지 않기 때문에 응답 헤더에서
Connection: Close 를 확인 할 수 있다. 즉 매 요청마다 연결/응답 과정이 일어 난다는 것을 알 수 있다
8. HTTP 요청/응답
아래의 그림은 HTTP 요청/응답 과정을 도식화 한 것입니다
(ex: test.htm 의 기본 문서를 요청한다. 이 기본문서는 이미지 파일 하나를 포함한다)
위의 과정 중 HTTP 연결 유지를 사용하였을 경우입니다
