본문 바로가기
법, 용어/용어

청크 인코딩(Chunked transfer encoding)

by 3604 2025. 8. 22.
728x90

청크 인코딩(Chunked transfer encoding)이란?

 

전송 인코딩과 청크 인코딩

콘텐츠 인코딩은 메시지 본문(엔터티 본문)에 적용되는 콘텐츠의 포맷이라고 할 수 있다.

전송 인코딩 또한 엔터티 본문에 적용되는 변환이지만 콘텐츠의 포맷과는 독립적이다.

메시지 데이터가 네트워크를 통해 전송되는 방법을 바꾸기 위해 전송 인코딩을 메시지에 적용할 수 있다.

1. 콘텐츠 인코딩된 응답
HTTP/1.0 200 OK
Content-encoding: gzip
Content-type: text/html
[...]
[encoded message]

  1. 전송 인코딩된 응답

HTTP /1.1 200 OK
Transfer-encoding: chunked

10
abcdefghijk
1
a

콘텐츠 인코딩된 메시지는 단지 메시지의 엔터티 부분만 인코딩한다. 전송 인코딩된 메시지에서는, 인코딩은 전체 메시지에 대해 적용되어 메시지 자체의 구조를 바꾼다.

1. Transfer-Encoding 헤더

전송 인코딩을 제어하고 서술하기 위해 정의된 헤더는 단 두 개뿐이다.

Transfer-Encoding

안전한 전송을 위해 어떤 인코딩이 메시지에 적용되었는지 수신자에게 알려준다.

TE

어떤 확장된 전송 인코딩을 사용할 수 있는지 서버에게 알려주기 위해 요청 헤더에 사용한다.

 

 

ex)

1. REQUEST

GET /new_products.html HTTP/1.1
Host: http://www.joes-hardware.com
User-Agent: Mozilla/4.61 [en] (WinNT; I)
TE: trailers, chunked
...


2. RESPONSE

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Server: Apache/3.0
...

2. 청크 인코딩

청크 인코딩은 메시지를 일정 크기의 청크 여럿으로 쪼갠다. 서버는 각 청크를 순차적으로 보낸다.

청크 인코딩을 이용하면 메시지를 보내기 전에 전체 크기를 알 필요가 없어진다.

본문이 동적으로 생성됨에 따라, 서버는 그중 일부를 버퍼에 담은 뒤 그 한 청크를 그것의 크기와 함께 보낼 수 있다. 본문 전체를 모두 보낼 때까지 이 단계를 반복한다.

3. 청크와 지속 커넥션

지속 커넥션에서는, 본문을 쓰기 전에 반드시 Content-Length 헤더에 본문의 길이를 담아서 보내줘야 한다. 콘텐츠가 서버에서 동적으로 생성되는 경우에는, 보내기 전에 본문의 길이를 알아내는 것이 불가능할 것이다.

청크 인코딩은 서버가 본문을 여러 청크로 쪼개 보낼 수 있게 해줌으로써 이 딜레마에 대한 해법을 제공한다.

서버는 크기가 0인 청크로 본문이 끝났음을 알리고 다음 응답을 위해 커넥션을 열린 채로 유지할 수 있다.

응답 스트림은 아래 순서대로...

HTTP 응답
HTTP/1.1 200 OK<CR><LF>
Content-type: text/plain<CR><LF>
Transfer-encoding: chunked<CR><LF>
Trailer: Content-MD5<CR><LF>
<CR><LF>


청크 #1
27<CR><LF>
We hold these truths to be self-evident<CR><LF>


청크 #2
26<CR><LF>
, that all men are created equal, that<CR><LF>


청크 #3
84<CR><LF>
they are endowed by their Creator with certain
unalienable Rights, that among these are Life,
Liberty and the pursuit of Happiness.<CR><LF>


마지막 청크
0<CR><LF>


트레일러(메시지 헤더에 Trailer 헤더가 있을 때만 존재한다)
Content-MD5:gjqei54p26tjisgj3p4utjgrj53<CR><LF>

 

 

출처: https://blog.naver.com/claude17/221904720369

728x90

'법, 용어 > 용어' 카테고리의 다른 글

~함 ~임 개조식  (0) 2025.08.27
DB 대체 키(Alternate Key, AK)  (0) 2025.08.25
checksum  (0) 2025.08.22
[Spark] Apache Spark란?  (0) 2025.08.21
[pyspark/빅데이터기초] Parquet(파케이) 파일 형식이란?  (0) 2025.08.21