Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

웹개발

이제 웹 기반 응용개발 지식은 거의 필수적으로 요구되는 시대입니다. 구체적인 웹 사이트 개발은 아니더라도 거시적인 웹 기반 서비스에 대한 지식 배양을 위해 할 것이 참 많네요 ^^

[HTTP 프로토콜] HTTP 동작 원리

작성자 : 박종명
최초 작성일 : 2008-05-07 (수요일)
최종 수정일 : 2008-05-07 (수요일)
조회 수 : 12642

* 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 연결 유지를 사용하였을 경우입니다


1.       Connection : 클라이언트는 요청 시 웹 서버와 새 소켓 연결을 한다
2.       Request     : 소켓 연결이 되었다면 실제 요청 자원을 Request 한다
3.       Response   : 2번 과정에서 요청한 자원에 대해 응답헤더와 본문 데이터를 클라이언트로 응답(전송)한다
4.       Request     : 2번 과정에서 요청한 파일이 이미지를 포함하고 있으면 그 이미지에 대해 다시 요청한다
5.       Response   : 4번 의 요청 리소스에 대한 응답을 한다 
                          (Connnection 은 유휴시간 1분이 경과되면 끊어질 것입니다)

이름
비밀번호
홈페이지
EH <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요