Network

[HTTP] HTTP 헤더 - 개요, Representation(표현) 헤더

HEY__ 2022. 7. 24. 16:35
728x90

이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!

 

⛅️ HTTP 헤더의 개요

 HTTP 헤더의 구조

header-field = field-name : OWS field-value OWS
OWS 띄어쓰기 허용, field-name 대소문자 구문x

 

예시)
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

 

 

HTTP 헤더의 역할

  • HTTP 전송에 필요한 모든 부가 정보를 HTTP 헤더에 담는다.
  • message body의 내용, 크기, 압축, 인증, 서버 정보, 캐시 관련 정보...

 


⛅️ HTTP 표준 - RFC 2616(과거)

 Header의 분류와 HTTP Body

  • Header의 분류
    • General 헤더: 메세지 전체에 적용되는 정보   ex) Connection: close
    • Request 헤더: 요청 정보      ex) User-Agent: Mozilla/5.0
    • Response 헤더: 응답 정보   ex) Server: Apache
    • Entity 헤더: Entity body의 정보    ex) Content-Type: text/html,  Content-Length: 3423

 

  • HTTP Body
    • 메세지 본문(message body)은 Entity body를 전달하는데에 사용.
    • Entity Header는 Entity body의 데이터를 해석할 수 있는 정보를 제공.
    • 여기서 Entity body는 요청 or 응답에서 전달할 실제 데이터 → Payload(페이로드)
      • 데이터 전송할 때 header, metadata, error check를 위한 부가적인 데이터를 담아서 전송하는데,
        Payload는 부가 데이터를 제외하고 보내고자하는 데이터 자체를 의미한다.

 


⛅️ HTTP 표준 - RFC 723x

 RFC 723x로 가면서의 변화

Entity에서 Representation으로

 

시간이 지나면서 2014년에 RFC 7230이 등장하고, 그 이후로 계속해서 새로운 스펙(~RFC 7235)이 나왔다.

RFC 723x부터는 Entity(엔티티)가 Representation(표현)으로 변화한다.

 

 

 Representation 표현

Representation(표현) = Representation Metadata + Representation Data

 

  • 최신 스펙(RFC 7230)부터는 message body(메세지 본문)를 통해 Representation Data를 전달한다.
  • 여기서 message body가 payload(페이로드)이다.
  • Representation header는 message body를 통해 전달받은 Representation data를 해석할 수 있는 정보를 제공한다.
    • ex) 데이터의 유형(html, json), 데이터의 길이, 압축 정보...

 


⛅️ Representation Header

Representation Header(표현 헤더)는 메세지 본문이 담긴 데이터를 해석하기 위해 Request, Response message에서 사용된다.

 

 Content-Type

김영한님 자료 : Content-Type 예시

  • Representation Data(표현 데이터)의 형식 설명
  • 미디어 타입, 문자 인코딩 등의 정보를 전달하는데에 사용
  • ex) text/html; charset=UTF-8,  application/json,  image/png

 

 Content-Encoding]

김영한님 자료 : Content-Encoding 예시

  • Representation data를 압축할 때 사용
  • 데이터를 전달하는 쪽에서 데이터 압축 후 인코딩 헤더를 추가
    → 데이터를 읽는 쪽에서 Content-Encoding 헤더의 정보를 이용하여 압축을 해제
  • ex) gzip, deflate, identity

 

Content-Language

김영한님 자료 : Content-Language

  • Representation data의 자연 언어
  • ex) ko, en, en-US

 

Content-Length

김영한님 자료 : Content-Length

  • Representation data(payload)의 바이트 단위 길이
  • Transfer-Encoding(전송 코딩)을 사용하면, Content-Length를 사용하면 안된다.

 

 

728x90