Transfer-encoding: chunked
Chunked 인코딩 전송방식은 HTTP 1.1에서 사용가능한 스트리밍 데이터 전송 방식입니다.
청크 전송 방식의 특징은 아래와 같습니다.
- 데이터를 여러 개의 청크 단위로 쪼개서 순차적으로 전송
- 각 청크는 독립적으로 송수신 됨
- 각 청크의 앞에는 해당 청크의 Size(16진수)를 설정해서 보냄
- 길이가 0인 청크가 수신되면 전송이 종료됨
청크 전송 방식의 장점
- 큰 데이터 전송에도 HTTP 연결이 중간에 끊어지지 않게 유지할 수 있음.
- Content-Length가 필요 없음 -> 크기가 가변적인 데이터 전송에 유리
- 전체 컨텐츠를 생성할 때까지 대기하지 않음
HTTP 1.1부터는 기본적으로 연결 유지(Connection: keep-alive)가 활성화되어있습니다.
문제는 지속 커넥션에서 클라이언트가 Content-Length를 반드시 알아야된다는 점입니다. HTTP 1.0에서는 커넥션이 닫히면 HTTP 메시지도 끝난걸로 간주했지만, 이제는 지속 커넥션에서 응답 메시지의 Response Body만큼을 가져와서 읽어야 하기 때문입니다.
전송할 컨텐츠의 크기를 계산할 때 사이즈가 크면 과정이 엄청 오래걸립니다. 계산 과정에서 문제가 생길 수도 있습니다.
청크 전송방식을 사용하면 이런 점을 보완할 수 있습니다. 주로 DB 쿼리의 결과가 되는 HTML 테이블 / 엑셀 / 이미지 등에 사용됩니다.
반면 단점은, 응답 데이터의 길이가 얼마나 되는지, 다운로드 완료 시간이 얼마인지 예측할 수 없습니다.
감사합니다.
'Operation > Network' 카테고리의 다른 글
DNS round robin 방식 장/단점과 해결방안! (0) | 2022.04.21 |
---|---|
API - CSV(엑셀 파일) 내보내기 성능 개선 및 부하 테스트 (0) | 2022.04.16 |
메일 서비스 작동 원리 (with 구글, 네이버 등) (0) | 2022.03.05 |
Docker Apache에 HTTPS(SSL) 적용하기 [+HTTP, HTTPS 간 쿠키 전송안될 때] (0) | 2022.03.02 |
DNS (Domain Name System) 동작 원리, 과정 (0) | 2021.09.15 |