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는 부가 데이터를 제외하고 보내고자하는 데이터 자체를 의미한다.
- 데이터 전송할 때 header, metadata, error check를 위한 부가적인 데이터를 담아서 전송하는데,
⛅️ 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
- Representation Data(표현 데이터)의 형식 설명
- 미디어 타입, 문자 인코딩 등의 정보를 전달하는데에 사용
- ex) text/html; charset=UTF-8, application/json, image/png
✅ Content-Encoding]
- Representation data를 압축할 때 사용
- 데이터를 전달하는 쪽에서 데이터 압축 후 인코딩 헤더를 추가
→ 데이터를 읽는 쪽에서 Content-Encoding 헤더의 정보를 이용하여 압축을 해제 - ex) gzip, deflate, identity
✅ Content-Language
- Representation data의 자연 언어
- ex) ko, en, en-US
✅ Content-Length
- Representation data(payload)의 바이트 단위 길이
- Transfer-Encoding(전송 코딩)을 사용하면, Content-Length를 사용하면 안된다.
728x90