.LZ4 파일이란?
확장자가 .lz4인 파일은 LZ4 압축을 지원하는 응용 프로그램/유틸리티로 만든 압축 아카이브 파일입니다. LZ4 알고리즘은 속도와 압축 비율 간의 균형에 중점을 둡니다. 압축된 LZ4 아카이브는 LZ4 명령줄 유틸리티를 사용하여 생성할 수 있으며 이를 사용하여 압축을 풀 수 있습니다.
LZ4 파일 형식
LZ4 압축 알고리즘을 기반으로 하는 LZ4 파일 형식은 CPU 유형, 운영 체제, 파일 시스템 및 문자 집합과 무관합니다. LZ4 알고리즘을 사용한 파일 압축 및 스트리밍 압축에 적합합니다. LZ4 형식의 초기 구현은 2011년 Yann Collet에 의해 C 언어로 수행되었으며 Github에서 개발자 참조용으로 제공됩니다. .
LZ4 프레임 형식
LZ4 파일 형식의 일반적인 구조는 다음과 같습니다.
매직앤비 | F. 설명자 | 차단 | (…) | EndMark | C. 체크섬 |
---|---|---|---|---|---|
4바이트 | 3-15바이트 | 4바이트 | 0-4바이트 |
매직 넘버
4바이트, 리틀 엔디안 형식. 값 : 0x184D2204
프레임 설명자
프레임 디스크립터는 3 t0 15 바이트로 구성되며 사양에서 가장 중요한 부분입니다. Magic_Number 및 Frame_Descriptor 필드를 함께 LZ4 프레임 헤더라고 하며 그 크기는 7~19바이트입니다. 아래 그림과 같습니다.
FLG | BD | (콘텐츠 크기) | (사전 아이디) | HC |
---|---|---|---|---|
1바이트 | 1바이트 | 0 - 8바이트 | 0 - 4바이트 | 1바이트 |
데이터 블록
각 데이터 블록은 다음 순서를 따릅니다.
블록 크기 | 데이터 | (블록 체크섬) |
---|---|---|
4바이트 | 0 - 4바이트 |
엔드마크
블록의 흐름은 마지막 데이터 블록 다음에 32비트 값 0x00000000이 오면 끝납니다.
콘텐츠 체크섬
Content_Checksum은 복호화되는 내용의 유효성을 정확히 검증하고 xxHash-32 알고리즘의 결과를 이용하여 수행한다. 모든 블록을 오류 없이 올바른 순서로 성공적으로 전송한 결과를 검증합니다.