HTTP 관심있는 분들에게 도움이 되길 바라며, 부족하거나 오류가 있는 부분이 있다면 코멘트를 부탁합니다.
#1 HTTP 동작
- HTTP 통신의 시작
HTTP 통신은 오로지 클라이언트로부터 시작된다. 서버는 서비스할 다양한 컨텐츠를 보유하고 있을뿐 클라이언트의 요청없이는 컨텐츠를 제공하지 못한다. - 커넥션
HTTP 통신 역시 TCP 기반의 프로토콜이다.
클라이언트가 HTTP 요청을 하기 위해서는 클라이언트와 서버간 TCP 커넥션이 먼저 생성되어야 한다. - 지속연결(Persistence)
HTTP 버젼 1.1 이전에는 웹서버의 컨텐츠를 요청하기 위해서는 컨텐츠당 하나의 TCP 커넥션이 필요했다. 즉, 웹서버가 제공하는 하나의 페이지에 10개의 컨텐츠가 있다면, TCP 커넥션은 10개가 필요했던 것이다.
웹이 단순한 경우 크게 문제가 되지 않으나 요즘과 같이 다양한 컨텐츠가 하나의 웹페이지를 구성하는 복잡한 경우라면 웹서버 성능에 큰 영향을 미치게 된다.
이러한 단점을 보완하기 위해 HTTP 1.1 부터는 persistence 기능을 기본으로 제공한다.
"persistence"는 하나의 TCP 커넥션에 다수의 컨텐츠를 요청할 수 있는 기능이다.
* persistence는 HTTP 1.0에서 소개되었으나 모든 시스템이 이를 지원할 수 있는 것은 아니었다. HTTP 1.1은 기본으로 persistence를 지원한다. - Pipelining
HTTP 성능을 높힐 수 있는 기능 중 하나이다.
persistence 동작 기반에서 제공되는 기능인데, 여러 컨텐츠를 한번에(?) 요청할 수 있는 기능으로 이해하면 되겠다.
예를 간단하게 들자면, 10개의 컨텐츠를 클라이언트가 요청하기 위해서는 일반적으로 순차적인 요청으로 해야 한다. 즉, 하나의 컨텐츠를 받고 나서야 다음 컨텐츠를 요청할 수 있다는 것이다. 이렇게 되면 컨텐츠가 많은면 많을 수록 서비스 응답지연시간이 컨텐츠 수에 비례하여 늘어나게 되는데 pipelining 은 한번에 여러개의 컨텐츠를 요청하여 이런 단점을 보완한 기능이다.
다음에는 HTTP 요청 방식 (Request Method)에 대해 다뤄보겠습니다.
댓글 없음:
댓글 쓰기