Brevet FR2907571A1 — publié le 20080425

La présente invention concerne un système d'échange de données permettant à un utilisateur d'accéder à un contenu de donnée stocké sur un serveur ou transitant par un serveur. II est connu d'utiliser un système d'échange de données comprenant : - un premier serveur accessible sur un réseau, par exemple le réseau Internet, par des utilisateurs au moyen d'un navigateur, et - au moins un serveur privé situé sur un réseau privé, susceptible 10 de délivrer un contenu vers l'utilisateur. De façon classique, le premier serveur permet de référencer un ou plusieurs serveurs privés sur lesquels est stocké un contenu donné. Lorsque l'utilisateur se connecte à ce serveur, et qu'il prend connaissance des contenus disponible, puis choisit d'obtenir ces contenu, une connexion est ensuite établie 15 entre le dispositif sur lequel se trouve le navigateur de l'utilisateur et le serveur privé. Le serveur privé se trouvant sur un réseau privé, est situé derrière un pare-feu, qui n'autorise pas de connexion entrante pour accéder au serveur privé sans une configuration préalable. Cette configuration préalable, devant 20 être effectuée de façon manuelle impose de réaliser un renvoi de port, éventuellement dynamique, et une connaissance par le navigateur de l'utilisateur d'une adresse IP publique du serveur privé. II apparaît en conséquence que cette étape de configuration complique considérablement l'échange de donnée. 25 La présente invention a pour objet de proposer un système d'échange de données permettant de s'affranchir de cette étape de configuration préalable du système. A cet effet, la présente invention concerne un système d'échange de donnée du type précité caractérisé en ce qu'un serveur privé réalise des 30 demandes de connexion de façon cyclique vers le premier serveur, ces demandes de connexion sortant du réseau privé, et le premier serveur est agencé pour recevoir des requêtes des utilisateurs, destinées à un serveur privé déterminé, le serveur acceptant une connexion avec le serveur privé déterminé suite à la réception de la requête de 35 l'utilisateur, et mettant en oeuvre un échange de flux de donnée entre la 2907571 2 connexion établie avec l'utilisateur et une connexion établie avec le serveur privé déterminé. Ces dispositions permettent de s'affranchir de l'étape de configuration évoquée ci-dessus car aucune connexion entrante dans le réseau 5 privé n'est nécessaire au système. Ainsi, les utilisateurs ne connaissent pas l'adresse IP des serveurs privés. De plus, ils n'ont besoin d'aucune connaissance technique, leur permettant par exemple de configurer un pare-feu. Les utilisateurs ne connaissent qu'un identifiant logique du contenu ou du serveur. Avantageusement, le premier serveur est un serveur catalogue comprenant des moyens de recensement des serveurs privés actifs à un instant donné. Grâce à ces dispositions, Les utilisateurs peuvent opérer un choix parmi une liste de serveur ou de contenus disponibles à partir du serveur 15 catalogue. De préférence, le serveur catalogue comprend des moyens de réflexion des flux vers un serveur privé, opérant une encapsulation des flux transmis. Ces dispositions permettent d'obtenir ainsi l'équivalent d'une 20 session directe entre utilisateur et serveur privé. Avantageusement, les moyens de réflexion comprennent : Au moins un module client réflecteur exécuté sur le serveur privé, réalisant les demandes de connexion de façon cyclique vers le premier serveur, 25 - au moins un module maître réflecteur exécuté sur le premier serveur, et un module répartiteur, agencé pour : o refuser les demandes de connexion des modules de réflexion clients des serveurs privés pour lesquels aucun utilisateur n'a fait de requête de connexion, et o accepter la demande de connexion du client réflecteur, initialiser un module maître réflecteur, et indiquer au client réflecteur qu'il doit établir une connexion privée vers ce maître réflecteur, si un utilisateur est connecté pour le serveur privé concerné. 30 35 2907571 3 Ces dispositions permettent de prendre en charge de multiples connexions. De préférence, le module client réflecteur renvoie les informations reçue par la connexion privée établie avec le module maître réflecteur à un 5 serveur de contenu, notamment un serveur web, du serveur privé par une connexion locale, et renvoie vers le module maître réflecteur la réponse de ce serveur de contenu. Avantageusement, le module maître réflecteur reçoit d'une part la connexion utilisateur générée par le navigateur et d'autre part la connexion 10 privée générée par le module client réflecteur, le module maître réflecteur recopiant le flux envoyé par la connexion utilisateur sur la connexion privée, et inversement pour la réponse. De toute façon, l'invention sera bien comprise à l'aide de la description qui suit, en référence au dessin schématique annexé, représentant à titre d'exemple non limitatif, un mode de réalisation d'un système selon l'invention. La figure 1 représente une vue schématique du système d'échange de donnée. La figure 2 est un schéma de principe des composants présents 20 sur le premier et sur le second serveur. La figure 3 est un schéma détaillant les étapes de traitement d'une requête du client. La figure 4 est un schéma décrivant sous forme d'automate à état fini le fonctionnement du composant client réflecteur du second serveur 25 La figure 5 est un schéma décrivant sous forme d'automate à état fini le fonctionnement du composant maître réflecteur du premier serveur. Selon un mode de réalisation du système selon l'invention représenté sur les figures 1 à 5, le système comprend un premier serveur que nous appellerons serveur catalogue 2 accessible par un réseau public 3, 30 notamment Internet, et un ensemble de seconds serveurs privés 4. Un serveur privé 4 est par exemple un ordinateur sur laquelle un serveur web est en fonctionnement sur le port 80. Cette machine, située sur un réseau privé 5, par exemple le réseau local d'un particulier, est située derrière un pare-feu 6. 35 ,Ce pare-feu 6 autorise les connexions sortantes uniquement comme le montre la flèche 7. 2907571 4 Le serveur catalogue 2 est un serveur applicatif accessible par Internet. Il recense les différents serveurs privés 4 actifs. II possède également un serveur web frontal permettant à un utilisateur de s'authentifier. Il est alors fait un rapprochement entre cet utilisateur et un serveur privé. 5 Les utilisateurs sont connectés à Internet, et utilisent un navigateur 8 sur un terminal fixe 9 ou portable 10, par exemple un ordinateur portable ou un assistant personnel relié au réseau public 3 pour accéder au serveur catalogue 2. Leur objectif est de consulter les pages web ou un autre contenu servi par un serveur privé 4. 10 Le serveur catalogue 2 comprend des moyens de réflexion 12, 15 HTTP, permettant de faire circuler un flux HTTP entre l'utilisateur et le serveur privé via ce serveur catalogue, en utilisant une première connexion entre l'utilisateur et le serveur catalogue et seconde connexion entre le serveur privé et le serveur catalogue. 15 Les moyens de réflexion opèrent une encapsulation des flux transmis pour ne pas dénaturer le flux HTTP transmis. Ainsi que représenté sur la figure 2, les moyens de réflexion comprennent un module client réflecteur 12 qui s'exécute sur le serveur privé 4. Ce module tente régulièrement d'établir une connexion 13 vers le serveur catalogue 2 et en particulier vers un module répartiteur 14 qui sera décrit ci-dessous. Si la connexion 13 au module répartiteur 14 est établie, le module client réflecteur 12 récupère le port du module maître réflecteur 15 auquel il doit se connecter, puis établit une connexion 16 vers ce module 15. Lorsque le module client réflecteur 12 reçoit des informations sur la connexion privée 16 établie avec le module maître réflecteur 15, il les renvoie à un serveur web local 17 du serveur privé par une connexion locale 18 avec ce serveur web 17, récupère la réponse du serveur web 17, puis la renvoie vers le module maître réflecteur 15. Le module maître réflecteur 15, qui s'exécute sur le serveur catalogue 2, est capable de recevoir d'une part la connexion utilisateur 19 générée par le navigateur 8 et d'autre part la connexion privée 16 générée par le module client réflecteur 12. Le module maître réflecteur 15 recopie le flux TCP envoyé par la connexion utilisateur 19, en l'occurrence une requête http, sur la connexion privée 16, et inversement pour la réponse. Le module répartiteur de réflexion 14 traite les demandes de connexion 13 envoyées par tous les modules clients réflecteurs 12 2907571 5 actuellement actifs. Il refuse les demandes de connexions 13 des modules clients 12 pour lequel aucun utilisateur n'est connecté. Si un utilisateur est connecté pour le serveur privé 4 concerné, le module répartiteur 14 initialise un processus du module maître réflecteur 15 sur un port donné, accepte la 5 connexion de répartition 13 du client réflecteur 12 et retourne via cette connexion le port sur lequel le client réflecteur doit établir sa connexion privée 16. Le module répartiteur 14 reconnaît les connections en provenance d'un serveur privé 4 donné via son adresse IP. Le serveur catalogue 2 est 10 informé de l'adresse IP actuelle de chaque serveur privé par un mécanisme de rafraîchissement indépendant du réflecteur http. Nous allons à présent détailler le traitement d'une requête de bout en bout, en référence à la figure 3. Dans une première étape El, l'utilisateur se connecte au serveur 15 web catalogue 20 via son navigateur 8. Après s'être authentifié, il demande à être connecté à un serveur privé donné 4. Le serveur web catalogue 20 signale au répartiteur 14 la nécessité d'initier une réflexion pour ce serveur privé 4. L'ensemble module maître réflecteur 15 - module client réflecteur 12 est initialisé comme indiqué précédemment, et un port est affecté sur le serveur 20 catalogue 2 pour la connexion utilisateur 19. Dans une seconde étape E2, le serveur catalogue 2 présente à l'utilisateur une page sur son navigateur comprenant un lien HTML vers ce port dynamique. L'utilisateur cliquant sur ce lien va donc réaliser une requête http directement sur le module maître réflecteur 15 correspondant au serveur 25 privé 4. Dans une troisième étape E3, le module maître réflecteur 15 reçoit la requête http. Il s'assure qu'il possède bien une connexion active vers le client réflecteur 12 concerné (sinon il renvoie une réponse http préétablie indiquant erreur de type serveur non disponible - code 503.) 30 Dans une quatrième étape E4, le module maître réflecteur 15 recopie la requête http reçue sur la connexion privée 16. Dans une cinquième étape E5, le module client réflecteur 12 réalise la requête qu'il a reçu via la connexion privée 16 sur le serveur web privé local 17, et retransmet le résultat sur la connexion privée 16. 35 Dans une sixième étape E6, le maître recopie ces informations sur la connexion utilisateur 19. 2907571 6 Le navigateur 8 de l'utilisateur reçoit donc bien la réponse correspondant à la requête qu'il avait exécuté au départ. Comme représenté sur la figure 4, le module client réflecteur 12 est conçu de façon avantageuse comme un automate à état fini, même si d'autre 5 réalisations sont envisageables. Dans un premier état SC1 de cet automate, celui-ci attend qu'une connexion de répartition 13 soit acceptée par le répartiteur. Dans ce cas, une transition TC1 vers un second état SC2 est provoquée, dans laquelle une tentative de connexion privée 16 vers un module maître réflecteur 15 est 10 tentée. Si cette connexion 16 est établie, une transition TC2 vers un troisième état SC3 est déclenchée, dans lequel un échange de données sur les connexions existantes est réalisé. En cas de fermeture de la connexion vers le module maître réflecteur, une transition TC3 est provoquée vers le premier état SC1. 15 Comme représenté sur la figure 5, le module maître réflecteur peut également être conçu sous forme d'un automate à état fini comprenant simplement un état d'attente SM1 d'une connexion privée 16, et un état connecté SM2 à un module client réflecteur 12 d'un serveur privé 4, deux transitions TM1 et TM2 reliant les deux état, déclenchées respectivement 20 lorsqu'une connexion privée 16 est établie ou rompue. Comme il va de soi, l'invention ne se limite pas à la forme de réalisation préférentielle décrite ci-dessus, à titre d'exemple non limitatif ; elle en embrasse au contraire toutes les variantes. REVENDICATIONS 1. Système d'échange de données permettant à un utilisateur d'accéder à un contenu de données stocké sur un serveur, ou transitant par un 5 serveur comprenant : - un premier serveur (2) accessible sur un réseau public (3), par exemple le réseau Internet, par des utilisateurs au moyen d'un navigateur (8), et - au moins un serveur privé (4) situé sur un réseau privé (5), 10 susceptible de délivrer un contenu vers l'utilisateur. caractérisé en ce que un serveur privé (4) réalise des demandes de connexion (13) de façon cyclique vers le premier serveur (2), ces demandes de connexion (13) sortant du réseau privé (5), et 15 le premier serveur (2) est agencé pour recevoir des requêtes (19) des utilisateurs, destinées à un serveur privé (4) déterminé, le serveur acceptant une connexion (16) avec le serveur privé déterminé suite à la réception de la requête (19) de l'utilisateur, et mettant en oeuvre un échange de flux de donnée entre la connexion (19) établie avec l'utilisateur et une 20 connexion (16) établie avec le serveur privé (4) déterminé. 2. Système selon la revendication 1, dans lequel le premier serveur (2) est un serveur catalogue comprenant des moyens de recensement des serveurs privés (4) actifs à un instant donné. 3. Système selon l'une des revendications 1 ou 2, dans lequel le 25 serveur catalogue (2) comprend des moyens de réflexion (15) des flux vers un serveur privé (4), opérant une encapsulation des flux transmis. 4. Système selon l'une des revendications 2 ou 3, dans lequel les moyens de réflexions comprennent : un module client réflecteur (12) exécuté sur le serveur privé (4), 30 réalisant les demandes de connexion (13) de façon cyclique vers le premier serveur (2), un module maître réflecteur (15) exécuté sur le serveur catalogue (2), et un module répartiteur (14), agencé pour : 35 o refuser les demandes de connexion (13) des modules de réflexion clients (12) des serveurs privés (4) pour 2907571 8 lesquels aucun utilisateur n'a fait de requête de connexion, et o accepter la demande de connexion (13) du client réflecteur 12, initialiser un processus du module maître réflecteur (15), et indiquer au client réflecteur qu'il doit établir une connexion privée (16) vers ce maître réflecteur, si un utilisateur est connecté pour le serveur privé (4) concerné. 5. Système selon l'une des revendications 1 ou 2, dans lequel le module client réflecteur (12) renvoie les informations reçue par la connexion privée (16) établie avec le module maître réflecteur (15) à un serveur de contenu (17), notamment un serveur web, du serveur privé (4) par une connexion locale (18), et renvoie vers le module maître réflecteur (15) la réponse de ce serveur de contenu (17). 6. Système selon la revendication 4, dans lequel le module maître réflecteur (15) reçoit d'une part la connexion utilisateur (19) générée par le navigateur (8) et d'autre part la connexion privée (16) générée par le module client réflecteur (12), le module maître réflecteur (15) recopiant le flux envoyé par la connexion utilisateur (19) sur la connexion privée (16), et inversement pour la réponse.