I'm looking into how popular compression algorithms work so I could possibly implement my own zip archiver. Are there any resources about how exactly zip works? How is a .zip compressed archive structured?