FR 3059505 A1 20180601 FR 1661563 A 20161128 Titre : Intégration d'une couche protocolaire réseau standard dans un navigateur Web par compilation vers Webassembly et utilisation d'un Websocket. Domaine de l'invention La présente invention concerne le domaine des infrastructures de réseaux informatiques et plus précisément l'accès à des services distants via un navigateur web installé 10 sur un poste client. Etat de la technique On connaît dans l'état de la technique des solutions 15 mettant en oeuvre un serveur intermédiaire de transcodage, par exemple le serveur web ou un serveur spécifique. La demande de brevet américain US 20080313545 décrit un exemple connu de systèmes et des procédés ("outils") qui permettent à un utilisateur d'accéder à un bureau ou à une 20 application à distance, et d'interagir avec ceux-ci, sans avoir besoin d'installer un module d'extension ou un logiciel en plus d'un navigateur Web. Selon certains modes de réalisation, les outils comprennent la double mise en mémoire tampon d'éléments graphiques qui affichent le bureau ou 25 l'application à distance, et la mise en mémoire cache d'images qui sont répétées. Ces outils peuvent également comprendre l'identification de la partie du bureau ou de l'application qui a changé, et ensuite la transmission de la partie changée. 30 On connaît aussi la demande de brevet US 20140372508 Al (Native client tunnel service for client-serveur communication). Dans des modes de réalisation particuliers, un 35 dispositif client compatible HTML charge un script HTML. Le - 2 - 3059505 dispositif client exécute le script HTML avec une spécification de Native Client. Le dispositif client reçoit des informations d'utilisateur spécifiant une connexion. Le dispositif client crée un port vers l'avant ou un dispositif 5 de tunnel, et se connecte à un hôte cible par le port avant ou le dispositif de tunnel. Inconvénients de l'art antérieur Les solutions de l'art antérieur ne sont pas totalement satisfaisantes car les performances sont limitées par les capacités de calcul, de tenue de charge et de la capacité mémoire des serveurs passerelles de transcodage. Les serveurs passerelles de transcodage [gateway] de 15 l'art antérieur doivent conserver un état mémoire correspondant à chaque connexion ouverte, en raison des protocoles connectés utilisés. Lorsque le nombre d'équipements clients est important, la capacité des serveurs passerelles de transcodage arrive à 20 saturation et limite le nombre de connections, sauf à augmenter le matériel. Par ailleurs, lors d'évolutions du protocole, il est nécessaire de réécrire le code dans le langage du navigateur et de mettre à jour les navigateurs sur les postes clients à 25 partir du serveur web. D'autre part, dans les solutions de l'art antérieur, on met en oeuvre deux protocoles - un premier protocole initial entre le serveur terminal et le serveur intermédiaire (gateway), qui est un 30 protocole complet - un second protocole entre le poste client et le serveur intermédiaire (gateway), qui est un sous-ensemble ou un équivalent simplifié du protocole initial. Dans les simplifications, les fonctions de négociation 35 du protocole sont généralement supprimées. De ce fait ce - 3 3059505 protocole est moins souple et implique que tous les clients fonctionnent de la même façon, sans permettre la coexistence de clients de générations différentes sur une même infrastructure. 5 Solution apportée par l'invention Afin de remédier à cet inconvénient, la présente invention concerne selon son acception la plus générale un 10 procédé de connexion d'un équipement client local à une ressource informatique distante, par l'établissement d'une session informatique conforme à un protocole standard consistant à : - exécuter sur l'équipement client une application de navigation web - ouvrir un premier tunnel [websocket] avec un serveur GATEWAY - ladite ouverture du premier tunnel entre l'équipement 20 client et la GATEWAY commandant l'ouverture d'une connexion réseau avec ladite ressource distante. Selon l'invention, l'application Web est exécutée sur le client local calcule des paquets de données conformément à 25 un protocole standard (RDP ou SSH par exemple) et commande la transmission desdits paquets de données à la ressource distante dans le format natif dudit protocole, sans transcodage ou transformation autre que les traitements standards des websocket, par l'intermédiaire du serveur 30 gateway (Proxy websocket) assurant le transfert sans modification du paquet reçu de l'équipement client, au serveur distant et en ce que: - 4 3059505 - le code informatique dudit protocole standard est constitué par un composant JavaScript comportant trois couches une couche d'interfaçage avec les périphériques 5 d'entrée-sortie - une couche d'interface réseau assurant le pilotage du websocket - un code protocolaire standard compilé en ASM.js ou Webassembly à partir d'un code source dans un langage haut 10 niveau. Le procédé selon l'invention présente les avantages suivants : 15 - La mise à jour du code navigateur en fonction des évolutions du protocole est réalisée par une souche commune et une mise à jour du seul code client. On évite ainsi de procéder à la fois à la mise à jour du code exécuté par les serveurs passerelles de transcodage et aux mises à jour des applications embarquées par les navigateurs sur les postes clients. Contrairement à l'art antérieur, dans le procédé décrit par l'invention il n'est pas nécessaire de mettre à jour le serveur de transcodage. La solution selon l'invention permet par ailleurs une meilleure utilisation de la bande passante, car les étapes de transcodage additionnelles et l'utilisation d'un second protocole spécifique pour le transfert au client Web sont évitées. Un effet technique important concerne la réduction du problème du goulot d'étranglement sur le serveur passerelle de 35 transcodage [gateway] résultant de l'utilisation partagée du - 5 - 3059505 code car le traitement réalisé est minimal. La latence réseau dépend des caractéristiques du poste client, la latence additionnelle introduite par la GATEWAY est minimale. 5 La charge du serveur nécessaire à un transcodage est déportée sur le client, ce qui implique que le serveur peut supporter plus de sessions simultanées pour une plus faible consommation électrique Enfin, le flux protocolaire utilise exclusivement des 10 infrastructures réseau standard et il est sécurisé via la couche de sécurité HTTPS du navigateur Web. Description détaillée d'un exemple non limitatif de l'invention 15 La présente invention sera mieux comprise à la lecture de la description détaillée d'un exemple non limitatif de l'invention qui suit, se référant aux dessins annexés où : - la figure 1 représente une vue schématique de 20 l'architecture fonctionnelle d'une infrastructure selon l'invention - la figure 2 représente une vue schématique de l'architecture du poste client. 25 Description de l'architecture fonctionnelle un serveur d'application terminal (1) un ou plusieurs serveur informatique 30 passerelle websocket/TCP socket (2) une pluralité de postes clients exécutant notamment une application de type navigateur web (3). Le serveur d'application terminal (1) communique avec l'environnement extérieur avec un protocole standard, par 35 exemple RDP ou SSH. La solution selon l'invention n'implique - 6 - 3059505 aucune intervention ni modification du serveur d'application terminal (1), ni de ses interfaces de communication. L'essentiel de l'invention se traduit par les 5 modifications intervenant au niveau de l'application embarquée dans le navigateur (4), telle que détaillée par la Figure 2 et exécutée par le poste client (3). Cette application embarquée est constituée de plusieurs couches 10 - une couche d'affichage (7) exécutant les ordres d'affichage provenant du protocole, par exemple bitmap, tracé de caractères, de texte, d'images,..., en fonction du protocole RDP ou SSH. Cette couche réalise aussi les fonctions d'interaction avec le clavier, 15 souris et plus généralement les périphériques d'entrée. Cette couche est constituée par un programme JavaScript écrite spécifiquement pour le protocole, par exemple dans un langage de type HTML5. Cette couche est disponible pour une pluralité d'équipements, tels que 20 des ordinateurs, des téléphones cellulaires, des tablettes à écran tactile, etc. - Une couche protocolaire (6) compilée vers asm.js ou Webassembly, à l'aide par exemple de la chaine de compilation Emscripten, assemblée à partir 25 d'une souche de code écrite dans un langage haut niveau, typiquement en C ou C++. Cette couche implémente le décodage et l'encodage du protocole réseau, à partir de librairies connues et disponibles sous forme de code source, par exemple le code 30 ReDemPtion (nom commercial de la société WALLIX, disponible sous licence libre, qui constitue une implémentation libre du protocole RDP de la société MICROSOFT). - 7 - 3059505 Cette couche protocolaire pilote de préférence les fonctions de préchargement des données protocolaires de la couche d'entrée/sortie (5). 5 - Une couche d'entrée/sortie (5) basée sur le protocole HTML5 Websocket. Cette couche d'entrée/sortie (5) précharge les paquets protocolaires dans la mémoire vive du poste client, de façon à permettre un fonctionnement asynchrone, et d'adapter la solution 10 selon l'invention à un protocole essentiellement synchrone. Lors de l'initiation d'une connexion, trois solutions sont prévues 15 - La première solution prévoit que le serveur passerelle (2) impose la cible (terminal d'application prédéfinie (1), et non modifiable par le client (3)). - La seconde solution prévoit une négociation préalable pour la configuration de la cible (1), par 20 mécanisme lié au serveur passerelle (2) - La troisième solution prévoit l'installation d'une extension de protocole spécifique, commandant l'ouverture de la session, préalable au démarrage du protocole principal. 25 La passerelle (2) assure une fonction de simple relai du protocole sous-jacent, entre la couche de transport WEBSOCKET (5) et la couche de transport entre la passerelle (2) et le serveur d'application terminal (1). Contrairement 30 aux solutions de l'art antérieur, la passerelle (2) n'assure aucune fonction intelligente telle que le décodage du protocole, la mise en cache de bitmap, etc., fonctions qui, selon l'invention, sont réalisées par l'application embarquée dans le navigateur du poste client. - 8 - 3059505 La passerelle (2) peut exécuter un code standard de type module APACHE assurant le relai WEBSOCKET vers le serveur d'application terminal (1) - 9 REVENDICATIONS1 - Procédé de connexion d'un équipement client local à une ressource informatique distante, par 5 l'établissement d'une session informatique conforme à un protocole standard consistant à : - exécuter sur l'équipement client une application de navigation web ouvrir un premier tunnel [websocket] avec un 10 serveur GATEWAY - ladite ouverture du premier tunnel entre l'équipement client et la GATEWAY commandant l'ouverture d'une connexion réseau avec ladite ressource distante caractérisé en ce que: 15 L'application Web exécutée sur le client local calcule des paquets de données conformément à un protocole standard (RDP ou SSH par exemple) et commande la transmission desdits paquets de données à la ressource distante dans le format natif dudit protocole, sans transcodage ou 20 transformation autre que les traitements standards des websocket, par l'intermédiaire du serveur gateway (Proxy websocket) assurant le transfert sans modification du paquet reçu de l'équipement client, au serveur distant. et en ce que: 25 - le code informatique dudit protocole standard est constitué par un composant JavaScript comportant trois couches - une couche d'interfaçage avec les périphériques d'entrée-sortie 30 - une couche d'interface réseau assurant le pilotage du websocket - une couche protocolaire constituée par un code standard compilé en ASM.js ou Webassembly à partir d'un code source dans un langage haut niveau. 35 - 10 - 3059505 2 - Procédé de connexion d'un équipement client local à une ressource informatique distante selon la revendication 1 caractérisé en ce que ladite couche d'interfaçage avec les périphériques d'entrée-sortie est constituée par une couche d'affichage exécutant les ordres d'affichage provenant du protocole, bitmap, tracé de caractères, de textes, d'images, en fonction du protocole RDP ou SSH par exemple. 3 - Procédé de connexion d'un équipement client local à une ressource informatique distante selon la revendication 1 caractérisé en ce que ladite couche d'interfaçage avec les périphériques d'entrée-sortie réalise les fonctions d'interaction avec le clavier, souris et plus généralement les périphériques d'entrée. Cette couche est constituée par un programme JavaScript écrit spécifiquement pour le protocole, par exemple dans un langage de type HTML5 4 - Procédé de connexion d'un équipement client local à une ressource informatique distante selon la revendication 1 caractérisé en ce que ledit code protocolaire d'entrée/sortie précharge les paquets protocolaires dans la mémoire vive du poste client, de façon à permettre un fonctionnement asynchrone, et d'adapter à un protocole essentiellement synchrone.