ZIP

 

1. 무손실 압축 포맷 ZIP
2. 미국의 지역 번호 시스템 ZIP Code


1. 무손실 압축 포맷 ZIP


필 캐츠(Phil Katz)가 1989년 만든 무손실 압축 포맷. 정확히 말하자면 ZIP 포맷은 여러개의 파일을 압축해서 하나의 파일로 만들기 위한 컨테이너 포맷이고, ZIP 내부의 데이터 압축은 Deflate 알고리즘을 사용한다.
원래 정식 명칭은 PKZIP이며(필 캐츠의 이름에서 따왔다. 회사명도 PKWARE.) 파일 헤더에는 PK라는 문자열이 들어간다. DOS 시절 프로그램 이름도 pkzip.exe(압축하는 프로그램) pkunzip.exe(압축 해제하는 프로그램) 이었다. 압축효율은 그당시 경쟁 제품이였던 ARJ나 LHARC보다는 조금 나빴지만, 압축 속도가 빨랐고 압축 포맷을 퍼블릭 도메인으로 공개하여 빠른 속도로 보급되었다.
특히 윈도우 시대에 접어들면서 경쟁 프로그램들이 변변치 않은 와중에 WinZip라는 편리한 프로그램이 두각을 나타내면서 사실상 업계 표준 포맷으로 자리잡게 된다. 다만 WinZip을 만든 회사는 PKWARE가 아닌 다른 회사이다. 필 캐츠 본인은 윈도우에 비판적인 입장이었던 탓에 윈도우용 PKZIP를 내놓는 것이 늦어지면서 큰 재미를 보지 못했고[1] 아직도 윈집에 비해서 쩌리다. 최신 기술 지원도 상당히 느린 편.
하지만, PKWARE사는 현재도 ZIP 포맷의 확장 정의를 지속적으로 관리하고 있으며, 자사의 홈페이지를 통해서 이를 공개하고 있다. ZIP 표준 포맷 문서
ZIP 포맷은 기본적으로 DOS 운영체제를 위해서 만들어진 포맷[2]이다. 하지만 이후 지속적인 확장을 통해서 다른 OS도 지원[3]하고, 압축 해제 프로그램이 오픈소스이기 때문에, 별도의 프로그램을 설치할 필요 없이 압축/해제가 가능하다.
유닉스나 리눅스에서는 1990년대부터 OS 패키지에 ZIP 압축/해제 프로그램을 기본으로 포함해 제공하는 배포판들이 많다(unzip이 대표적).[4] 윈도우ME부터는 탐색기에서 ZIP 파일을 폴더처럼 열 수 있고[5], 압축/해제를 모두 지원하고 있으며, 맥도 기본적으로 OS에서 ZIP 파일의 압축 및 해제를 지원한다.
유니코드 파일지원이 정의된 것은 2006년으로 늦은 편. 게다가 지원하지 않는 프로그램도 많기[6] 때문에, 일찌감치 유니코드를 제대로 처리하기 시작한 RAR 이나 7Z에 비하면 호환성이 떨어지는 편. 이 외에도 유니코드 파일명을 확장 필드에 저장하는 방식도 있는데, 이 방식으로 압축하면 글자도 깨지지 않을 뿐더러 호환성도 훨씬 좋아진다. 물론 파일 이름 수의 합만큼 용량이 늘어나긴 하지만, 수십~수백 KB 정도 늘어나는 정도로 걱정할 시대는 지나간 지 오래다. 빵집에서는 이 방식으로 압축해도 파일명이 깨지는 버그가 있지만, 아직까지 빵집을 쓰는 사람은 거의 없기 때문에 큰 문제는 없다.
ZIP 포맷은 원래 Deflate 알고리즘만을 지원하였지만, 이후 bzip2, LZMA 와 같은 최신 압축 알고리즘도 지원하도록 표준에 포함시켰으며, 요즈음 업데이트 되는 최신 압축 프로그램들은 대부분 이 알고리즘의 압축 해제를 지원한다.
Java의 .jar나 MS 오피스 2007 이후부터 기본적으로 지원되는 .docx, .xlsx, .pptx 형식의 파일도 내부적으로 여러개의 파일들을 ZIP 형식으로 묶고 확장자만 바꿔놓은 것이다. 파일의 사용되는 목적이 다르기 때문에 이를 구분하기 위해 다른 확장자로 정의되어 있는 것이라 이 파일들도 압축 프로그램으로 압축해제가 가능하다. 윈앰프, Windows Media Player, 곰플레이어, 팟플레이어 등의 스킨파일들도 전부 ZIP 포맷으로 압축되어 있다.
multi platform지원이되는 zip 압축 및 압축 해제는 info-zip을 찾아보면 된다. 이곳에서 지원하는 운영체제는 microcomputer에서 Cray 슈퍼컴퓨터까지이며, 거의 모든 버젼의 Unix, VMS, OS/2, Windows 9x/NT/etc. (a.k.a. Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS/QDOS, MVS and OS/390 OE, VM/CMS, FlexOS, Tandem NSK 과 Human68K (Japanese)를 지원하며, LynxOS, TOPS-20, AOS/VS and Novell NLMs 등의 오래된 OS도 지원된다. Unix, OS/2, Win32 and Win16의 Shared libraries (DLLs)도 지원하며, Win32, Win16, WinCE and Mac OS의 GUI도 지원한다.
  • 기타
    • ZIP 포맷에서 파일을 압축하지 않고, 원본 그대로 저장할 경우 압축 알고리즘은 0으로 저장되고, 일반적으로 제일 많이 사용하는 Deflate 알고리즘은 8번을 사용한다. 즉, 거의 사용하지 않기는 하지만, 1번부터 7번까지의 압축 알고리즘도 존재한다.
    • Winzip 에서는 Jpeg 파일을 30%까지 줄일 수 있는 WinzipJpeg 압축 알고리즘과, Wav 파일을 WavPack압축 알고리즘을 이용하여 압축하는 독특한 형태의 압축 알고리즘을 지원한다.
    • ZIP 포맷은 DOS 시절에 개발되었기 때문에 4GB(2^32) 이상의 파일 포맷에 대해서는 처리하지 못했지만, 이후 ZIP64라고 불리는 확장된 정의를 통해서 2^64까지 처리가 가능하다.
    • 반디집에서 7Z와 함께 적극적으로 활용하고 있는 포맷이다. 멀티코어를 제대로 활용하는데다가 ZIP64, UTF-8, NTFS 날짜체계, 고속 아카이빙, AES256 암호화와 같은 선진적인 기술을 잔뜩 도입했다. 참고로 직접적인(?) 경쟁 프로그램인 알집은 멀티코어랑 64비트도 제대로 지원하지 않는 주제에 4 GiB를 넘어가면 EGG 포맷을 강제하는 등의 이해할 수 없는 정책을 펼치고 있어서 컴덕들의 기피대상이 된 지 오래다.

2. 미국의 지역 번호 시스템 ZIP Code


ZIP code는 미국의 지역 번호 시스템이다. 아마존 가입할 때 이거뜨면 우편번호 입력하면 된다.

[1] 도스 시절에 ZIP와 셰어를 다투었던 LZH나 ARJ 등도 죄다 윈도우 대응에 늦장을 부리다가 몰락한 것을 보면 필 캐츠만 유난한 것도 아니다.[2] 파일의 시간 정보가 DOS 포맷과 동일하다.[3] 유닉스의 파일 시스템 정보라든가, Windows의 NTFS파일 시간 정보라든가[4] 물론, 따로 깔아야 하는 리눅스 배포판/유닉스도 많다.[5] 다만 ME에서는 기본 설정으로 설치 시 설치되지 않았으며, 수동으로 설치해 줘야 했다. XP부터는 기본 설정으로도 자동으로 설치된다.[6] 윈도우 탐색기 내장 프로그램은 하위 호환성을 위해서 DOS와 동일한 코드페이지만을 지원하지만, 유닉스/리눅스/맥 계열 프로그램은 무조건 유니코드(UTF-8)만을 지원하기 때문에, 한글 파일명으로 된 파일을 서로 주고 받으면 파일명이 깨진다.