열렬히.뛰기

파이프라인 커넥션 - http 1.1

네트워크 > HTTP 완벽 가이드 > HTTP 완벽 가이드 > 4. 커넥션 관리 > HTTP : 커넥션 최적화 방법 > 파이프라인 커넥션 - http 1.1

파이프라인 커넥션

HTTP/1.1은 지속 커넥션을 통해서 요청을 파이프라이닝할 수 있다.

HTTP 1.0 환경에서는 요청에 대한 응답이 와야 다음 응답을 보낼 수 있다.

반면, HTTP 1.1에서는 요청을 병렬로 처리할 수 있는 파이프라이닝(Pipelining) 기능을 지원한다.

결과적으로 HTTP 1.1에서는 여러 개의 요청을 처리하는 응답 속도가 훨씬 빨라지게 된다.

하지만 파이프라인에는 여러 가지 제약 사항이 있다.

  • HTTP 클라이언트는 커넥션이 지속 커넥션인지 확인하기 전까지는 파이프라인을 이어서는 안된다.

  • HTTP 응답은 요청 순서와 같게 와야 한다. HTTP 메시지는 순번이 있지 않기 때문에, 응답이 순서 없이 오면 순서에 맞게 정렬시킬 수 없음.

  • HTTP 클라이언트는 커넥션이 언제 끊어져도 완료되지 않은 요청이 파이프라인에 있으면 언제든 다시 요청을 보낼 수 있어야 한다.

    예를 들어, 클라이언트가 지속 커넥션을 맺고 10개의 요청을 보낸다고 하더라도 서버는 5개의 요청만 처리하고 커넥션을 끊어버릴 수 있다.

    남은 5개의 요청은 실패할 것이고 클라이언트는 커넥션을 다시 맺고 요청을 보낼 수 있어야 한다.

  • HTTP 클라이언트는 POST 요청과 같은 비멱등성 요청은 파이프라인을 통해 보내면 안됨.

    에러가 발생하면 파이프라인을 통한 요청 중에 어떤 것들이 서버에서 처리되었는지 클라이언트가 알 수 없기 때문.