4. Transfer codings

전솑 μ½”λ”©(Transfer coding) 이름은 λ„€νŠΈμ›Œν¬λ₯Ό 톡해 "safe transport" 을 보μž₯ν•˜κΈ° μœ„ν•΄ 페이 λ‘œλ“œ 본문에 적용 λ˜μ—ˆκ±°λ‚˜ μ μš©λ˜μ–΄μ•Ό ν•˜κ±°λ‚˜ μ μš©λ˜μ–΄μ•Ό ν•  수 μžˆλŠ” 인코딩 λ³€ν™˜μ„ λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©λœλ‹€. μ΄λŠ” 전솑 코딩이 μ „μ†‘λ˜λŠ” ν‘œν˜„μ˜ 속성이 μ•„λ‹ˆλΌ λ©”μ‹œμ§€μ˜ μ†μ„±μ΄λΌλŠ” μ μ—μ„œ λ‚΄μš© μ½”λ”©κ³Ό λ‹€λ₯΄λ‹€.

transfer-coding = "chunked" ; Section 4.1 / "compress" ; Section 4.2.1 / "deflate" ; Section 4.2.2 / "gzip" ; Section 4.2.3 / transfer-extension

transfer-extension = token *( OWS ";" OWS transfer-parameter ) transfer-parameter = token BWS "=" BWS ( token / quoted-string )

λͺ¨λ“  transfer-coding 이름은 λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠμœΌλ©° Section 8.4에 μ •μ˜λœ HTTP Transfer Coding registry에 등둝해야 ν•œλ‹€.

4.1 Chunked Transfer Coding

  • μˆ˜μ‹ μžλŠ” 청크 λΆ„ν•  전솑 코딩을 λ°˜λ“œμ‹œ ꡬ문 λΆ„μ„ν•˜κ³  λ””μ½”λ”© ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.(MUST)

4.1.1 Chunk Extensions

  • μˆ˜μ‹ μžλŠ” 인식할 수 μ—†λŠ” 청크 ν™•μž₯자λ₯Ό λ¬΄μ‹œν•΄μ•Ό ν•œλ‹€.(MUST)

4.1.2 Chunked Trailer Part

  • λ°œμ‹ μžλŠ” λ©”μ‹œμ§€ ν”„λ ˆμ΄λ°μ— ν•„μš”ν•œ ν•„λ“œ(e.g., Transfer-Encoding κ³Ό Content-Length), 라 μš°νŒ… (e.g., Host), μš”μ²­ μˆ˜μ •μž (e.g., [RFC7231]의 Section 5 μ œμ–΄μ™€ 쑰건뢀), κΆŒν•œ (e.g., [RFC7235]와 [RFC6265]λ₯Ό 봐라), 응닡 μ œμ–΄ 데이터 (e.g., [RFC7231]의 Section 7.1) 또 λŠ” νŽ˜μ΄λ‘œλ“œ 처리λ₯Ό μ–΄λ–»κ²Œ κ²°μ •ν•˜λŠ” 지 (e.g., Content-Encoding, Content-Type, Content-Rangeκ³Ό Trailer)λ₯Ό ν¬ν•¨ν•˜λŠ” 트레일러λ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

4.1.3 Decoding Chunked

4.2 Compression Codings

4.2.1 Compress Coding

  • β€œcompress” 코딩은 κ³΅ν†΅μ μœΌλ‘œ μœ λ‹‰μŠ€ 파일 μ••μΆ• ν”„λ‘œκ·Έλž¨ β€œcompressβ€λ‘œ μƒμ‚°λœ Lempel-Ziv-Welch (LZW) 코딩이닀. μˆ˜μ‹ μžλŠ” β€œx-comress”λ₯Ό β€œcompressβ€λ‘œ λ™λ“±ν•˜κ²Œ κ°„μ£Όν•΄μ•Ό ν•œλ‹€.(SHOULD)

4.2.2 Deflate Coding

β€œdeflate” 코딩은 Lempel-Ziv (LZ77) μ••μΆ• μ•Œκ³ λ¦¬μ¦˜κ³Ό ν—ˆν”„λ§Œ 코딩을 κ²°ν•©ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” β€œdeflate” μ••μΆ• 데이터 μŠ€νŠΈλ¦Όμ„ ν¬ν•¨ν•˜λŠ” β€œzlib” 데이터 포멧 [RFC1950]이닀.

4.2.3 Gzip Coding

  • β€œgzip” 코딩은 κ³΅ν†΅μ μœΌλ‘œ gzip 파일 μ••μΆ• ν”„λ‘œκ·Έλž¨ [RFC1952]으둜 μƒμ‚°λœ LZ77 32λΉ„νŠΈ Cyclic Redundancy Check (CRC) μ½”λ”© 이닀. μˆ˜μ‹ μžλŠ” β€œx-gzip”λ₯Ό β€œgzipβ€λ‘œ λ™λ“±ν•˜κ²Œ κ°„μ£Όν•΄μ•Ό ν•œλ‹€.(SHOULD)

4.3 TE

β€œTE” 헀더 ν•„λ“œκ°€ μš”μ²­μ—μ„œ μ–΄λ–€ 전솑 코딩인지 λ‚˜νƒ€λ‚΄λ©°, 청크 외에, ν΄λΌμ΄μ–ΈνŠΈκ°€ 응닡을 수락 ν•  의ν–₯이 μžˆλŠ”μ§€ 여뢀와 ν΄λΌμ΄μ–ΈνŠΈκ°€ 청크 전솑 μ½”λ”©μ˜ 트레일러 ν•„λ“œλ₯Ό μˆ˜μš©ν•  μ˜μ‚¬κ°€ μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

  • ν΄λΌμ΄μ–ΈνŠΈλŠ” TE둜 β€œchunked” 전솑 μ½”λ”© 이름을 μ „μ†‘ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT);

HTTP/1.1 μˆ˜μ‹ μžλŠ” 항상 청크λ₯Ό ν—ˆμš©ν•œλ‹€.

TE μ‚¬μš©μ˜ μ„Έ 가지 μ˜ˆλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

TE: deflate TE: TE: trailers, deflate;q=0.5

  • TE 헀더 ν•„λ“œλŠ” λ°”λ‘œ μ˜† 컀λ„₯μ…˜μ—λ§Œ μ μš©λ˜λ―€λ‘œ, TE의 λ°œμ‹ μžλŠ” TE ν•„λ“œκ°€ μ˜λ―Έλ‘ μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ” μ€‘κ°œμžμ— μ˜ν•΄ 전솑 λ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ Connection 헀더 ν•„λ“œ(Section 6.1) λ‚΄μ—μ„œ β€œTE” 컀λ„₯μ…˜ μ˜΅μ…˜μ„ λ°˜λ“œμ‹œ 보내야 ν•œλ‹€. (MUST)

4.4 Trailer

  • λ©”μ‹œμ§€κ°€ 청크 전솑 μ½”λ”©κ³Ό μΈμ½”λ”©λœ λ©”μ‹œμ§€ 본문을 ν¬ν•¨ν•˜κ±°λ‚˜ λ°œμ‹ μž λ©”μ‹œμ§€ 끝에 μžˆλŠ” 트레일러 ν•„λ“œ ν˜•νƒœμ˜ 메타 데이터λ₯Ό μ „μ†‘ν•˜κ³ μž ν•  λ•Œ, λ°œμ‹ μžλŠ” λ©”μ‹œμ§€ λ³Έλ¬Έ μ•žμ— Trailer 헀더 ν•„λ“œλ₯Ό μƒμ„±ν•˜μ—¬ νŠΈλ ˆμΌλŸ¬μ— μ–΄λ–€ ν•„λ“œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ ν‘œμ‹œν•΄μ•Ό ν•œλ‹€. (SHOULD)

Trailer = 1#field-name

Last updated