WIPIVERSE

DEFLATE

개념
DEFLATE는 손실이 없는 데이터 압축 알고리즘으로, LZ77(슬라이딩 윈도우 기반 문자열 매칭)와 허프만 코딩을 결합하여 구현된다. 압축 흐름은 먼저 입력 데이터에서 중복 문자열을 LZ77 방식으로 찾아 참조를 생성하고, 그 결과를 허프만 트리를 이용해 가변 길이 비트열로 인코딩한다. 복원 시에는 역순으로 허프만 디코딩을 수행한 뒤 LZ77 참조를 재구성한다.

주요 사용 사례

  • 파일 포맷: ZIP 압축 파일, GZIP, PNG 이미지 포맷 등에서 기본 압축 방식으로 채택된다.
  • 통신 프로토콜: HTTP/1.1에서 Content‑Encoding: deflate 헤더를 통해 전송 데이터 압축에 활용된다.
  • 프로그래밍 라이브러리: zlib, libpng, libdeflate 등 다양한 오픈소스 라이브러리에서 구현 및 제공된다.

역사 및 표준

  • 최초 제안은 1993년 Phil Katz가 PKZIP에 적용한 형태이며, 이후 1995년 RFC 1951(“DEFLATE compressed data format specification”)에 공식 표준으로 정의되었다.
  • 압축 효율과 구현 난이도 사이의 균형으로 인해 널리 표준화되었으며, 현재까지도 다수의 시스템에서 기본 압축 메커니즘으로 사용되고 있다.

어원
‘deflate’는 영어 동사 deflate (공기를 빼다, 부풀어 오른 것을 가라앉히다)에서 차용된 용어이며, “데이터를 부풀어 있던 원래 크기보다 작은 형태로 만든다”는 의미를 은유적으로 표현한다.

기술적 특성

  • 압축률: 일반 텍스트 및 바이너리 데이터에 대해 평균 2:1~3:1 정도의 압축률을 제공한다(구체적인 비율은 데이터 특성에 따라 달라진다).
  • 압축/해제 속도: LZ77와 허프만 코딩의 조합으로 고속 압축·해제가 가능하며, 하드웨어 가속을 지원하는 구현도 존재한다.
  • 스트리밍 지원: 블록 단위로 처리할 수 있어 스트리밍 환경에서도 연속적인 압축·해제가 가능하다.

제한 사항

  • 압축 효율이 고도로 중복된 데이터에 비해 상대적으로 낮으며, 이미 압축된 영상·오디오 등에는 적용 효과가 제한적이다.
  • 특허·라이선스 이슈가 없으며, 오픈 표준으로 배포된다.

참고

  • RFC 1951 – DEFLATE compressed data format specification
  • zlib 홈페이지 – DEFLATE 구현 및 API 문서

본 내용은 공신력 있는 기술 문서와 표준 사양에 기반하여 기술되었다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기