DISPOSITIF ET PROCEDE DE COMPRESSION DE DONNEES A LA VOLEE DEVICE AND METHOD FOR COMPRESSING DATA ON THE FLIGHT
L'invention concerne les outils de compression de données à la volée utilisés sur les réseaux, et en particulier sur Internet. Ces outils visent à optimiser le flux ou « bande passante » et augmenter ainsi la vitesse d'affichage des informations au niveau du client internaute.The invention relates to on-the-fly data compression tools used on networks, and in particular on the Internet. These tools aim to optimize the flow or “bandwidth” and thus increase the speed of information display at the level of the Internet customer.
Pour le client, ces outils permettent une réduction du temps de chargement des contenus, c'est à dire une meilleure perception de la qualité de service (QoS) et également une réduction des coûts lorsque la connexion est facturée au volume.For the customer, these tools allow a reduction in the loading time of content, that is to say a better perception of the quality of service (QoS) and also a reduction in costs when the connection is billed by volume.
Il existe à ce jour plusieurs solutions d'accélération de flux sur le réseau internet, appelées Booster Web, qui répondent à cette problématique, mais aucune ne correspond à une réelle offre en cœur de réseau, applicable de manière simple à différents types d 'utilisateurs.To date, there are several solutions for accelerating flows on the Internet, called Booster Web, which respond to this problem, but none correspond to a real offer at the heart of the network, which can be easily applied to different types of users. .
Les Booster avec client nécessitent l'installation d'un module particulier sur le poste du client. Ce module local on plug'in va en fait modifier la structure des messages échangés entre le client et le booster. A la communication selon le protocole habituel HTTP (Hypertext Transport Protocol) se substitue un protocole propriétaire.Boosters with clients require the installation of a specific module on the client's workstation. This local module on plug'in will actually modify the structure of the messages exchanged between the client and the booster. Communication using the usual HTTP (Hypertext Transport Protocol) protocol is replaced by a proprietary protocol.
Les Booster « TCP » modifient la structure des messages, d'autres se contentent de modifier la logique de reprise d'envoi TCP en l'adaptant au temps de réponse du réseau comme les téléphones mobiles par exemple.“TCP” boosters modify the structure of messages, others are content to modify the logic for resuming TCP sending by adapting it to the response time of the network such as mobile phones for example.
Les Booster sans client ne modifient pas les messages http port 80, ils utilisent des entêtes classiques. Mais il est alors indispensable de les déclarer dans les propriétés des navigateurs comme on le ferait pour un cache classique. De plus, certains boosters possèdent aussi une fonction « cache » et d'autres annoncent être conformes au protocole ICP (protocole de communication entre caches). Ces solutions nécessitent donc d'intervenir sur les logiciels installés au niveau de l'ordinateur de l'internaute et sont donc loin d'être transparentes pour l'utilisateur.
On se propose selon l'invention de résoudre cet inconvénient, c'est à dire de proposer un outil et un procédé de compression de données à la volée qui soit transparent pour l'internaute, c'est à dire qui ne nécessite pas d'intervention sur l'ordinateur ou le réseau local de celui-ci. Ce but est atteint selon l'invention grâce à un procédé de compression à la volée de données fournies par un serveur d'un réseau collectif tel qu'internet en réponse à une requête d'un terminal de consultation, dans lequel procédé on fournit un module de compression de données, et un module de redirection prévu pour recevoir des données fournies par le serveur et les rediriger vers le module de compression, ce module de redirection étant également prévu pour recevoir des données depuis le module de compression et les rediriger vers le terminal de consultation, procédé selon lequel on examine dans la requête une indication concernant une aptitude à la décompression du terminal et on effectue dans le module de compression, sur les données demandées par la requête et fournies par le serveur une compression qui est adaptée aux indications d'aptitude contenues dans la requête.Clientless boosters do not modify http port 80 messages, they use standard headers. But it is then essential to declare them in the properties of browsers as we would for a classic cache. In addition, some boosters also have a "cache" function and others claim to comply with the ICP protocol (communication protocol between caches). These solutions therefore require intervention on the software installed on the user's computer and are therefore far from being transparent to the user. It is proposed according to the invention to resolve this drawback, that is to say to propose a tool and a method of compressing data on the fly which is transparent to the Internet user, that is to say which does not require intervention on the computer or the local network thereof. This object is achieved according to the invention thanks to a method of on-the-fly compression of data supplied by a server of a collective network such as the Internet in response to a request from a consultation terminal, in which method a data compression module, and a redirection module provided for receiving data supplied by the server and redirecting them to the compression module, this redirection module also being provided for receiving data from the compression module and redirecting them towards the consultation terminal, method according to which an indication concerning an aptitude for decompression of the terminal is examined in the request and a compression is performed in the compression module, on the data requested by the request and supplied by the server, which is adapted to the indications of suitability contained in the request.
On propose également selon l'invention un dispositif de compression de données à la volée dans un réseau collectif tel que le réseau Internet, comprenant un module de compression et un module de redirection, ce module de redirection étant prévu pour recevoir des données fournies par un serveur en réponse à une requête de consultation émise par un terminal de consultation, et rediriger ces données vers le module de compression, ce module de redirection étant également prévu pour recevoir des données fournies en retour par le module de compression et les rediriger vers le terminal de consultation, ce dispositif incluant en outre des moyens pour examiner, dans une requête de consultation de données émise par un terminal, une indication concernant une aptitude à la décompression du terminal considéré, et des moyens pour commander une compression par le module de compression qui est adaptée à l'indication d'aptitude à la décompression contenue dans la requête.
D'autres caractéristiques, buts et avantages de l'invention apparaîtront mieux à la lecture de la description détaillée qui va suivre, faite en référence aux figures annexées sur lesquelles :A device for compressing data on the fly in a collective network such as the Internet is also proposed according to the invention, comprising a compression module and a redirection module, this redirection module being designed to receive data supplied by a server in response to a consultation request sent by a consultation terminal, and redirect this data to the compression module, this redirection module also being intended to receive data supplied back by the compression module and redirect them to the terminal of consultation, this device further including means for examining, in a request for consultation of data sent by a terminal, an indication concerning a decompression ability of the terminal considered, and means for controlling compression by the compression module which is adapted to the indication of capacity for decompression contained in the request. Other characteristics, aims and advantages of the invention will appear better on reading the detailed description which follows, made with reference to the appended figures in which:
- la figure 1 est un schéma simplifié d'un ensemble de compression de données selon l'invention ;- Figure 1 is a simplified diagram of a data compression assembly according to the invention;
- la figure 2 est un autre schéma simplifié d'un ensemble selon l'invention ;- Figure 2 is another simplified diagram of an assembly according to the invention;
- la figure 3 représente de manière détaillée ce même ensemble selon l'invention ; - la figure 4 représente de manière détaillée un serveur iCAP conforme à une variante de l'invention ;- Figure 3 shows in detail this same assembly according to the invention; - Figure 4 shows in detail an iCAP server according to a variant of the invention;
- la figure 5 est un organigramme représentatif d'un procédé selon une variante de l'invention ;- Figure 5 is a flowchart representative of a method according to a variant of the invention;
- la figure 6 est un organigramme de données et d'instructions selon une variante de l'invention.- Figure 6 is a flowchart of data and instructions according to a variant of the invention.
Le dispositif décrit ci-après utilise un protocole d'échange de données destiné à permettre des modifications de contenus sur l'intemet, protocole appelé iCAP - Internet Content Adaptation Protocol -.The device described below uses a data exchange protocol intended to allow modifications of content on the Internet, a protocol called iCAP - Internet Content Adaptation Protocol -.
Le dispositif de la figure 1 est architecture autour de deux modules 10 et 20 de type iCAP, à savoir un cache 10 du type iCAP client et un serveur 20 de modification de contenu, du type serveur iCAP àThe device of FIG. 1 is architecture around two modules 10 and 20 of the iCAP type, namely a cache 10 of the client iCAP type and a content modification server 20, of the iCAP server type to
« modification de réponse » selon la terminologie énoncée par le protocole iCAP.“Response modification” according to the terminology set out in the iCAP protocol.
Lorsqu'un utilisateur demande, par l'intermédiaire d'un logiciel navigateur fonctionnant sur son ordinateur personnel 30, à accéder à une page Web, les étapes suivantes sont mis en oeuvre dans le dispositif de la figure 1.When a user requests, via browser software running on his personal computer 30, to access a Web page, the following steps are implemented in the device of FIG. 1.
D'abord une requête HTTP est envoyée vers le cache 10, également appelé « proxy cache 10 », configuré dans le navigateur de l'utilisateur 30 (mais ce pourrait tout aussi bien être un proxy cache fonctionnant en mode transparent dans le cadre d'un ISP - Internet Service Provider -).First an HTTP request is sent to the cache 10, also called “proxy cache 10”, configured in the browser of the user 30 (but it could just as easily be a proxy proxy operating in transparent mode in the context of an ISP - Internet Service Provider -).
Le cache 10 envoie alors une requête HTTP à un serveur Web d'origine 40, contenant cette page.
Le serveur Web 40 renvoie la page demandée au cache 10.The cache 10 then sends an HTTP request to an original web server 40, containing this page. The web server 40 returns the requested page to cache 10.
Le cache 10 agissant maintenant comme client iCAP redirige cette réponse vers le serveur iCAP 20 précédemment mentionné, en lui faisant passer la page complète. Le serveur iCAP 20 traite alors cette demande en faisant appel à un service de modifications de contenus intégré au serveur, puis répond au cache 10 en renvoyant le résultat du traitement : la page modifiée (ou non comme on le verra par la suite).Cache 10 now acting as an iCAP client redirects this response to the aforementioned iCAP server 20, passing it the full page. The iCAP server 20 then processes this request by calling on a content modification service integrated into the server, then responds to cache 10 by returning the result of the processing: the modified page (or not as will be seen below).
Enfin, le cache 10 retourne à l'utilisateur final 30 la réponse du serveur iCAP 10 et stocke également cette réponse.Finally, the cache 10 returns the response from the iCAP server 10 to the end user 30 and also stores this response.
Le scénario que nous décrivons ici se déroule lorsque le cache 10 ne possède pas déjà le document demandé en mémoire, dans le cas contraire il répond immédiatement à l'utilisateur en renvoyant la page qu'il a précédemment stockée (c'est à dire soit la page originale, soit la page modifiée si la modification de celle-ci s'est avérée opportune).The scenario that we describe here takes place when the cache 10 does not already have the requested document in memory, otherwise it immediately responds to the user by returning the page that he previously stored (i.e. the original page, i.e. the modified page if the modification of the latter proved to be appropriate).
Le cache 10 de type « client iCAP » est à ce jour disponible sur le marché dans une version industrielle.The cache 10 of the “iCAP client” type is currently available on the market in an industrial version.
Le principe du protocole iCAP repose sur une base simple : à toute requête HTTP correspond une réponse provenant d'un serveur Web ou d'un cache : il suffit donc de transformer soit la requête, soit la réponse pour offrir un service de transformation de contenu. iCAP propose deux modes principaux (« Request Modification » et « Response Modification ») qui sont basés sur le protocole HTTP.The principle of the iCAP protocol rests on a simple basis: to each HTTP request corresponds a response coming from a Web server or from a cache: it is therefore enough to transform either the request or the response to offer a content transformation service . iCAP offers two main modes (“Request Modification” and “Response Modification”) which are based on the HTTP protocol.
Le rôle d'iCAP n'est pas d'effectuer lui-même la transformation de contenu. Il se limite juste à relier des « iCAP clients » (caches Web, routeurs....) avec des « iCAP serveurs », ces derniers étant responsables de la transformation.The role of iCAP is not to perform the content transformation itself. It is just limited to connecting "iCAP clients" (web caches, routers, etc.) with "iCAP servers", the latter being responsible for the transformation.
Le iCAP forum (http://www.i-cap.org) a été créé en décembre 1999 sous l'impulsion des sociétés Network Appliance et Akamai. Son objectif est de standardiser, au travers du protocole iCAP (Internet Content Adaptation, Protocol), les échanges entre les équipements représentatifs des architectures du Web (serveurs Web, caches, load balancers, routeurs...) et les systèmes de transformation de contenu.
La spécification ICAP 1.25 est la plus récente. Elle a déjà fait l'objet de plusieurs implémentations dans le cadre des services à valeur ajoutée de transformation de fichiers dont voici quelques exemples :The iCAP forum (http://www.i-cap.org) was created in December 1999 under the leadership of the companies Network Appliance and Akamai. Its objective is to standardize, through the iCAP protocol (Internet Content Adaptation, Protocol), the exchanges between equipment representative of Web architectures (Web servers, caches, load balancers, routers ...) and content transformation systems . The ICAP 1.25 specification is the most recent. It has already been the subject of several implementations in the context of value-added file transformation services, here are some examples:
- filtrage de virus - filtrage de contenu- virus filtering - content filtering
Le protocole iCAP a aussi été soumis le 27 novembre 2000 à l'IETF (Internet-Draft « iCAP the internet content adaptation protocol » http://www.ietf.orq/internet-drafts/draft-elson-opes-icap-00.txt) dans le Working Group (groupe de travail) Open Proxy Extensible Services. II n'existe pas beaucoup d'implémentations techniques de services utilisant le protocole iCAP. Seuls les éditeurs de logiciel d'Anti-virus bénéficiant de leur savoir-faire en solutions réseaux s'installant sur des FireWall (rideau de feu) ou des proxies (mandataire) proposent un portage de leurs services sur iCAP. On voit aussi l'apparition de nouveaux intervenants commerciaux dans le domaine du filtrage de contenu.The iCAP protocol was also submitted on November 27, 2000 to the IETF (Internet-Draft "iCAP the internet content adaptation protocol" http: //www.ietf.orq/internet-drafts/draft-elson-opes-icap-00 .txt) in the Open Proxy Extensible Services Working Group. There are not many technical implementations of services using the iCAP protocol. Only Anti-virus software publishers benefiting from their expertise in network solutions installing on FireWall (curtain of fire) or proxies (proxy) offer a port of their services on iCAP. We are also seeing the appearance of new commercial players in the field of content filtering.
Mais pour toutes les autres applications éventuellement envisagées, l'investissement de départ reste lourd et coûteux. Ceci explique encore pourquoi les services à valeur ajoutée utilisant iCAP tardent à sortir. Utilisant ici le protocole ICAP et notamment le fait de récupérer des flux provenant des serveurs WEB via un module de redirection iCAP, ici constitué par le cache 10, on met en œuvre un procédé de compression à la volée particulièrement avantageux.But for all the other applications that may be envisaged, the initial investment remains heavy and costly. This further explains why value-added services using iCAP are slow to come out. Using the ICAP protocol here and in particular the fact of recovering flows originating from the WEB servers via an iCAP redirection module, here constituted by the cache 10, a particularly advantageous on-the-fly compression method is implemented.
Le fonctionnement du présent outil de compression iCAP, ou « ICAP Zipper », peut se représenter simplement par le schéma générique de la figure 2.The operation of this iCAP compression tool, or "ICAP Zipper", can be represented simply by the generic diagram in Figure 2.
Les étapes principales du service de compression sont les suivantes : a) le client 30 émet une requête à destination d'un serveur Web 40. Cette requête passe éventuellement par un équipement de redirection, ici le cache 10. b) le serveur 40 transmet sa réponse au client 30 par l'intermédiaire du cache 10.
c) le service de redirection 10 (client iCAP) redirige la réponse vers le serveur iCAP 20. On dénommera ci-après ce serveur par l'expression plus générale « module de compression 20 » afin de qualifier la fonction principale de ce serveur. d) la réponse du serveur 40 est si possible compressée et/ou optimisée par le module de compression 20. e) le module de compression 20 renvoie la requête au module de redirection 10. f) le module de redirection 10 renvoie la réponse au client 30. g) le navigateur client 30 décompresse automatiquement le document reçu avant de l'afficher.The main steps of the compression service are as follows: a) the client 30 sends a request to a Web server 40. This request possibly passes through redirection equipment, here the cache 10. b) the server 40 transmits its response to client 30 via cache 10. c) the redirection service 10 (iCAP client) redirects the response to the iCAP server 20. This server will be referred to below by the more general expression “compression module 20” in order to qualify the main function of this server. d) the response from the server 40 is if possible compressed and / or optimized by the compression module 20. e) the compression module 20 returns the request to the redirection module 10. f) the redirection module 10 returns the response to the client 30. g) the client browser 30 automatically decompresses the document received before displaying it.
La décompression automatique des données du côté client est une fonctionnalité définie dans le protocole HTTP 1.1 (Standard IETF défini par la RFC 2616). Cette fonctionnalité se retrouve ainsi dans la majorité des navigateurs actuels qui intègrent un mécanisme de décompression de type gzip (Internet Explorer - marque déposée - de Microsoft, version 4 et supérieures, Netscape Communicator (marque déposée) de Netscape, version 4 et supérieures).Automatic decompression of client-side data is a feature defined in the HTTP 1.1 protocol (Standard IETF defined by RFC 2616). This functionality is thus found in the majority of current browsers which integrate a gzip type decompression mechanism (Internet Explorer - registered trademark - of Microsoft, version 4 and higher, Netscape Communicator (registered trademark) of Netscape, version 4 and higher).
Ce système de compression (sans client spécifique ni module local - ou plug'in -) offre l'avantage de ne pas intervenir sur les logiciels installés au niveau de l'ordinateur 30 de l'internaute (ou au niveau du téléphone mobile ou de tout autre terminal de consultation utilisé).This compression system (without a specific client or local module - or plug-in -) offers the advantage of not intervening on the software installed on the user's computer 30 (or on the mobile phone or any other consultation terminal used).
Ce service de compression ne modifie pas non plus les couches réseaux et protocolaires, ce qui évite les incompatibilités éventuelles avec d'autres types de services ou d'équipements qui seraient situés entre le service de compression et l'utilisateur final.This compression service also does not modify the network and protocol layers, which avoids possible incompatibilities with other types of services or equipment that would be located between the compression service and the end user.
Les figures 3 et 4 représentent de manière plus détaillée le dispositif préférentiel décrit ici. Sur ces figures, le module de compression 20 (ou module iCAP de transformation de contenu), se décompose en un module administrateur 22, un module adaptateur de flux 23, et un module de service ou sous-module 25 dédié spécifiquement aux tâches de compression des données.
L'adaptateur de flux 23 a pour fonction d'adapter les contenus entre le module de redirection (client iCAP 10) et le module de service 25.Figures 3 and 4 show in more detail the preferred device described here. In these figures, the compression module 20 (or iCAP content transformation module) is broken down into an administrator module 22, a flow adapter module 23, and a service module or sub-module 25 dedicated specifically to compression tasks. Datas. The function of the flow adapter 23 is to adapt the content between the redirection module (iCAP client 10) and the service module 25.
Un tel adaptateur de flux 23 est préférentiellement prévu pour adapter les flux de données également pour une série d'autres modules de services supplémentaires, mettant en œuvre des services autres que la compression, ces modules pouvant par exemple être des modules de filtrage de contenu ou des modules de filtrage anti-virus.Such a stream adapter 23 is preferably provided to adapt the data streams also for a series of other additional service modules, implementing services other than compression, these modules can for example be content filtering modules or anti-virus filtering modules.
L'adaptateur 23 est situé dans le module de compression 20, pour d'une part, dans le sens client 10 - serveur 20, adapter les fichiers pour qu'ils puissent être directement utilisés pour les services de transformation de fichier, et d'autre part, dans le sens serveur 20 - client 10, assurer un contrôle d'intégrité du fichier transformé et éventuellement sa reconstitution.The adapter 23 is located in the compression module 20, on the one hand, in the client 10 - server 20 direction, adapt the files so that they can be directly used for the file transformation services, and on the other hand, in the server 20 - client 10 direction, ensure the integrity of the transformed file and possibly its reconstruction.
L'adaptateur 23 permet de formaliser les échanges entre le module de redirection 10 (client iCAP) et le module de service 25 (service de transformation de fichier) grâce à une adaptation des flux iCAP pour les rendre compatibles avec le module de service de compression 25, ainsi qu'avec d'autres modules correspondant à des services de transformation de fichier, sans qu'il soit nécessaire de développer une couche iCAP au niveau de ces services. Ceci permet alors de définir des services de transformation de fichiers, modulaires, évolutifs et indépendants des couches iCAP.The adapter 23 makes it possible to formalize the exchanges between the redirection module 10 (iCAP client) and the service module 25 (file transformation service) by adapting the iCAP streams to make them compatible with the compression service module. 25, as well as with other modules corresponding to file transformation services, without it being necessary to develop an iCAP layer at the level of these services. This then makes it possible to define file transformation services, modular, scalable and independent of the iCAP layers.
Ainsi, on récupère les flux provenant des serveurs Web via un adaptateur de contenus iCAP et on les convertit ensuite au format Zip, qui est un format de décompression habituel. On voit clairement sur la figure 4 que le module de service 25 est structurellement intégré à la couche iCAP, ce qui signifie que le module de service 25, c'est à dire la partie spécifique au service de compression, est ici très simple à réaliser, notamment en adoptant l'architecture fonctionnelle d'un adaptateur de flux iCAP tel que précédemment décrit. Le service ou procédé général décrit ici va donc permettre de compresser les contenus http, par exemple les objets encodés au format htm, html, pour optimiser les taux de transfert et ce en cœur de réseau et de manière transparente pour le client.
Pour mettre en œuvre ce service, on met en place une détection des capacités du navigateur 30 à décoder un contenu compressé.Thus, we recover the flows coming from Web servers via an iCAP content adapter and then convert them to Zip format, which is a usual decompression format. It is clearly seen in FIG. 4 that the service module 25 is structurally integrated into the iCAP layer, which means that the service module 25, that is to say the part specific to the compression service, is here very simple to produce , in particular by adopting the functional architecture of an iCAP flow adapter as previously described. The general service or process described here will therefore make it possible to compress http content, for example objects encoded in htm, html format, to optimize transfer rates, this at the heart of the network and in a transparent manner for the client. To implement this service, a detection of the capabilities of the browser 30 to decode compressed content is implemented.
La connaissance de ces propriétés différentie particulièrement le présent compresseur iCAP (ou l'iCAP Zipper) des autres systèmes de Booster, qui ne sont valables que pour un type de client donné ou une configuration réseau particulière.Knowledge of these properties particularly differentiates the present iCAP compressor (or the iCAP Zipper) from other Booster systems, which are only valid for a given type of client or a particular network configuration.
Le présent ensemble de compression est de ce fait capable de prendre dynamiquement en compte les particularités des clients et ainsi d'adapter la compression à la volée. Lors de l'envoi d'une requête http vers un serveur Web 40, le navigateur 30 annonce, dans l'entête de cette requête, l'ensemble des caractéristiques qualifiant ce navigateur.The present compression set is therefore capable of dynamically taking into account the particularities of customers and thus of adapting compression on the fly. When sending an http request to a web server 40, the browser 30 announces, in the header of this request, all the characteristics qualifying this browser.
Le module de compression 20 (serveur iCAP) va alors tester l'existence d'une ligne « Accept-encoding » dans la requête http. Si cette ligne n'existe pas, cela signifie que le navigateur 30 n'accepte aucune page compressée. Le module de compression 20 doit alors renvoyer les pages sans les modifier.The compression module 20 (iCAP server) will then test the existence of an "Accept-encoding" line in the http request. If this line does not exist, this means that the browser 30 does not accept any compressed page. The compression module 20 must then return the pages without modifying them.
Si cette ligne existe, le serveur 20 doit regarder la valeur des types d'éléments compressés qui sont acceptés par les navigateurs pour choisir un bon encodeur ou sous-module de compression.If this line exists, the server 20 must look at the value of the types of compressed elements which are accepted by browsers to choose a good encoder or submodule of compression.
Le module de service 25 modifie alors le contenu de l'entête à retourner au client 30, compresse les données, et les retourne au navigateur 30 via le module de redirection 10.The service module 25 then modifies the content of the header to be returned to the client 30, compresses the data, and returns it to the browser 30 via the redirection module 10.
Le module de service 25 réalisant spécifiquement la compression de contenus, fonctionne donc ici nativement en mode « modification de réponse ».The service module 25 specifically carrying out the compression of content, therefore operates here natively in “response modification” mode.
La procédure de compression exécutée dans ce dispositif d'ensemble, mise en œuvre selon une méthode « Data Analysis » de la classe CicapServiceZip, est la suivante, ici détaillée selon une série d'étapes A) à I) également représentées sur le diagramme de la figure 6.The compression procedure executed in this overall device, implemented according to a “Data Analysis” method of the class CicapServiceZip, is as follows, here detailed according to a series of steps A) to I) also represented on the diagram Figure 6.
La procédure décrite ici est réalisée à l'aide d'un module de compression 20 conforme à l'architecture représentée sur la figure 4, mais comportant plusieurs modules de service 25 intégrés dans le même serveur
iCAP 20, ces différents modules de service 25 correspondant chacun à une compression d'un type d'objet différent.The procedure described here is carried out using a compression module 20 conforming to the architecture shown in FIG. 4, but comprising several service modules 25 integrated in the same server iCAP 20, these different service modules 25 each corresponding to a compression of a different type of object.
On fait abstraction ici des étapes relatives à la préparation des différents objets passés au module de compression 20. On précise simplement que l'entête de la requête de consultation initialement émise par le terminal 30 se voit transmise au module de compression 20, par le module de redirection 10, associée aux données fournies par le serveur 40 en réponse à une telle requête.We ignore here the steps relating to the preparation of the various objects passed to the compression module 20. It is simply specified that the header of the consultation request initially sent by the terminal 30 is seen transmitted to the compression module 20, by the module 10, associated with the data provided by the server 40 in response to such a request.
Les objets passés sont, plus généralement, des objets correspondant aux différentes entêtes http relatives au client 10, au serveur 20, et au contenu fourni.The objects passed are, more generally, objects corresponding to the various http headers relating to the client 10, to the server 20, and to the content supplied.
A) Le module de compression 20 recherche dans l'entête de requête- client la chaîne « Accept Encoding », permettant de savoir si le contenu peut être compressé. Si la valeur n'est pas égale à « gzip » ou « deflate » ou si la chaîne n'existe pas, aucune compression n'est effectuée (passage au point I ci-après).A) The compression module 20 searches in the request-client header for the string "Accept Encoding", making it possible to know whether the content can be compressed. If the value is not equal to "gzip" or "deflate" or if the chain does not exist, no compression is performed (go to point I below).
B) Le module de compression 20 recherche dans cette même entête une chaîne « User-Agent » permettant de connaître la version minimale de navigateur utilisé par le client. Si la valeur extraite n'est pas au moins égale à 4 (numéro de version majeure des navigateurs), aucune compression n'est effectuée (passage au point I).B) The compression module 20 searches in this same header for a string “User-Agent” making it possible to know the minimum version of browser used by the client. If the value extracted is not at least equal to 4 (major version number of browsers), no compression is performed (go to point I).
C) Cette opération remplit une fonction de module d'aiguillage. En fonction de l'entête de réponse http (renseignée par le serveur Web d'origine) et plus précisément de la chaîne « Content-Type », on redirige le flux vers un sous-module de compression 25 le plus adapté pour le type de contenu déclaré. Par exemple, une indication « Content-Type :text.html » dans les données renvoyées par le serveur, permet de savoir que le contenu est de type HTML - Hypertext Markup Language - (texte).C) This operation fulfills a referral module function. Depending on the http response header (filled in by the original Web server) and more specifically on the "Content-Type" chain, the stream is redirected to a compression sub-module 25 most suitable for the type of declared content. For example, a “Content-Type: text.html” indication in the data returned by the server indicates that the content is of type HTML - Hypertext Markup Language - (text).
D) Cette opération est réalisée au niveau du module de service 25 (sous-module de compression) : on recherche dans l'entête de réponse http la chaîne « Content-Encoding », permettant de savoir si le contenu est déjà compressé. La compression ne se fait pas si cette chaîne est présente et si
une de ces deux valeurs (« gzip » ou « deflate ») est présente (dans ce cas passage au point I).D) This operation is performed at the level of the service module 25 (compression sub-module): in the http response header, the string "Content-Encoding" is searched, making it possible to know whether the content is already compressed. Compression is not done if this chain is present and if one of these two values ("gzip" or "deflate") is present (in this case go to point I).
E) on compare les premiers octets du contenu avec les octets suivants : il se peut qu'une mauvaise implémentation d'un serveur Web 40 introduise des erreurs de codage et il faut alors s'assurer que le contenu est bien du texte. Si le contenu n'est pas de type HTML, il n'est pas modifié (passage au point I ci-après).E) the first bytes of the content are compared with the following bytes: it may be that a poor implementation of a Web server 40 introduces coding errors and it is then necessary to ensure that the content is indeed text. If the content is not of HTML type, it is not modified (passage to point I below).
F) On appelle une fonction de compression « compress » qui retourne le contenu compressé dans un tampon (buffer) auquel il est nécessaire d'ajouter les octets suivants : 1 F 8B 08 00 00 00 00 00, qui définissent le début d'entêté d'une compression de type gzip.F) We call a compression function “compress” which returns the compressed content in a buffer to which it is necessary to add the following bytes: 1 F 8B 08 00 00 00 00 00, which define the start of the header gzip compression.
Il est également nécessaire alors de modifier les deux premiers octets 00 03 à la. fin de l'entête de compression gzip.It is also then necessary to modify the first two bytes 00 03 to the. end of gzip compression header.
G) On remplace le contenu dans un objet pIcapSocketDataResponseContent par le contenu de ce buffer.G) We replace the content in a pIcapSocketDataResponseContent object with the content of this buffer.
H) On modifie et on ajoute, en fin de l'entête de réponse, la ligne « Content-Encoding : gzip ».H) We modify and add, at the end of the response header, the line "Content-Encoding: gzip".
I) On envoi la réponse (modifiée ou non) au client iCAP 10.I) We send the response (modified or not) to the iCAP 10 client.
Le diagramme de classes de la figure 6 montre les liens de généralisation et de dépendance entre les classes du serveur et les classes spécifiques du service.The class diagram in Figure 6 shows the generalization and dependency links between server classes and specific service classes.
Le diagramme de classe complet d'un compresseur iCAP (iCAP Zipper) préférentiel est la fusion logique de ce diagramme avec celui d'un adaptateur de flux iCAP tel que décrit précédemment. La classe CicapServiceZip est la classe fille de la classe de services iCAP ClcapService. Elle contient les fonctionnalités utilisées pour la compression des objets.The complete class diagram of a preferred iCAP zipper is the logical fusion of this diagram with that of an iCAP flow adapter as described above. The CicapServiceZip class is the child class of the ClcapService iCAP service class. It contains the functionality used for compressing objects.
La classe CicapGlobalsService est la classe abstraite fille de la classe de définitions de constantes et de variables communes aux classes du service. Elle n'est pas instanciable.The CicapGlobalsService class is the abstract child class of the class of definitions of constants and variables common to the service classes. It is not instantiable.
La classe CIcapErrorService définit les constantes d'erreur spécifiques pour le service. Elle n'est pas instanciable.
Les mécanismes de compression fournis par le service décrit ici peuvent agir différemment en fonction des contenus à traiter.The CIcapErrorService class defines specific error constants for the service. It is not instantiable. The compression mechanisms provided by the service described here may act differently depending on the content to be processed.
Ces mécanismes peuvent agir pour réduire le volume des données échangées (compression des données) avec ou sans pertes. Ils peuvent également optimiser les données échangées par réorganisation des données.These mechanisms can act to reduce the volume of data exchanged (data compression) with or without loss. They can also optimize the data exchanged by reorganizing the data.
Pour favoriser l'essor d'iCAP et étendre la gamme de services de transformation de contenus en cœur de réseau, on propose donc ici un service de compression à la volée en cœur de réseau qui se traduit par une accelaration du téléchargement de pages Web et généralement de contenus sur http.To promote the growth of iCAP and extend the range of content transformation services in the heart of the network, we therefore offer here a compression service on the fly in the heart of the network which results in an acceleration of the downloading of web pages and usually content on http.
Ce service trouve une application immédiate pour toute connectivité à Internet depuis des terminaux mobiles (un PC - ordinateur personnel - ou un PDA - assistant digital de poche - via un terminal GPRS - General Packet Radio Service - ou CSD - Circuit Switched Data).This service finds an immediate application for any Internet connectivity from mobile terminals (a PC - personal computer - or a PDA - pocket digital assistant - via a GPRS terminal - General Packet Radio Service - or CSD - Circuit Switched Data).
Il n'est cependant pas limité aux seuls opérateurs mobiles et peut être applicable à tout fournisseur d'accès Internet (FAI).However, it is not limited to mobile operators only and may be applicable to any Internet service provider (ISP).
Il permet alors non seulement d'augmenter la qualité de service perçue par l'utilisateur final, mais aussi d'optimiser la bande passante du FAI sur la portion la plus critique : entre le point d'accès internet et l'utilisateur.It therefore not only increases the quality of service perceived by the end user, but also optimizes the ISP bandwidth on the most critical portion: between the internet access point and the user.
Ce service trouve également son efficacité dans les connections d'utilisateurs nomades avec leur Intranet d'entreprise. En effet, c'est au travers de connexions de type RTC (Réseau Téléphonique Commuté) qu'ils récupèrent des données d'Intranet, et, à ce titre, la compression à la volée offre un gain en bande passante relative et une réduction du temps de téléchargement des nouvelles informations non négligeables.This service also finds its effectiveness in the connections of nomadic users with their corporate Intranet. Indeed, it is through connections of PSTN (Switched Telephone Network) that they recover data from the Intranet, and, as such, compression on the fly offers a gain in relative bandwidth and a reduction in download time for new information.
Enfin, du point de vue d'un fournisseur de service, le compresseur iCAP ou iCAP Zipper décrit ici présente l'intérêt primordial d'une économie en bande passante et d'une amélioration de la qualité de service offerte.
Finally, from the point of view of a service provider, the iCAP or iCAP Zipper compressor described here has the primary advantage of saving bandwidth and improving the quality of service offered.