6장 HTTP 헤더-1

그림으로 배우는 HTTP & Network
(우에노 센 저 / 이병억 역 )
을 읽고 정리한 내용입니다.


HTTP 헤더의 구조와 각 헤더 필드의 역할에 대해 알아보자.

HTTP 메시지 헤더

메시지 헤더: 클라이언트와 서버 처리에 필요한 주요 정보가 거의 다 여기에 있다.
개행 문자(CR+LF)
메시지 바디: 사용자와 리소스를 필요로 하는 정보가 있다.

HTTP 프로토콜의 리퀘스트와 리스폰스에는 반드시 메시지 헤더가 포함되어 있는데,
메시지 헤더에는 클라이언트나 서버가 리퀘스트나 리스폰스를 처리하기 위한 정보가 들어 있다.

리퀘스트의 HTTP 메시지

메소드, URI, HTTP 버전, HTTP 헤더 필드 등으로 구성되어 있다.

리스폰스의 HTTP 메시지

HTTP 메시지와 HTTP 버전, 상태 코드(코드와 설명), HTTP 헤더 필드 등으로 구성되어 있다.

헤더 필드는 HTTP 버전과 확장 사양에 따라서 지원하는 내용이 달라진다.


HTTP 헤더 필드

HTTP 헤더 필드는 중요한 정보를 전달한다

HTTP 헤더 필드는 HTTP 메시지를 구성하는 요소의 하나이다.
헤더 필드는 HTTP 프로토콜 중에서 클라이언트와 서버간의 통신에서 리퀘스트에도 리스폰스에도 사용되고 있고,
부가적으로 중요한 정보를 전달하는 역할을 담당한다.

메시지 바디의 크기나 사용하고 있는 언어, 인증 정보 등을 브라우저나 서버에 제공하기 위해 사용되고 있다.

헤더 필드에서는 부가적인 정보를 다루는 일이 많다

HTTP 헤더 필드의 구조

HTTP 헤더 필드는 헤더 필드 명과 필드 값으로 구성되어 있고, 콜론:으로 나뉘어져 있다.

request
1
헤더 필드 명: 필드 값

메시지 바디의 오브젝트의 타입을 가리키는 Content-Type이라는 HTTP 헤더 필드가 포함되어 있다.

request
1
Content-Type: text/html
  • Content-Type: 필드명
  • “text/html”: 필드값

하나의 HTTP 헤더 필드가 여러 개의 필드값을 가질 수 있다.

request
1
Keep-Alive:timeout=15, max=100

cf) HTTP 헤더 필드가 중복된 경우
사양으로 명확하게 정해져 있지 않기 때문에 브라우저마다 다른 동작을 하게 된다.
어떤 브라우저는 최초의 헤더 필드를 우선적으로 처리하고,
어떤 브라우저는 마지막 헤더 필드를 우선적으로 처리한다.


4종류의 HTTP 헤더 필드

  • 일반적 헤더 필드(General Header Fields):
    리퀘스트 메시지와 리스폰스 메시지 둘 다 사용되는 헤더
  • 리퀘스트 헤더 필드(Request Header Fields)
    클라이언트 측에서 서버 측으로 송신된 리퀘스트 메시지에 사용되는 헤더
    리퀘스트의 부가적 정보와 클라이언트의 정보, 리스폰스의 콘텐츠에 관한 우선 순위 등을 부가한다.

  • 리스폰스 헤더 필드(ResponseHeader Fields)
    서버 측에서 클라이언트 측으로 송신한 리스폰스 메시지에 사용되는 헤더
    리스폰스의 정보와 서버의 정보, 클라이언트의 추가 정보 요구 등을 부가한다.

  • 엔티티 헤더 필드(Entity Header Fields)
    리퀘스트 메시지와 리스폰스 메시지에 포함된 엔티티에 사용되는 헤더
    콘텐츠 갱신 시간 등의 엔티티에 관한 정보를 부가한다.

HTTP/1.1 헤더 필드 일람

HTTP/1.1 이외의 헤더 필드

End-to-end 헤더와 Hop-by-hop 헤더

End-to-end 헤더

이 카테고리에 분류된 헤더는 리퀘스트나 리스폰스의 최종 수신자에게 전송된다.
캐시에서 구축된 리스폰스 중 보존되어야 하고, 다시 전송되지 않으면 안되도록 되어 있다.

Hop-by-hop 헤더

이 카테고리에 분류된 헤더는 한 번 전송에 대해서만 유효하고 캐시와 프록시에 의해서 전송되지 않는 것도 있다.
HTTP/1.1과 그 이후에서 사용되는 Hop-by-hop 헤더는 Connection 헤더 필드에 열거해야 한다.
아래의 8개 헤더 필드 이외에는 모두 End-by-end 헤더에 분류된다.

  • Connection
  • Keep-Alive
  • proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade