Un site web en p2p

a marqué ce sujet comme résolu.

il n'empêche que webRTC à tout de même toujours besoin de serveurs, en gros il faut un serveur signaling, un serveur STUN et TURN (tout est expliqué ici).

C'est bien ce qui me semblait avoir lu, d'où mon interrogation plus haut.

Je comprends pas comment techniquement deux browsers peuvent communiquer sans passer par l'intermédiaire d'un serveur, même s'il ne joue que le simple rôle de proxy, ou de routage des messages.

Ca m'intéresse (sur le plan curiosité) de voir si c'est possible, mais techniquement je ne vois pas de solutions :\

Pour les BDD distribuées, je n'ai pas du bien comprendre le sens de la question et surtout la réponse "y'a que DNS qui fonctionne". En pratique y'a plein d'implémentations de BDD distribuées non ? Cassandra etc. ?

+0 -0

Attention, webRTC est bel et bien p2p, seul le serveur de signaling est nécessaire pour mettre en relation deux clients, une fois cette mise en relation effectuée le serveur peut être coupé. Fait l'expérience, prend deux machines dans ton réseau local, tu ouvre une application utilisant webRTC (par exemple le chat dont j'ai donné le lien plus haut) coupe ta connexion internet et tu verra que les deux ordinateurs déjà en relation continuerons de communiquer l'un avec l'autre.

Seul le serveur de signaling est réellement nécessaire, cependant il peu y avoir des cas à cause de NAT que cela ne fonctionne pas, du coup, pour que le webRTC fonctionne dans 100% des cas il faut mettre en place des serveurs jouant les intermédiaires, j'ai retrouvé l'article qui expliquait en détail la problématique, c'est très instructif ;)

Cassandra et cie sont certes distribué, mais on pourrai voir sa comme un cluster de serveurs, chaque node détiens l'intégralité de la base de données. Dans le cas d'un site web p2p, cela signifierai que pour pouvoir naviguer sur le site il faudrait commencer par récupérer l'intégralité de celle-ci… ce qui n'est pas envisageable dés que cette bdd atteins un certains volume. Sans oublier que de base on ne peu pas faire confiance au modifications qu'apporterai un pair à cette bdd, il faut absolument que le réseau valide une modification pour éviter de la corrompre ou de faire n'importe quoi avec (d'où mon intérêt au BitCoin).

+0 -0

En pratique y'a plein d'implémentations de BDD distribuées non ? Cassandra etc. ?

En fait, ça dépend beaucoup de ce que tu entends exactement par base de données. Comme tu n'as rien précisé, je suppose que tu t'attends à une base SQL.

Je ne connais pas spécialement Cassandra, mais selon ce que je peux en lire en 30 secondes, c'est un système à ranger dans la catégorie map/reduce. C'est très différent de ce à quoi on est habitué en SQL.

Si je me rappelle bien, d'après mes souvenirs de cours, on ne peut pas avoir un système hautement distribué ayant toutes les contraintes ACID d'une base de donnée relationnelle classique, c'est impossible.

Et oublie ce que j'ai dit sur DNS, j'ai dit de la merde.

+0 -0

WebTorrent est en gros un port du protocole bittorrent à WebRTC, c'est comme ça qu'il arrive à être décentralisé. Pour ce qui est de base de données distribuée, il y a bien les DHT mais ça reste limité à certains types d'usages à mon avis.

Javier : une fois qu'on a pu atteindre un noeud du réseau, on peut copier un certain nombre de noeuds dans ce réseau et les utiliser pour des accès ultérieurs.

Par contre, pour un site web dynamique, ça me parait très difficile à réaliser et pas très fiable : il n'y a pas autant de noeud connectés en permanence qu'il peut y en avoir pour tor ou bitcoin, or il faut pouvoir savoir si une version est plus à jour qu'une autre. Sauf que si n'importe qui peut donner une version plus à jour (par exemple en postant un message, ou en supprimant un utilisateur), comme cette information part nécessairement d'un seul noeud, on se retrouve avec le fait que n'importe quel noeud peut modifier toute la structure du site et la faire propager. Donc il faut faire partager une table de droits avec le site en lui même, et que les noeuds fassent bien les vérifications.

Sauf que, si un noeud est un utilisateur lambda, il peut très bien se faire passer pour un autre utilisateur lambda, et on ne peut pas mettre un mécanisme d'authentification à mot de passe car d'un, pour qu'ils soient vérifiés, les hash devront être livrés avec le reste, donc tout le monde a les hash de tout le monde, et s'il faut faire une connexion cryptée pour véhiculer le mot de passe non hashé, on ne connait pas celui qui le reçoit, donc le cryptage ne sert même plus à rien.

Exit le système de compte à mots de passe pour gérer les modifications, tout doit être défini en terme de noeud et prioritées sur les autres, donc exit aussi les utilisations nomades, et on se retrouve avec un site plutot statique, .... à que, comme Javier le souligne, on puisse posséder un super-noeud pour l'attribution des noeuds à des clients, autrement dit un serveur, et on en revient à presque internet (même si le superserveur peut tout de même authentifier et fournir les hash des pages, sans pour autant fournir les pages elles-même, et ainsi alléger sa bande passante).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte