책 HTTP 완벽 가이드 의 글을 요약 및 가져왔습니다.
- HTTP/1.0의 keep-alive 커넥션
- 멍청한(dump) 프록시 vs 영리한 프록시
- HTTP/1.1의 지속 커넥션
- 기본으로 활성화
- HTTP/1.1 애플리케이션은 트랜잭션이 끝난 다음 커넥션을 끊으려면 Connection: Close 헤더를 명시해야 한다. 이는 keep-alive 커넥션이 선택사항이 아닐 뿐만 아니라 지원 자체를 하지 않는다는 점에서 이전 HTTP 프로토콜과는 크게 다르다.
지속 커넥션(HTTP/1.1)의 제한과 규칙
- 커넥션에 있는 모든 메시지가 자신의 길이 정보를 정확히 가지고 있을 때에만 커넥션을 지속시킬 수 있다. 예를 들어 엔티티 본문은 정확한 Content-Length 값을 가지거나 청크 전송 인코딩(Chunked transfer encoding)으로 인코드 되어 있어야 한다.
- 이것이 바로 http 응답 메시지가 Content-Length를 HTTP 헤더에 보내는 이유이다.
- HTTP/1.1 프락시 서버는 클라이언트가 커넥션 관련 기능에 대한 클라이언트의 지원 범위를 알고 있지 않은 한 지속 커넥션을 맺으면 안된다. 앞서 설명했듯이 오래된 프록시가 Connection 헤더를 전달하는 문제가 발생할 수 있기 때문이다. 현실적으로 이것이 쉽지는 않으며, 많은 벤더가 이 규칙을 지키지 않는다.
=> 바꿔 말하면 클라이언트가 HTTP/1.0의 keep-alive 를 지원하는지 지원하지 않는지 명확하지 않으면 지속 커넥션을 맺으면 안된다는 말인듯 하다. 즉, 더 쉽게 말하면 프락시 서버는 클라이언트가 keep-alive 를 지원하지 않는 경우에만 지속 커넥션을 맺어야 한다는 뜻이다.
'HTTP' 카테고리의 다른 글
모든 개발자를 위한 HTTP 웹 기본 지식_섹션5_HTTP메소드_응용 (0) | 2022.02.08 |
---|---|
모든 개발자를 위한 HTTP 웹 기본 지식_섹션4_HTTP_메서드 (0) | 2022.02.06 |
모든 개발자를 위한 HTTP 웹 기본 지식_섹션2_URI와_웹_브라우저_요청_흐름 (0) | 2022.01.25 |
모든 개발자를 위한 HTTP 웹 기본 지식_섹션3_HTTP_기본 (0) | 2022.01.22 |
모든 개발자를 위한 HTTP 웹 기본 지식_섹션1_인터넷_네트워크 (0) | 2022.01.16 |