Bonjour,
En regardant au fonctionnement des systèmes de messageries instantanées, je suis arrivé à ces conclusions :
Avec des protocoles style msn, tout passe par un serveur en ce qui concerne la connexion et transmission de donnée. Ce qui veut dire qu'on est limité par ce que permet le serveur (bande passante, filtrage de contenu,...).
Avec des protocoles style XMPP, on utilise toujours une architecture client-serveur mais à la différence où tout est décentralisé et l'on peut donc utiliser son propre serveur sans trop de soucis.
Je me demandais donc si on ne pouvait pas pousser le raisonnement encore plus loin et arriver à une situation où l'on se passe de serveur.
Après réflexion voici le mieux que j'ai imaginé :
Façon P2P, chacun est à la fois client et serveur. La connexion entre pairs pourrait se faire par un système d'échange de clés publique (façon oneswarm) que l'on peut se transmettre par n'importe quel moyen. On garantirait en plus la confidentialité.
La liste des pairs connectés peut être partagée via une hashtable distribuée, pas besoin de centralisation de ce coté là.
La connexion entre deux contacts est directe via l'adresse IP récupérée dans la hashtable sans passer par d'intermédiaires.
Seulement je bloque sur quelques points :
D'abord l'initialisation de l'échange de la liste des pairs connectés pour savoir si un de ses contacts est en ligne.
On peut imaginer que l'utilisateur possède une liste de pairs préférés auxquels il peut tenter de se connecter pour récupérer une partie de la liste. Seulement soit l'utilisateur obtient par un moyen privé (mail, clef usb,...) cette liste pour faire un réseau privé, soit il se connecte à un serveur qui lui donne cette liste de pairs. La première solution n'est pas idéale en raison de la difficulté de la distribution.
Si l'on continue dans la logique d'accéder à ce serveur seulement pour communiquer sa présence, l'on peut imaginer comme pour un tracker torrent la possibilité d'être "lié" à plusieurs serveurs pour ne pas restreindre les groupes.
Idéalement il faudrait inclure un système pour garantir qu'un utilisateur est unique. Via la clé publique ? Mais alors comment faire une recherche de contact ? Si je veux rajouter mon ami dans la liste de mes contacts, je préfèrerais ne pas avoir à faire un copier-coller de sa clé publique (pas très user friendly) mais plutôt introduire un identifiant. La seule solution que je vois alors serait de passer encore par un ou plusieurs serveur externe (style format adresse email).
Et puis comment permettre d'utiliser son compte sur plusieurs pc différents ? A moins de transporter physiquement sa clef privée et liste de contacts, encore une fois il faudrait passer par un prestataire externe.
Il serait donc impossible d'avoir une vrai architecture décentralisée ou j'ai loupé une étape ?
Merci