Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
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
• La...
Entity Bodies
• 가공되지 않은(raw) 데이터만을 담고 있다.
• Content-Type엔터티 헤더가 데이터 타입을 설명
(image/jpeg, text/javascript)
• Content-Encodin...
Content-Length(1)
• 엔터티 본문의 크기를 바이트 단위로 표현
(압축이 되었다면, 압축 후의 크기)
• 엔터티 본문이 있다면 필수적으로 있어야할 헤더
(메시지가 chunked encoding일 때는 필수X...
Content-Length(2)
• 메시지 잘림(truncation)을 검출하기 위해 사용
( Older versions of HTTP used connection close
to delimit the end of a ...
Content-Length(3)
• 지속 커넥션에서는 Content-Length헤더 필수
The Content-Length header lets the client know
where one message ends an...
엔터티 본문 길이 규칙
1. 본문(body)가 허용되지 않는 특정 타입의 경우,
Content-Length 헤더 무시 (HEAD)
2. Transfer-Encoding헤더가 있다면, zero-byte chunk로
끝나야...
엔터티 요약(digests)
• HTTP메시지가 변형되는 것을 방지, 체크섬 생성
• Content-MD5 (MD5적용)
• 중단간 프락시와 캐시는 해당 헤더를 변경하지 않음
• 중복 저장 방지를 위한 해시 테이블의 키...
Media Type and
Charset
• 엔티티 본문의 MIME타입을 기술
• 콘텐츠를 적절히 해독하고 처리하기 위해 사용
• 원본 엔터티 본문의 미디어 타입을 명시
• 형식 : primary media type /...
Media Type and
Charset
14
멀티파트 폼 제출(1)
• 여러 개의 메시지를 포함해서(한개의 폼으로) 전송
• HTTP폼을 채워서 제출하면, 멀티파트로 구성이 되
어 제출
15
16
Content-Encoding
Process(1)
1. 웹서버가 Content-type, Content-Length헤더로 원
본 응답 메시지 생성
2. 콘텐츠 인코딩 서버가 인코딩(Content-Encoding추
가)
...
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
...
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 reso...
Validator(3)
32
Range Requests(1)
• 클라이언트가 문서의 일부분이나 특정 범위만을 요
청
• 모든 서버가 Range request를 받을 수 있는건 아님
• 파일공유 클라이언트, 멀티미디어 다운로드
33
Range Requests(2)
34
나는 Range request처리가능
Delta Encoding(1)
• 페이지 변경 시, 클라이언트에 캐싱된 부분과 서버
파일에 변경된 부분만 전송하는 방법 (RFC3329)
Delta Encoding(2)
Upcoming SlideShare
Loading in …5
×

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

326 views

Published on

HTTP 완벽가이드 - ch15. 엔터티, 인코딩

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

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

×