SlideShare a Scribd company logo
15. Entities &
Encodings
아꿈사
1
HTTP ships billions of
media objects of all kinds
every day
2
HTTP ensure these
• Can be identified correctly(Content-type, Content-Language
headers)
• Can be unpacked properly(Content-length, Content-
Encoding headers)
• Is fresh(entity validator, cache-expiration)
• Meets the user’s needs(Accept headers)
• Moves quickly(range requests, delta encoding/compression)
• Arrives complete(transfer encoding header, Content-MD5)
3
HTTP
Messages,Entities
• Messages -> Crates(컨테이너)
• Entities -> Cargo(화물)
4
Entity headers(1)
• 엔터티 본문에 해당하는 해더
• 본문 크기와 콘텐츠, 혹은 리소스 그 자체를 서술
5
Entity headers(2)
• Content-Type
• Content-Length
• Content-Language
• Content-Location
• Content-Range
• Content-MD5
• Last-Modified
• Expires
• Allow
• Etag
• Cache-Control
6
Entity Bodies
• 가공되지 않은(raw) 데이터만을 담고 있다.
• Content-Type엔터티 헤더가 데이터 타입을 설명
(image/jpeg, text/javascript)
• Content-Encoding엔터티 헤더가 압축 혹인 인코딩
여부를 설명(gzip)
7
Content-Length(1)
• 엔터티 본문의 크기를 바이트 단위로 표현
(압축이 되었다면, 압축 후의 크기)
• 엔터티 본문이 있다면 필수적으로 있어야할 헤더
(메시지가 chunked encoding일 때는 필수X)
8
Content-Length(2)
• 메시지 잘림(truncation)을 검출하기 위해 사용
( Older versions of HTTP used connection close
to delimit the end of a message)
• Content-Length헤더가 없으면 HTTP본문을 캐싱하
지 않는다.
9
Content-Length(3)
• 지속 커넥션에서는 Content-Length헤더 필수
The Content-Length header lets the client know
where one message ends and the next begins.
• chunked encoding인 데이터는 예외
10
엔터티 본문 길이 규칙
1. 본문(body)가 허용되지 않는 특정 타입의 경우,
Content-Length 헤더 무시 (HEAD)
2. Transfer-Encoding헤더가 있다면, zero-byte chunk로
끝나야한다.
3. Content-Length헤더가 있다면, 본문의 길이를 나타냄
(Transfer-Encoding헤더가 있다면, Content-Length무
시)
4. multipart/byteranges미디어 타입이라면 자기가 알아서
계산
5. 엔터티는 커넥션이 닫힐 때, 끝난다.
11
엔터티 요약(digests)
• HTTP메시지가 변형되는 것을 방지, 체크섬 생성
• Content-MD5 (MD5적용)
• 중단간 프락시와 캐시는 해당 헤더를 변경하지 않음
• 중복 저장 방지를 위한 해시 테이블의 키로 사용
• Want-Digest
12
Media Type and
Charset
• 엔티티 본문의 MIME타입을 기술
• 콘텐츠를 적절히 해독하고 처리하기 위해 사용
• 원본 엔터티 본문의 미디어 타입을 명시
• 형식 : primary media type / subtype
13
Media Type and
Charset
14
멀티파트 폼 제출(1)
• 여러 개의 메시지를 포함해서(한개의 폼으로) 전송
• HTTP폼을 채워서 제출하면, 멀티파트로 구성이 되
어 제출
15
16
Content-Encoding
Process(1)
1. 웹서버가 Content-type, Content-Length헤더로 원
본 응답 메시지 생성
2. 콘텐츠 인코딩 서버가 인코딩(Content-Encoding추
가)
Content-Length가 변경되면 수정
3. 수신 측 프로그램은 인코딩된 메세지를 받아 디코딩
17
Content-Encoding
Process(2)
Content-Encoding
Types
• gzip, compress, deflate인코딩은 무손실 압축
• gzip이 가장 일반적인 알고리즘
19
Accept-Encoding
Headers
• 클라이언트가 지원하지 않는 인코딩을 막기위해
• 클라이언트가 지원하는 인코딩 목록을 전달
20
Transfer / Chunked
Encoding(1)
• 텍스트 파일은 gzip압축 후, Content-Encoding
• JPEG파일은 압축률이 낮다 -> 네트워크를 통해 전
송되는
방법을 바꾼다.
21
Transfer / Chunked
Encoding(2)
22
몇 가지 문제
• unknown size
• security
23
Transfer-Encoding
Headers
• Trnasfer-Encoding
• 어떠한 인코딩이 적용되어있는지 수신자에게 알림
• TE
• 서버에게 어떤 전송인코딩을 사용할 수 있는지 알
림
24
Chunked Encoding(1)
• 메시지를 일정 크기의 여러 청크로 쪼갠다.
• 서버는 각 청크를 순차적으로 전송
• 동적으로 본문을 생성, 빠르게 전송
25
Chunked Encoding(2)
26
Content and Transfer
Encodings
27
Transfer-Encoding 규칙
• 전송 인코딩의 집합은 반드시 ‘chunked’를 포함해야
한다.
• 메시지 본문에 적용된 마지막 전송 인코딩이 존재해
야한다.
• 청크 전송 인코딩은 반드시 메시지 본문에 한 번 이
상 적용되어야한다.
Freshness
• Expires Header
• 얼마나 오랫동안 컨텐츠를 캐시해야하는지 명시
• 하지만 클라이언트와 시계를 동기화 하기 어려움
• Expires: Sun Mar 18 23:59:59 GMT 2001
• Cache-Control
• 서버를 떠난 후로부터의 총 시간을 초단위로 설정
• cache-control:private,max-age=31535990
29
Validator(1)
• 캐시된 사본이 신선하지 않다면, 서버에서 가져옴
• 서버와 캐시된 파일이 같은지 검증
• 네트워크 대여폭 낭비를 줄이고, 캐시와 서버에 불필
요한 부하를 줄이기 위해서
30
Validator(2)
• ETag(Entity Tag)
• An ETag is an opaque identifier assigned by a
web server to a specific version of a resource
found at a URL. If the resource representation at
that URL ever changes, a new and different ETag
is assigned.
31
Validator(3)
32
Range Requests(1)
• 클라이언트가 문서의 일부분이나 특정 범위만을 요
청
• 모든 서버가 Range request를 받을 수 있는건 아님
• 파일공유 클라이언트, 멀티미디어 다운로드
33
Range Requests(2)
34
나는 Range request처리가능
Delta Encoding(1)
• 페이지 변경 시, 클라이언트에 캐싱된 부분과 서버
파일에 변경된 부분만 전송하는 방법 (RFC3329)
Delta Encoding(2)

More Related Content

PDF
HTTP 완벽가이드 - ch5. web server
PPTX
HTTP 완벽가이드 7장 캐시
PPTX
HTTP 완벽가이드 4장 커넥션관리
PPTX
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
PDF
HTTP 완벽가이드- 19장 배포시스템
PDF
HTTP 완벽가이드 21장
PDF
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
PPTX
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드 21장
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형

What's hot (20)

PDF
Http 완벽가이드(3장 http 메시지)
PPTX
HTTP 발표자료 - 김연수
PPT
구글의 분산스토리지
PPTX
Chap8 - HTTP 완벽가이드 8장
PDF
Web server
PDF
PDF
SPDY : 더 빠른 웹을 위한 프로토콜
PDF
서버성능개선 류우림
PPTX
CDN - Content Delivery Network
PDF
Express framework tutorial
PDF
Node-express 채팅 서버 개발기
PDF
PDF
Http 헤더
PPTX
01 큐브리드 이해
PDF
Http redirection
PDF
Web and server
PDF
Learning HTML5
PDF
04 자바 네트워크
PDF
HTTP가 가지는 특징에는 무엇이 있을까.pdf
PDF
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
Http 완벽가이드(3장 http 메시지)
HTTP 발표자료 - 김연수
구글의 분산스토리지
Chap8 - HTTP 완벽가이드 8장
Web server
SPDY : 더 빠른 웹을 위한 프로토콜
서버성능개선 류우림
CDN - Content Delivery Network
Express framework tutorial
Node-express 채팅 서버 개발기
Http 헤더
01 큐브리드 이해
Http redirection
Web and server
Learning HTML5
04 자바 네트워크
HTTP가 가지는 특징에는 무엇이 있을까.pdf
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
Ad

Viewers also liked (20)

PDF
c++ API디자인 ch9. 발표자료
PPTX
Diabetes #bioq
PPTX
`CIVICA
PPTX
Despedida de-zidane-en-el-bernabéu
PDF
DOCX
Digipak Analysis
PDF
David Mashuri
DOCX
Pre registration form
DOC
Verbos monik
PPT
Galerias Cdav La Habana Cuba
PDF
portfolio 2015
PPTX
Presentation day2 oracle12c
PPTX
What is merchandise
PDF
Doxygen 사용법
DOCX
HUKUM TATA NEGARA
PPTX
SQL Developer for DBAs
PDF
잉여의 잉여력 관리
PDF
소셜 코딩 GitHub & branch & branch strategy
PDF
Upgrade/Migrate to Oracle 12c: Live and Uncensored!
PPT
Taller de Catrinas Mexicanas por Lourdes Huerta
c++ API디자인 ch9. 발표자료
Diabetes #bioq
`CIVICA
Despedida de-zidane-en-el-bernabéu
Digipak Analysis
David Mashuri
Pre registration form
Verbos monik
Galerias Cdav La Habana Cuba
portfolio 2015
Presentation day2 oracle12c
What is merchandise
Doxygen 사용법
HUKUM TATA NEGARA
SQL Developer for DBAs
잉여의 잉여력 관리
소셜 코딩 GitHub & branch & branch strategy
Upgrade/Migrate to Oracle 12c: Live and Uncensored!
Taller de Catrinas Mexicanas por Lourdes Huerta
Ad

Similar to HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding) (20)

PPTX
210320 웹 통신
PDF
IT 일반기술 강의자료_ed10
PDF
HTTP 완벽가이드 : 1-1 http 개관
PDF
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
PDF
Web server page_ed10
PDF
더 빠른 웹을 위해: HTTP/2
PDF
WoO 2012-Web 서비스 기술
PDF
웹 서버 실행 환경
PPTX
GDG Dev camp 발표자료 - python으로 만들어보는 http서버
PPTX
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
PDF
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
PPTX
3분만에 살펴보는 HTTP header - content type
PDF
개발자를 위한 웹표준 & 웹접근성이야기
PDF
2021년 3월 6일 개발자 이야기
PDF
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
PPTX
11_웹서비스활용
PDF
HTTP/2와 웹 성능 최적화 방안
PDF
웹을 지탱하는 기술
PDF
웹을 지탱하는 기술
PPT
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?
210320 웹 통신
IT 일반기술 강의자료_ed10
HTTP 완벽가이드 : 1-1 http 개관
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
Web server page_ed10
더 빠른 웹을 위해: HTTP/2
WoO 2012-Web 서비스 기술
웹 서버 실행 환경
GDG Dev camp 발표자료 - python으로 만들어보는 http서버
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
3분만에 살펴보는 HTTP header - content type
개발자를 위한 웹표준 & 웹접근성이야기
2021년 3월 6일 개발자 이야기
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
11_웹서비스활용
HTTP/2와 웹 성능 최적화 방안
웹을 지탱하는 기술
웹을 지탱하는 기술
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?

More from Mungyu Choi (16)

PDF
learning spark - Chatper8. Tuning and Debugging
PDF
Chapter3 - learning spark
PDF
Elasticsearch server Chapter5
PDF
JVM과 톰캣 튜닝
PDF
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
PDF
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
PDF
nodejs websocket & SOCKET.IO
PDF
정렬(버블정렬,선택정렬,삽입정렬)
PDF
b+tree
PDF
PDF
hadoop ch1
PDF
A tour of go
PDF
Ch11. server infra
PDF
대규모 서비스를 지탱하는 기술 ch6
PDF
4.1 단일호스트의 부하
PDF
Chap4_2
learning spark - Chatper8. Tuning and Debugging
Chapter3 - learning spark
Elasticsearch server Chapter5
JVM과 톰캣 튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
nodejs websocket & SOCKET.IO
정렬(버블정렬,선택정렬,삽입정렬)
b+tree
hadoop ch1
A tour of go
Ch11. server infra
대규모 서비스를 지탱하는 기술 ch6
4.1 단일호스트의 부하
Chap4_2

HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)

Editor's Notes

  • #10: 이전 http version에서는 content-length대신, delimiter로 content의 끝을 검사 content-length값이 없으면 해당 메시지를 올바로 수신하지 못했다고 판단, 캐싱을 하지 않는다.
  • #11: 지속 커넥션 : TCP커넥션을 HTTP요청에 재사용하기 위해서 처리가 완료된 후에도 TCP커넥션을 유지하는 것
  • #12: 아래와 같은 순서대로 Content-Length를 가질 수 있다. Content-Length헤더를 가질수는 있지만 본문을 갖지 않습니다. 여러개의 chunked로 날라오는 데이터를 구분하는 방법은 마지막 http메시지에 0로 끝나는 메세지를 받았을 때 - HTTP/1.1명세에서는 사라짐 위의 어떤 규칙에도 해당되지 않는다면 엔터티는 커넥션이 닫힐 때, 끝난다.
  • #13: 종단 간(end-to-end) 무결성을 위해서 사용 현재는 자주 전송되지는 않음
  • #14: 예를 들어 엔터티가 콘텐츠 인코딩을 거친 경우에도, 인코딩 전의 엔터티 본문 유형을 명시해야함
  • #15: 예를 들어 엔터티가 콘텐츠 인코딩을 거친 경우에도, 인코딩 전의 엔터티 본문 유형을 명시해야함
  • #16: 멀티파트 미디어 타입 엔터디 본문은 여러 부분으로 나뉘는데, 각 부분은 전체 문서의 특정 봄위 바이트를 나열하고있다.
  • #17: 멀티파트 미디어 타입 엔터디 본문은 여러 부분으로 나뉘는데, 각 부분은 전체 문서의 특정 봄위 바이트를 나열하고있다.
  • #18: HTTP어플리케이션은 때때로 콘텐츠를 보내기 전에 인코딩을 하려고 한다. 큰html을 전송하기 위해 전송시간을 줄이기위해 압축을이나, 암호화를 하여 보내느데 이를 content encoding
  • #19: HTTP어플리케이션은 때때로 콘텐츠를 보내기 전에 인코딩을 하려고 한다. 큰html을 전송하기 위해 전송시간을 줄이기위해 압축을이나, 암호화를 하여 보내느데 이를 content encoding
  • #22: 메시지 데이터가 네트워크를 통해 전송되는 방법을 바꾸기 위해서
  • #23: Content-Length가 없다.
  • #24: - 몇몇 게이트 웨어 어플리케이션은 콘텐츠를 생성하지 않고서, 메시지 본문의 최종 크기를 판단 할 수 없다. 흔히 이 서버들은 그 사이즈를 알기전에 전송을 시작함 - 이미 전송 계층 보안은 SSL이 있는데 왜 이걸 쓰느냐