GZIP 압축이란 무엇인가요?
GZIP은 RFC 1952에 정의된 무손실 파일 압축 형식입니다. DEFLATE 알고리즘(RFC 1951)이 생성한 페이로드를 감싸며, 이 알고리즘은 LZ77 역참조와 Huffman 부호화를 결합하여 반복되는 데이터를 압축된 바이트 스트림으로 줄입니다.
GZIP 압축은 어떻게 작동하나요?
입력은 기본 CompressionStream('gzip') API를 사용하여 브라우저에서 완전히 처리됩니다. 상위 단계는 다음과 같습니다:
- 도구가 텍스트나 파일을 바이트 스트림으로 변환합니다(텍스트 입력은 UTF-8).
- 해당 바이트는
gzip형식으로 구성된CompressionStream을 통해 전달됩니다. - 브라우저는 DEFLATE를 적용합니다: 슬라이딩 윈도우 LZ77 패스가 반복되는 시퀀스를 찾고, Huffman 부호화는 자주 나오는 기호에 더 짧은 코드를 할당합니다.
- DEFLATE 페이로드 주위에 10바이트 gzip 헤더와 8바이트 푸터(원본 데이터의 CRC32와 원본 길이의 2^32 모듈로)가 감싸져 표준 .gz 컨테이너가 생성됩니다.
- 결과는 텍스트 입력의 경우 Base64 또는 16진수로 렌더링되거나, 바이너리 입력의 경우 다운로드 가능한 .gz 파일로 제공됩니다.
GZIP으로 압축하는 이유는 무엇인가요?
- 더 작은 페이로드: 텍스트, JSON, HTML, CSS, 소스 코드는 일반적으로 원본 크기의 일부로 줄어듭니다.
- 업계 표준: GZIP은 거의 모든 HTTP 서버, CDN, 브라우저, 아카이브 도구, 프로그래밍 언어 표준 라이브러리에서 이해됩니다.
- 프라이버시: 압축은 전적으로 브라우저에서 이루어집니다. 입력은 절대 우리 서버에 도달하지 않습니다.
- 왕복 가능: 출력은
gunzipCLI, HTTPContent-Encoding: gzip, Python, Node.js, Go, Java 또는 Rust의 모든 RFC 1952 리더로 압축 해제됩니다.
GZIP 압축의 일반적인 활용 사례는 무엇인가요?
GZIP은 웹 전반과 명령줄 도구에서 사용됩니다:
- HTTP 전송: 웹 서버는 응답을 GZIP으로 압축하여 페이지가 네트워크를 통해 더 빠르게 로드되도록 합니다.
- 로그 아카이브: 장기 보존되는 서버 로그는 디스크 사용량을 줄이기 위해 .gz 파일로 저장됩니다.
- 백업 및 번들: tarball(.tar.gz)은 전체 디렉터리 트리를 압축하여 이동 가능한 배포를 가능하게 합니다.
GZIP 압축 예시는 어떻게 생겼나요?
많은 반복 필드 이름이 있는 1 KB JSON 문서는 일반적으로 약 200~300바이트로 압축됩니다 — 4~5배의 크기 감소입니다. 큰 텍스트 로그는 종종 90% 이상 압축됩니다. 이미 압축된 입력(JPEG, PNG, MP4, ZIP)은 더 이상 줄어들지 않으며 GZIP 프레이밍으로 인해 몇 바이트 늘어날 수 있습니다.
이 GZIP 압축기는 브라우저에서 직접 표준 RFC 1952 출력을 생성합니다. 전송 전에 페이로드를 줄이든 보관용 .gz 파일을 만들든, 결과는 네트워크상의 모든 GZIP 인식 도구와 호환됩니다.