keep-alive 커넥션은 하나의 지속 커넥션을 활용하므로써 커넥션을 맺고 끊는 데 걸리는 시간이 필요없어져 시간이 단축되었다.
클라이언트는 커넥션을 유지하기 위해서 요청에 Connection: keep-alive 헤더를 포함하여 전송한다. 서버도 keep-alive를 지원한다면 응답헤더에 동일한 헤더를 포함시켜 응답한다.
keep-alive는 강제사항이 아니기 때문에 클라이언트나 서버가 무조건 그것을 따를 필요는 없다. 언제든지 keep-alive 커넥션은 끊어질 수 있다.
keep-alive의 동작은 Keep-Alive 헤더의 쉼표로 구분된 옵션들로 제어할 수 있다.
timeout: 커넥션이 얼마간 유지될 것인지를 의미 (하지만, 이대로 동작한다는 보장은 없음)max: 해당 커넥션으로 처리될 HTTP 트랜잭션의 최대 수 (하지만, 이대로 동작한다는 보장은 없음)예시)
Connection: Keep-Alive
Keep-Alive: max=5, timeout=120
엔티티 본문의 길이를 알 수 있어야 커넥션을 유지할 수 있다.
프록시와 게이트웨이는 Connection 규칙을 철저히 지켜야한다. 프록시와 게이트웨이는 메시지를 업스트림으로 전달 전에 Connection 헤더를 제거해야한다 (Connection 헤더는 Hop-by-Hop 헤더이기 때문)