[TIL] 250825_Network: HTTP 헤더 - 일반 헤더(1)

지코·2025년 8월 25일
1

Today I Learned

목록 보기
89/94
post-thumbnail

✴️ HTTP 헤더 개요

HTTP 헤더는 예시와 같이 스타트 라인 이후로 쭉 나열된 다음, 한 줄의 공백 후에 메세지 본문이 들어간다. 당연히 HTTP 메서드의 종류에 따라 메세지 본문은 생략될 수 있다.

HTTP 헤더에는 HTTP 전송에 필요한 모든 부가 정보들을 담는다. 예를 들면 메세지 본문의 내용, 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등이 있다. 표준으로 지정된 헤더 필드가 정말 많으며, 필요할 경우 임의 헤더 필드도 추가할 수 있다.

과거에 주로 사용하던 RFC2616을 기반으로 한 헤더의 분류를 살펴보자.

  • General 헤더: 요청 메세지/응답 메세지 여부와 상관 없이, 모든 메세지에 적용되는 헤더.
    • ex> Connection: close
  • Request 헤더: 요청 메세지에 들어가는 헤더.
    • ex> User-Agent: Mozilla/5.0 (Macintosh; ..)
  • Response 헤더: 응답 메세지에 들어가는 헤더.
    • ex> Server: Apache
  • Entity 헤더: 메세지 본문에 들어가는 내용과 관련된 헤더.
    • ex> Content-Type: text/html, Content-Length: 3423

메세지 본문은 요청이나 응답에서 전달할 실제 데이터인 엔티티 본문 을 전달하는 데 사용하며, 엔티티 헤더 는 엔티티 본문의 데이터를 해석하기 위한 데이터 유형, 데이터 길이, 압축 정보와 같은 정보를 제공한다.

하지만 2014년, RFC7230~7235가 등장하며 HTTP 헤더의 스펙이 완전히 변경되게 된다❗️

엔티티(Entity)표현(Presentation) 으로 변경되면서, 표현 = 표현 메타 데이터 + 표현 데이터로 말하게 된다.

엔티티(Entity) 라는 단어가 완전히 사라졌기 때문에, 이제는 메세지 본문을 통해 표현 데이터(Presentation Data) 를 전달한다고 표현한다. 그리고 메세지 본문을 페이로드(Payload)라고 한다.


✴️ 표현

  • Content-Type: 표현 데이터의 형식
  • Content-Encoding: 표현 데이터의 압축 방식
  • Content-Language: 표현 데이터의 자연 언어(ex> 한국어, 영어 • • • )
  • Content-Length: 표현 데이터의 길이

리소스라는 것은 굉장히 추상적이기 때문에, 클라이언트와 서버 간에 데이터를 주고 받을 때는 헤더의 표현을 통해 데이터의 형식 등의 정보를 정확하게 기재해서 알린다.

또한 표현 헤더는 요청/응답 메세지에 모두 사용할 수 있다.

🔖 Content-Type: 표현 데이터가 어떤 형식이야?

컨텐츠 타입은 미디어 타입과 문자 인코딩 형식을 함께 기재한다. 예를 들어 text/html, application/json, image/png 등이 있다.

🔖 Content-Encoding: 표현 데이터를 어떻게 압축한 거야?

이 필드는 표현 데이터를 압축하기 위해 사용하며, 데이터를 전달하는 측에서 압축 후 인코딩 헤더를 추가하고, 데이터를 읽는 측에서 인코딩 헤더의 정보로 압축을 해제한다. 예를 들어 gzip, deflate, identity 등이 있다.

🔖 Content-Language: 표현 데이터가 어떤 언어로 표현되어있어?

이 필드는 표현 데이터의 표현 언어를 알려주기 위해 사용하며, ko, en, en-US 등이 있다.

🔖 Content-Length: 표현 데이터의 길이는 어떻게 돼?

바이트 단위로 기재되며, 참고로 전송 인코딩(Transfer Encoding)을 사용하면 이 필드를 사용할 수 없다.

Reference

🎥 모든 개발자를 위한 HTTP 웹 기본 지식

profile
꾸준함이 무기

0개의 댓글