Part 14. HTTP 일반 헤더-1(HTTP 헤더)

김수환·2023년 3월 22일
0
post-thumbnail

주제
Q 1 : “HTTP 헤더 용도?“
Q 2 : “과거의 HTTP 헤더와 HTTP 바디?“
Q 3 : “현재의 HTTP 표준의 변화?”
Q 4 : “HTTP 표준의 표현(Representation)?”
Q 5 : “콘텐츠 협상(클라이언트가 선호하는 표현 요청)?“
Q 6 : “전송방식(단순 전송, 압축 전송, 분할 전송, 범위 전송)?“


Q 1 : “HTTP 헤더 용도?“



HTTP 헤더용도
HTTP 헤더 용도Start-Line을 제외한 HTTP 전송에 필요한 모든 부가 정보를 담는다.
예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등
표준 헤더가 많다.
필요시 임의의 헤더 추가 가능하다.

Q 2 : “과거의 HTTP 헤더와 HTTP 바디?“



과거의 HTTP 헤더설명
General 헤더메시지 전체에 적용되는 정보
예) Connection: close
Request 헤더요청 정보
예) User-Agent: Mozilla/5.0
Response 헤더응답 정보
예) Server: Apache
Entity 헤더엔티티 바디 정보
예) Content-Type: text/html
예) Content-Length: 3423


과거의 HTTP 바디설명
메시지 본문(message body)엔티티 본문(entity body)을 전달하는데 사용
엔티티 본문요청이나 응답에서 전달할 실제 데이터
엔티티 헤더엔티티 본문의 데이터를 해석할 수 있는 정보 제공
데이터 유형(html, json), 데이터 길이, 압축 정보 등등

Q 3 : “현재의 HTTP 표준의 변화?


HTTP 표준의 변화설명
HTTP 표준의 변화1999년 : RFC2616(폐기 됨)
2014년 : RFC7230 ~ 7235 등장
RFC723x 변화엔티티(Entity) → 표현(Representation)
Representation = representation Metadata + Representation Data
표현 = 표현 메타데이터 + 표현 데이터
HTTP HEADER RFC7230(최신)표현 헤더는 표현 데이터를 해석할 수 있는 정보를 제공한다.
HTTP BODY RFC7230(최신)메시지 본문을 통해 표현 데이터 전달한다.
메시지 본분 = 페이로드(Payload)
표현은 요청이나 응답에서 전달할 실제 데이터

*표현 헤더는 표현 메타데이터와 페이로드 메시지를 구분해야 하지만 여기서는 생략한다.


Q 4 : “HTTP 표준의 표현(Representation)?”



HTTP 표준의 표현(Representaation) : 표현 헤더는 전송과 응답 둘다 사용이 가능하다.

HTTP 표준의 표현(Representaation)설명
Content-Type
표현 데이터의 형식(그림5)
미디어 타입 & 문자 인코딩
1) text/html; 2) charset=utf-8
3) application/json 4) image/png
Content-Encoding
표현 데이터의 압축 방식(그림6)
표현 데이터를 압축하기 위해 사용
데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가
데이터를 읽는 쪽에서 인코딩 헤더의 정보로 압축 해제
1) gizp, 2) deflate, 3) identity(압축 안함)
Content-Language
표현 데이터의 자연 언어(그림7)
표현 데이터의 자연 언어를 표현
1) ko, 2) en, 3) en-US
Content-Length
표현 데이터의 길이(그림8)
바이트 단위
Transfer-Encoding(전송 코딩)을 사용하면
Content-Length를 사용하면 안 됨.


Q 5 : “콘텐츠 협상(클라이언트가 선호하는 표현 요청)“



콘텐츠 협상(Content Negotiation) : 협상 헤더는 요청시에만 사용한다.

콘텐츠 협상(Content Negotiation)설명
Accept클라이언트가 선호하는 미디어 타입 전달
Accept-Charset클라이언트가 선호하는 문자 인코딩
Accept-Encoding클라이언트가 선호하는 압축 인코딩
Accept-Language클라이언트가 선호하는 자연 언어


<그림10>처럼 클라이언트의 요청은 한국어지만 ‘다중 언어 지원 서버’의 응답 헤더는 기본이 독일어고 영어를 지원한다면? 이때 바로 협상과 우선순위가 필요하다.

클라이언트가 선호하는 자연 언어설명
협상과 우선순위(Quality Values(q)Quality Values(q) 값을 사용한다.
0~1, 클수록 높은 우선순위
생략하면 1
Accept-Languageko-KR,ko;q=0.9,
en-US;q=0.8,en;q=0.7(그림11)
ko-KR;q=1 (q생략)
ko;q=0.9
en-US;q=0.8
en:q=0.7


클라이언트가 선호하는 미디어 타입설명
Accepttext/, text/plain, text/plain;format=flowed, /*
1) text/plain;format=flowed 2) text/plain
3) text/ 4) / *

Q 6 : “전송방식(단순 전송, 압축 전송, 분할 전송, 범위 전송)?“




참고 자료


김영한 인프런 강의 : 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의


profile
프리랜서 글쓰기 강사에서 백엔드 주니어 개발자로 👊🏻

0개의 댓글