청크 전송 인코딩은 서버가 전체 응답 크기를 미리 알 필요 없이 데이터를 점진적으로 스트리밍할 수 있도록 하는 HTTP/1.1 기능입니다. 스트리밍 API, 실시간 업데이트, 크거나 동적으로 생성된 응답에 유용합니다. 청크 전송 인코딩에서 HTTP 응답은 일련의 청크로 수정되며, 각 청크는 바이트 단위의 크기로 시작됩니다. 클라이언트는 데이터를 점진적으로 수신하며, 길이가 0인 청크가 나타나면 응답이 종료되었음을 알 수 있습니다. FastAPI와 curl을 사용한 실습 예제는 청크 전송 인코딩이 실제로 어떻게 작동하는지 보여줍니다. 이 예제는 각 청크가 16진수 길이로 시작하고, 그 뒤에 데이터가 오며, 다음 청크는 줄 바꿈 후에 시작되는 방식을 보여줍니다. 응답은 데이터 전송의 종료를 나타내는 길이가 0인 청크로 끝납니다. 내부적으로, Starlette 프레임워크는 생성된 데이터 세그먼트를 수신하여 각 청크를 기본 ASGI 서버로 밀어 넣고, 이는 HTTP/1.1 청크 전송 인코딩 사양에 따라 이를 형식화합니다. HTTP/2 및 HTTP/3는 청크 인코딩을 사용하지 않고, 대신 단일 연결을 통해 여러 스트림을 다중화할 수 있는 보다 효율적인 이진 프레이밍 레이어를 사용합니다. 청크 전송 인코딩을 이해하면 더 나은 스트리밍 API를 구축하고 복잡한 HTTP 상호 작용을 효과적으로 디버깅하는 데 도움이 됩니다.
dev.to
Deep Dive - How Chunked Transfer Encoding Works
Create attached notes ...
