응답 메시지에 사용될 때 "연결 : 닫기"는 무엇을 의미합니까?


30

클라이언트가 Connection: close요청 메시지에서 헤더를 사용 하면 응답 메시지를 보낸 후 서버가 연결을 닫기를 원한다는 의미입니다.

이 헤더는 요청 메시지에만 사용된다고 생각했지만 응답 메시지에도 사용됩니다. 예를 들면 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

응답 메시지에 사용될 때이 헤더는 무엇을 의미합니까?

클라이언트가 Connection: keep-alive요청 메시지에 헤더를 사용한 경우에도 응답 메시지를 보낸 후 서버가 연결을 닫을 것임을 의미합니다 . 나 맞아?

답변:


28

예, 맞습니다. 서버는 단지 "keep-alive 요청을 지원하지 않으며 완료되면 연결을 닫을 것"이라고 말할 수 있습니다.

RFC 2616, 섹션 14.10에서 :

HTTP / 1.1은 발신자가 응답이
완료된 후 연결이 종료 될 것임을 알리는 "닫기"연결 옵션을 정의합니다
. 예를 들어

   Connection: close

요청 또는 응답 헤더 필드
에서 현재 요청 / 응답이 완료된 후 연결이 '지속적'(섹션 8.1)으로 간주되지 않아야 함을 나타냅니다 .

영구 연결을 지원하지 않는 HTTP / 1.1 응용 프로그램은 모든 메시지에 "닫기"연결 옵션을 포함해야합니다.


3
서버가 단순히 닫을 수 있다면 연결이 닫힐 것이라고 말하는 이유는 이상한 IMO입니까? 클라이언트가 서버에 의해 연결이 끊어 졌음을 볼 수는 없습니다. 이 헤더의 요점은 무엇입니까? 나는 여기에 어떤 가치도 보이지 않습니다.
Pavel P

1
@Pavel로드 밸런서가 사용중인 경우 연결 유지 연결을 종료하도록 프런트 엔드로드 밸런서에 알리려는 경우 웹 응용 프로그램에 응답에 "Connection : close"http 헤더가 포함됩니다.
바질

1
로드 밸런서가 서버 또는 클라이언트에 대한 연결을 닫도록 @BasilA? IMO로드 밸런서는 서버가 연결을 닫았 음을 알 수 있으며 헤더를 읽지 않고도 알 수 있습니다. 또한 반대의 경우도 마찬가지입니다 : 서버는 Connection: close헤더 없이 연결을 닫을 수 있습니다
Pavel P

@Pavel로드 밸런서는 일반적으로 여러 클라이언트로부터 여러 연결을 수신하고 연결 유지 연결을 통해 멀티플렉싱을 사용하여 백엔드와 동일한 연결을 사용합니다. 일부 백엔드가이 멀티플렉싱의 일부가되고 싶지 않을 경우, 백엔드 http 응답에로드 밸런서에게 연결을 닫고 멀티플렉싱을 중지하도록 알리는 "Connection : close"가 포함되어야합니다. 자세한 내용은 AWS로드 밸런싱 안내서 ( 'HTTP 연결'로 스크롤) docs.aws.amazon.com/elasticloadbalancing/latest/userguide/…
Basil A

2
@BasilA 당신이 옳은 것 같습니다. 흥미 롭군 연결 일반 헤더 필드를 사용하면 발신자가 특정 연결에 필요한 옵션을 지정할 수 있으며 추가 연결을 통해 프록시와 통신해서는 안됩니다.
다니엘 F
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.