- 이 게시글은 인프런 "모든 개발자를 위한 HTTP 웹 기본지식"의 김영한님 강의를 보고 요약한 내용입니다.
1. HTTP 헤더 개요
2023.01.09 - [HTTP] - [HTTP] 웹 기본 지식 정리 - HTTP 기본
[HTTP] 웹 기본 지식 정리 - HTTP 기본
- 이 게시글은 인프런 "모든 개발자를 위한 HTTP 웹 기본지식"의 김영한님 강의를 보고 요약한 내용입니다. 1. HTTP(HyperText Transfer Protocol) HTTP 메시지에 모든 것을 전송한다 !! HTML Text Image 음성, 영상,
for-ahyun.tistory.com
→ HTTP 헤더 내용 참고
분류
RFC2616(과거) - 1999년
HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 |
<html> <body>...</body> </html> |
1) HTTP 헤더
- General 헤더 : 메시지 전체에 적용되는 정보
- Request 헤더 : 요청 정보
- Response 헤더 : 응답 정보
- Entity 헤더 : 엔티티 바디 정보
2) HTTP 바디
- 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터
- 엔티티 헤더는 엔티티 데이터를 해석할 수 있는 정보(데이터 유형, 길이, 압축 정보 등) 제공
▶ 폐기됨
RFC723x(최신) - 2014년
* 엔티티(Entity) → 표현(Representation)
* 표현(Representation)
= 표현 메타데이터(Representation Metadata) + 표현 데이터(Representation Data)
HTTP 바디
- 메시지 본문(message body)을 통해 표현 데이터 전달
- 메시지 본문 = 페이로드(payload)
- 표현은 요청이나 응답에서 전달할 실제 데이터
- 표현 헤더는 표현 데이터를 해석할 수 있는 정보(데이터 유형, 길이, 압축 정보 등) 제공
2. 표현
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
① Content-Type : 표현 데이터 형식
- 미디어 타입, 문자 인코딩 ex) text/html;charset=utf-8, application/json, image/png
② Content-Encoding : 표현 데이터의 압축 방식
- 표현 데이터를 압축하기 위해 사용
- 데이터를 전달하는 곳에서 압축 후 인코딩 헤더 추가 → 데이터를 읽는 곳에서 인코딩 헤더 정보로 압축 해제
ex) gzip, deflate, identity(압축x)
③ Content-Language: 표현 데이터의 자연 언어 ex) ko, en, en-US
④ Content-Length : 표현 데이터의 길이 - 바이트 단위, Transfer-Encoding 사용 시 Content-Length 사용하면 안됨
* 표현 헤더는 전송, 응답 둘 다 사용
3. 콘텐츠 협상(Content Negotiation)
: 클라이언트가 선호하는 표현 요청
① Accept : 클라이언트가 선호하는 미디어 타입 전달
② Accept-Charset : 클라이언트가 선호하는 문자 인코딩
③ Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
④ Accept-Language : 클라이언트가 선호하는 자연 언어
* 협상 헤더는 요청시에만 사용
협상과 우선순위
- Quality Values(q) 값 사용
- 0 ~ 1, 클수록 높은 우선순위(생략시 1)
GET /event Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7 |
▶ ko-KR;q=1 → ko;q=0.9 → en-US;q=0.8 → en;q=0.7
- 구체적인것이 우선
GET /event Accept: text/*, text/plain, text/plain;format=flowed, */* |
▶text/plain;format=flowed → text/plain → text/* → */*
- 구체적인 것을 기준으로 미디어 타입을 맞춤
4. 전송 방식
1) 단순 전송
- 메시지 바디에 대한 Content-Length를 지정(콘텐츠의 길이를 알 때)
- 한 번에 요청하고 한 번에 받음
2) 압축 전송
- 압축 후 Content-Encoding을 추가하여 전송
3) 분할 전송
HTTP/1.1 200 OK Content-Type: text/plain Transfer-Encoding: chunked 5 Hello 5 World 0 \r\n |
▶ 5바이트 Hello 전송 → 5바이트 World 전송 → 마지막을 표현하는 0바이트 전송
- 분할하여 전송할 경우 오는대로 바로 표시 가능
- Content-Length 사용 불가(예상 불가)
4) 범위 전송
HTTP/1.1 200 OK Content-Type: text/plain Content-Range: bytes 1001-2000 / 2000 qweqwe1l2iu3019u2oehj1987askjh3q98y |
- 범위 지정해서 전송 / 마지막 길이
'HTTP' 카테고리의 다른 글
[HTTP] 웹 기본 지식 정리 - HTTP 헤더(캐시와 조건부 요청)① (0) | 2023.01.24 |
---|---|
[HTTP] 웹 기본 지식 정리 - HTTP 헤더(일반헤더)② (0) | 2023.01.22 |
[HTTP] 웹 기본 지식 정리 - HTTP 상태 코드 (0) | 2023.01.17 |
[HTTP] 웹 기본 지식 정리 - HTTP 메서드 활용② (0) | 2023.01.15 |
[HTTP] 웹 기본 지식 정리 - HTTP 메서드 활용① (0) | 2023.01.15 |