Connection
요청·응답 Connection

개요

Connection은 현재 전송 연결을 어떻게 다룰지 제어하는 헤더입니다. 연결을 유지해 재사용할지(keep-alive), 응답 후 닫을지(close), 프로토콜을 전환할지(upgrade)를 지시합니다. HTTP/1.1의 지속 연결(persistent connection) 관리 핵심입니다.

자세히

HTTP/1.1은 기본적으로 연결을 유지(keep-alive)해 여러 요청·응답에 하나의 TCP 연결을 재사용합니다. 이는 TCP 핸드셰이크·TLS 협상 비용을 아껴 성능을 크게 높입니다. `Connection: close`를 보내면 이 메시지 처리 후 연결을 끊겠다는 뜻이고, `Connection: upgrade`는 `Upgrade` 헤더와 짝을 이뤄 WebSocket 같은 다른 프로토콜로 전환(101 Switching Protocols)을 요청합니다.

Connection은 홉 단위(hop-by-hop) 헤더입니다. 즉 종단 간이 아니라 인접한 두 노드 사이에서만 유효하며, 프록시는 이를 다음 홉으로 전달하지 않고 소비합니다. 또한 Connection 헤더는 자신에 나열된 헤더 이름(예: `Connection: Keep-Alive`)들도 홉 단위로 취급해 전달에서 제거하게 합니다.

HTTP/2와 HTTP/3에서는 연결 관리 방식이 근본적으로 달라져 Connection·Keep-Alive·Transfer-Encoding 같은 홉 단위 헤더가 금지됩니다. 이런 헤더가 HTTP/2 메시지에 있으면 프로토콜 오류로 처리됩니다.

문법

Connection: <token>[, <token>]* (keep-alive | close | upgrade | <header-name>)

e.g. Connection: keep-alive

지시어 / 값

keep-alive응답 후에도 TCP 연결을 유지해 재사용(HTTP/1.1 기본 동작).
close이 메시지 완료 후 연결을 닫겠다는 신호.
upgradeUpgrade 헤더와 함께 프로토콜 전환(예: WebSocket) 의도를 표시.

실무 참고

관련 헤더

Keep-AliveTransfer-EncodingUpgrade

관련 상태코드

스펙 근거