HTTP 1.1 : 지속 커넥션
멍청한 프록시 문제 때문에 keep-alive 커넥션 대신 “개선된 지속 커넥션”을 지원.
목적은 커넥션을 세팅하기 위한 준비시간을 줄일 수 있다는 원래의 목적과 같음.
특징
- http 1.0의 keep-alive와 달리 기본적으로 활성화되어 있다.
- 별도 설정을 하지 않은 이상, 무조건 지속 커넥션으로 취급
- 커넥션을 끊으려면
Connection : close헤더를 명시해야 한다.
지속 커넥션의 제한과 규칙
-
클라이언트가 요청에
Connection : close를 했으면, 이후에는 더 요청을 보낼 수 없다. -
커넥션에 있는 모든 메시지가 자신의 길이 정보를 정확히 가지고 있을 경우에만 커넥션을 지속할 수 있다. (Content-Length)
-
HTTP/1.1 프락시는 클라이언트와 서버 각각에 별도의 지속 커넥션을 맺고 관리해야 한다.
-
HTTP/1.1 프락시는 클라이언트의 지원 범위를 알고 있지 않은 한 지속 커넥션을 맺어서는 안 된다.
-
HTTP/1.1 클라이언트는 Connection 헤더와는 무관하게 언제든지 연결을 끊을 수 있다.
-
클라이언트는 전체 응답을 받기 전에 커넥션이 끊어지면 다시 보낼 수 있어야 한다.
-
클라이언트는 과부하를 방지하기 위해서라도 사용자 1명 당 2개의 커넥션만을 준비한다.
마찬가지로 프락시나 서버도 그러하다.