Bonsoir à vous tous et toutes,
Je veux vous faire profitez des recherches, que nous avons mené (en groupe) sur un sujet qui nous avait été demandé : les Algorithmes de compression ZIP & RAR ! C'est un sujet à forte consonnance mathématiques, mais qui apporte beaucoup !
SOMMAIRE:
Introduction
La compression
Avantages et inconvénients
Exemple de compression
Compression avec pertes
Compression sans pertes
Fichier ZIP & RAR
Fichier ZIP
Fichier RAR
Comparatif en 7-Zip & WinRAR
Lequel utiliser, lequel choisir ?
Conclusion
Systèmes de codage
LZ77
LZMA
BWT
Huffman
Rôles des mathématiques
Conclusion
--------------------------------------------------------------------
---------------------
INTRODUCTION :
---------------------
Les données quelque soit la nature des fichiers occupent une place, un espace sur les volumes de stockage tels que disques durs, volumes externes, casettes, parfois non négligeable. Les volumes de stockage nétant pas extensible sans moyen financier supplémentaire (achat de disque durs supplémentaires, ect
) la compression à trouvé toute sa place.
Ce rapport va traiter la compression de fichier ZIP et RAR. En quoi consiste la compression, quels sont les types de compression qui existent ? Quest ce que renferment les mots ZIP et RAR ? Quelles sont les applications pouvant créer ces fichiers, sont-elles viables ?
Une fois traité ces questions nous rentrerons en détails et dans le sujet de plein pied, avec les systèmes de codages utilisés, mise en uvre pour compresser, décompresser. Les mathématiques ont un rôle prédominant, mais lequel ? Quels systèmes de codage choisir ?
---------------------
LA COMPRESSION :
---------------------
Cest très simple, un fichier à une certaine taille. On veut réduire sa taille pour de nombreuses raisons. On limbrique dans un fichier ZIP ou RAR. Cest un conteneur, qui va réduire la taille de notre fichier (Cf chapitre Fichier Zip & Rar). Ce conteneur peut contenir plusieurs fichiers. Plusieurs conteneurs existent et tous les fichiers ne peuvent être réduits.
Avantages et inconvénients de la compression :
Avantages :
Avec lapparition du réseau, laugmentation des échanges, par les réseaux câblés, la compression des données a trouvé un souffle supplémentaire. Quand vous avez plusieurs fichiers de plus dun méga chacun à envoyer, imaginez le temps que ça peut prendre. Cest un exemple.
Exemple concret : Un groupe sapprête à faire une démonstration à des acheteurs, dans une heure. A cause dune contrainte extérieure, technique, et humaine, ils ont besoin de plusieurs fichiers rapidement. Une solution de repli existe.
Ils contactent leur agence à lautre bout de la planète. Plusieurs fichiers de plusieurs mégas chacun leur ferait perdre le contrat, à cause du temps denvoi et de réception des courriels.
Grâce à la compression, ils vont pouvoir imbriquer leur fichier dans un fichier ZIP qui lui-même compressera les fichiers sans pertes. Il ne reste plus quà envoyer ce fichier par le réseau. Le temps denvoi et de réception est réduit de moitié. Ils seront à leur rendez-vous pour leur démonstration.
Inconvénients :
Dans le monde de linformatique il y a toujours des renards, des corbeaux qui ne cherchent quà exploiter les failles. Il nen existe une avec les fichiers compressés. Un virus peut très bien être renfermé dans un fichier compressé. Les anti-virus scannent que dans 4 niveaux de profondeur.
Exemple dans le schéma ci-dessous, des fichiers zip peuvent être imbriqués dans dautres fichiers zip. Lanti-virus natteindra pas le virus, car il est dans un sixième niveau de profondeur (6 fichiers zip imbriqués dans le premier). Dans la réalité je ne sais pas si cest utilisé. Mais la possibilité est donnée à des pirates dutiliser cette méthode. Un anti-virus avec une certaine renommée, avec un très fort service commercial derrière, ne scannait pas les fichiers compressés à un certain moment. Les dégâts étaient importants pour certains utilisateurs peut scrupuleux.
Quelques exemples ci-dessous dutilisation qui viennent appuyer lutilité de compresser malgré ce petit inconvénient.
Exemples de compressions :
Exemples dutilisation de la compression pour le stockage
- Bases de données (les fichiers du FBI contiennent environ 200 millions dempreintes digitales)
- Mini-disc (les données audio y sont compressées)
- Le coût et les limites technologiques nécessitent dutiliser la compression de données pour le stockage dimportants volumes dinformation.
Exemples dutilisation de la compression pour le transport
- Réseaux par câbles (Minitel, Internet dont la bande passante, i.e. le débit est très faible)
- Réseaux sans fil (communication par satellite avec par exemple la télévision par satellite, le téléphone portable
)
- Pour une durée donnée, la compression permet de faire circuler plus dinformations, le débit est donc plus grand.
Les applications sont nombreuses. Une notion à été abordée au début, la notion de pertes et sans pertes. Pour rester dans le domaine de linformatique, il existe plusieurs méthodes de compression, plusieurs types de fichiers.
- Il y a des méthodes de compression (conversion) qui permettent de compresser le fichier en un format donné, exemple : WAV en MP3 (de nombreuses informations non audible pour un humain seront perdues, pour réduire la taille du fichier, de manière irréversible). Compression avec pertes.
- Lopposé existe, comme par exemple imbriquer des fichiers dans des conteneurs Manière réversible on retrouvera toutes les informations. Compression sans pertes.
---------------------
LA COMPRESSION AVEC PERTE:
---------------------
Exemple très rapide de compression avec pertes que tout le monde connait. La compression JPEG qui utilise des systèmes de codage aussi, Huffman notamment (Cf Système de codage). Ce tableau vous montre la puissance des algorithmes quand on convertit un format lourd (BMP) en format léger (JPG). Le fichier original (BMP) est de 2,50 Mo.
Quelques exemples de compression avec pertes dans ce tableau.
---------------------
LA COMPRESSION SANS PERTES:
---------------------
La compression sans pertes ce sont des fichiers, dossiers que lon met dans des grandes boites, que lon compresse ensuite, avec une extension. Fichier ZIP et Fichier RAR.
---------------------
FICHIER ZIP & RAR:
---------------------
Le ZIP et le RAR sont des formats de fichier permettant la compression de données, sans pertes, sans aucune pertes des données. Un présentation rapide ci-dessous, de ces deux extensions.
Fichier ZIP :
Le format ZIP a été inventé par Phil Katz pour le logiciel PKZIP. Il a été conçu en réponse à un problème de droits entre le programme PKARC et le format ARC lancé par la Software Enchantement Associates. ARC est vendu en tant que partagiciel principalement aux utilisateurs de BBS afin qu'ils puissent compresser leurs fichiers plus rapidement.
Katz décida de cesser le développement de PKARC et décrivit son propre format PKZIP utilisant l'extension de fichier .zip et l'algorithme deflate. Le format JAR (Java Archive) est identique au format ZIP. On peut renommer les fichiers .jar en .zip.
Fichier RAR:
Le format RAR est un format de fichier propriétaire permettant la compression de données. Ce format a été inventé par Eugene Roshal.
Il a également publié un code source permettant de décompresser les archives RAR sous une licence qui en permet la libre distribution et modification (la version libre ne peut toutefois pas décompresser les archives RAR de version 3). Cette licence interdit d'utiliser ce code source pour construire un codeur compatible. La méthode de codage est dite propriétaire.
L'un des avantages du format RAR est son efficacité à produire des découpes de fichiers. D'autres formats de compression comme le format ouvert 7-zip le permettent également. Un autre avantage du format RAR est sa capacité de chiffrement des données ; celui-ci est toutefois possible par d'autres formats, tel 7z.
Avant tout travail, de compression des données il existe un prétraitement des données. Cest un travail léger effectué sur des données avant leur traitement proprement dit. Il s'agit classiquement de produire effectivement le code qui sera compilé, en dépliant les macros, en réunissant les fichiers, en vérifiant que toutes les bibliothèques sont là, un peu de la même manière quen C avant de compiler.
En fonction du type de fichier choisi, de la compression demandée, il emploiera un système de codage. En fonction de lextension ZIP ou RAR et de lapplication utilisée un système de codage sera employé.
Un tableau récapitulatif montre les systèmes de codage utilisés par les applications pour obtenir ces fichiers. Nous avons pris deux applications lune pour faire les ZIP et la seconde pour faire les RAR.
-----------------------------------
COMPARATIF EN 7-ZIP & WINRAR
-----------------------------------
Le ZIP et le RAR utilisent les mêmes algorithmes à quelques choses prés. 7-ZIP qui permet de créer des fichiers ZIP tout comme Winrar. Un petit comparatif entre les deux applications permettant de créer des fichiers ZIP et RAR, avant de rentrer dans le vif du sujet et détudier les systèmes de codages employés. Le choix de 7-ZIP est arbitraire.
Introduction :
Deux tableaux ci-dessous vont aider à comprendre les différences entre les deux applications, avantages et inconvénients de chacun et lintérêt à prendre lun ou lautre.
Que nous montre ce tableau ? Nous pouvons remarquer que les deux applications utilisent les mêmes systèmes de codage, à une exception prés (LZMA). Là ou les deux applications vont commencer à se distinguer, cest dans des fonctions essentiels. Exemples :
Recovery Record : Permet de récupérer les fichiers endommagés
- Cryptage : Crypte les données. Essentiel parfois.
- Vérouillages darchives : Permet de mettre un mot de passe au fichier archive pour louvrir.
Ces nombreuses fonctions trouvent leur utilité dans bon nombre de cas, surtout dans le milieu professionnel. Crypter les données, mettre un mot de passe, peut être nécessaire, pour un particulier mais aussi et surtout un professionnel. Les exemples ne manquent pas.
Ces deux derniers tableaux parlent deux même. Il est clair que 7-Zip nest pas fait pour compresser des fichiers multimédia.
Lequel utilser, lequel choisir ?
Le prix nest pas le seul argument à prendre en compte pour accepter ou refuser un achat dune application qui peut apporter beaucoup.
7-ZIP :
Nous utilisons cet exemple. Faisons un saut en arrière de dix ans, par exemple en 1995.
- Ancien système dexploitation (Génération des 9x,
.)
- Processeur peu performant (Pentium 90,100,
)
- RAM faible : 16 Mo
- Support de stockage peut important (ex : Disque dur maximum 8 go)
- Les graveurs de CD coutaient très chères.
- Internet pas ou peut développer à part pour les personne ayant les moyens (je rappelle que lADSL pour ne prendre que cet exemple nexistait pas)
Si on se replace dans le contexte de cette époque, peut de gros fichiers existaient, on travaillait au mieux sur de gros fichiers texte, les virus navaient pas une place omniprésente comme aujourdhui, les spywares, malwares et autres joyeusetés nexistaient pas non plus. Les permissions nexistaient pas non plus.
Ces machines là existent encore aujourdhui ! Sur danciens systèmes dexploitation 7-ZIP serait très bien ; léger, rapide et libre. Si on rebondit sur le fait que 7-Zip ne gère pas le multimédia, quil est bien adapté aux fichiers de tailles moyennes, alors il prend toute sa place sur ces anciens systèmes et machines.
Winrar :
- Bon nombre de contraintes ont empêché le développement du Multimédia, par conséquent le stockage de gros fichiers, volumineux. Aujourdhui, les machines ont évolué, les tailles des disques ont augmenté, les processeurs ont progressé, les systèmes sont de plus en plus rapides, laccès à internet a impliqué de protéger les données (ex : permissions NTFS). Une machine est susceptible dêtre attaquée depuis lextérieur et les données divulguées.
Pour prendre en compte cela, il fallait en plus des fonctionnalités déjà présentes sur les systèmes, un logiciel qui réduise la place des données en les compressant, pour économiser de lespace libre et par conséquent de largent.
Si cette application pouvait crypter les données, récupérer les anciens fichiers compressés sur des veilles disquettes, traiter de gros fichiers comme les images ou vidéos, elle serait la bienvenue, pour particulier et professionnel bien sûr. Winrar répondait à ces attentes.
Conclusion :
7-ZIP peut sutiliser sur de grosses machines mais sera moins performant. Il ne répondra pas à toutes vos attentes. Son avantage : Libre. Winrar sont concurrent part avec un « désavantage », son prix est de 30 Dollars.
Par contre il rattrape ce retard avec les nombreuses fonctions quil propose qui dans bon nombre de cas peuvent servir ; dans le milieu professionnel notamment. Le chapitre suivant, traiteras des algorithmes de cryptage mis en uvre (fonction mathématiques, exemples,ect
)
-----------------------------------
SYSTEMES DE CODAGES
-----------------------------------
Les algorithmes ZIP et RAR utilisent des systèmes de codage, crées par de chercheurs, mathématiciens. Ci-dessous, un historique, la théorie, lapplication et une conclusion succincte des quatre systèmes suivant utilisés : LZ77, LZMA, BWI, HUFFMAN
>> LZ77 <<
Fichier ZIP : Oui
Fichier RAR : Oui
Historique des algorithmes LZ :
En 1977 Jacob Ziv et Abraham Lempel fournissent une technique de compression différente de lalgorithme de Huffman, et capable de donner de meilleurs taux de compression. Ils mettent ainsi en place lalgorithme LZ77. Puis vient LZSS, version améliorée de LZ77 par Storer et Szymanski puisque la recherche des séquences dans le dictionnaire est réduite logarithmiquement. Enfin vient lalgorithme LZ78, plus connu sous le nom LZW, amélioration faite par Terry Welch en 1984 de LZSS de par le fait que les séquences sont rangées dans une arborescence. Il porte le nom de ses 3 inventeurs : Lempel, Ziv et Welch.
Théorie :
Le principe est fondé sur le fait quune séquence de caractères peut apparaître plusieurs fois dans un fichier. Lalgorithme LZ de compression consiste à émettre à la place des séquences, les adresses de ces séquences dun dictionnaire généré à la volée. Cest un algorithme de compression nettement plus performant en moyenne que les algorithmes statistiques puisquil permet dobtenir des gains plus élevés sur la majorité des fichiers. Lalgorithme LZ se distingue des méthodes statistiques pour plusieurs raisons :
- Le fichier compressé ne stocke pas le dictionnaire, ce dernier est automatiquement généré lors de la décompression. Il nexiste donc pas de table dentête.
- Contrairement aux méthodes statistiques qui utilisent la probabilité de présence sur un ensemble de taille fixe de symboles, lalgorithme LZ représente un algorithme dapprentissage, puisque les séquences répétitives de symboles sont dans un premier temps détectées puis compressées seulement lors de leurs prochaines occurrences. Le taux de compression est dépendant de la taille du fichier. Plus la taille est importante, et plus le taux de compression lest aussi.
Il permet le compactage à la volée, puisquil ny a pas à lire le fichier au préalable, il compresse les séquences de symboles au fur et à mesure.
Application :
La chaîne /WED/WE/WEE/WEB.
Compactons-la avec Lempel-Ziv :
Il faut 15*8 = 120 bits pour stocker cette chaîne en mémoire
(1 caractère = 8 bits = 1octet)
L'algorithme sort : '/WED<256>E<260><261><257>B'. Ici, il ne faut plus que 4*9 + 6*8 = 84 bits. (après /WED, on dépasse 255 : il faut utiliser 9 bits).
Remarque : Pour un taux de compression "normal", il est recommandé d'utiliser une fenêtre de plusieurs milliers de caractères, pour un tampon de pré-lecture d'une centaine de caractères.
Variante de lalgorithme
Il existe des variantes des compressions LZ :
- LZP : Algorithme qui se base sur la répétition de phrases entières.
- LHA, LZS, LZX, LZH : Algorithmes quasiment identiques, encore dérivés du LZ77. Il nest employé que pour lutilitaire Lharc, très répandu au Japon, mais de moins en moins utiliser dans le Monde.
Conclusion :
Lalgorithme LZ est aujourdhui considéré comme la méthode de compression la plus efficace et une des plus connues. Elle est relativement rapide ; ce qui a rendu lutilisation de la compression possible sur les disques durs de façon transparente. Cette méthode est aussi utilisée dans le format .gif, mais encore dans les compresseurs tels que ZIP, ARJ.
La compression par dictionnaire de type LZ(TIFF,GIFF par LZ et PNG pour GIF) est très rapide mais ne compresse que peu les images de 2 à 24 bits. Néanmoins, elle était peu utilisée car elle était brevetée par la société Unisys jusquen juillet 2004 (8 Juillet 2004) où le brevet a expiré. Par conséquent, cette dernière ne peut plus à présent réclamer des droits sur lutilisation du format gif par exemple car celui ci reposait sur lalgorithme LZ.
>> LZMA<<
Fichier ZIP : Oui
Fichier RAR : Non
Historique :
LZMA, pour Lempel-Ziv-Markov chain-Algorithm, est un algorithme de compression de données créé en 2001.
Théorie :
Il utilise une compression avec dictionnaire assez similaire au LZ77 et offre un fort taux de compression et une taille variable de dictionnaire de compression (jusqu'à 4 Go). (Voir aussi LZW)
Application :
Ses principales caractéristiques sont :
- Taux de compression élevé.
- Taille du dictionnaire variable (jusqu'à 4 Go).
- Vitesse de compression : environ 1 Mo/s sur un processeur à 2 GHz.
- Vitesse de décompression : environ 10-20 Mo/s sur un processeur à 2 GHz.
- Faible demande de mémoire pour la décompression (selon la taille du dictionnaire).
- Petite taille du code de décompression : environ 5 Ko.
- Support du multi-threading et de l'hyper-threading du P4.(plusieurs opérations).
Conclusion:
Il est utilisé dans les formats 7z du programme 7-zip et par Stuffit, Stuffit étant une famille de logiciel permettant de compresser et décompresser des archives sur les Macs.
Message édité par cvb le 12-01-2007 à 10:07:14