Communication serveur/client sans port?

Fermé
Crokinours - 10 juin 2010 à 19:59
 Utilisateur anonyme - 14 juin 2010 à 09:04
Bonjour,

Je dispose de 2 poste client et d'un serveur
Chaque poste client possède une connexion internet derrière une box configurer par défaut

Mon but est de faire communiquer les 2 clients entre eux (1 prendrait le rôle de serveur)
Le serveur ne doit pas être constamment utiliser mais plutôt une plateforme de connexion entre les 2 postes.

Voila un Schéma de se que j'aimerai réaliser : http://damienvessiere.free.fr/shema.jpg

Par avance merci à toute les réponses !
Damien



PS : Posté une deuxième fois dans la rubrique réseau, désoler pour le "spam"!
A voir également:

6 réponses

Utilisateur anonyme
11 juin 2010 à 10:51
salut !
Le nom de ton poste ne va pas, tu dois obligatoirement utiliser des ports pour la communication via socket.

Ensuite, tu peux utiliser le concept du peer2peer, c'est à dire qu'il y a un serveur contenant les clients connéctés, et chaques clients disposent d'un rôle de serveur pour le transfert.

c'est à dire que le serveur contient les ip et ports des clients (voir leur id mais dans ton cas ce ne sera pas nécessaire), le client demande l'ip et le port de l'autre puis se connecte à ce dernier.

mais pour deux postes, ton serveur devient useless vu qu'il ne sert qu'a renvoyer l'ip et le port que de toutes facons tu dois connaitre pour te connecter au serveur (je sais pas si je suis trés clair, demande moi si des points sont sombres ^^)
0
Salut,
Le nom de ton poste ne va pas, tu dois obligatoirement utiliser des ports pour la communication via socket
Mon poste??

Sinon je crois avoir compris, à partir du moment ou j'ouvre un port sur le client pour parler au serveur n'importe qui pourra me répondre à la place du serveur s'il dispose de l'ip et du port que le client à ouvert pour la communication !

Mon schéma http://damienvessiere.free.fr/shema.jpg est donc bon dans l'idée?
Merci nagashima de ton investissement !
Bonne jounée
0
Utilisateur anonyme
11 juin 2010 à 12:02
dans l'absolu, ton schéma est correcte (je voulais dire post pas poste ^^) mais il faudra que ton client accepte les connexions entrantes et donc que tu mettes en place un serveur de socket sur le client qui accueillera l'autre.

Un diagramme de séquence serai mieux pour présenter ce que tu veux faire ;)

en gros tu auras deux client (avec un serveur implémenté en thread dans, l'autre ou les deux) et un serveur (exclusivement serveur)
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 12:10
Tu es théoriquement obligé de faire une redirection de ports sur ton routeur.... cependant, l'idée du peer to peer est bonne, ce qui m'amène à cette solution:

HAMACHI

c'est un VPN fonctionnant en peer to peer... les performances ne sont pas aussi bonnes que si tu prenais le temps de configurer ton routeur !
0
Utilisateur anonyme
11 juin 2010 à 13:42
il faut bien sur en théorie configurer les box, mais je pense qu'en embriquant les trames ca devrait le faire, mais ca sera pas gagné ^^

après je m'y connais pas trop en trame donc je préfère pas m'avancer =D
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 13:57
C'est pas uine question de trames, c'est une question de sens des trames. ton serveur a besoin de connexions entrantes, ce qui ne peut se faire qu'avec un routeur configuré.

hamachi, étant un client peer to peer, crée une connexion sortantes, dans laquelle il encapsule en effet, les trames qui seront par la suite entrantes.... bref, en gros, c'est le logiciel hamachi pour faire ton truc sans toucher au routeur
0
Utilisateur anonyme
11 juin 2010 à 14:16
hamashi est à la base codé donc recodable ...
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
Modifié par Nabla's le 11/06/2010 à 15:03
sauf que tu oublies qu'hamachi fonctionne en peer to peer, qu'il se sert des autres ordinateurs ayant hamachi d'installé, et sans oublier les serveurs de chez hamachi qui eux sont derriere des routeurs correctemenrts configurés


mais oui, cest recodable.... bonne chance pour t'attaquer à la couche TCP/IP, meme si le principe de base est simple, la mise en application l'est un peu moins...

tu nous a pas dit pourquoi tu ne veux pas configurer ton routeur (parce que si t'as pas le niveau pour configurer ton routeur, je doute de tes possibilitées à coder un VPN peer to peer

edit: dsl, j'ai cru un moment que nagashima etait l'auteur du post, mon commentaire n'en reste pas moin valable ....
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 15:05
verifiez aussi du coté des serveurs "STUN" je crois... c'est fait pour la VOIP il me semble à l'origine, masi je croi que c'est assez ouvert. ca permet de recevoir des connections entrantes alors qu'on est derrière un parre feu, par encapsulation de trames aussi.
toujorus est il qu'a un moment ou a un autre, il faut un serveur à l'exterieur (le serveur stun, le serveur hamachi, etc..)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 16:02
Je reviens à ton idée de base, elle rapelle l'attaque de kevin mitnick. Sauf que lui n'envoyais des paquets que dans un sens.

si tu veux vraiment faire la connexion comme tu as dis, je suis supersticieux....
il faudrais que tes clients usurpent l'IP de ton serveur afin de traverser le routeur. Il faudrait donc recoder une partie de la pile TCP pour y integrer l'usurpation de manière transparante pour les applications.... bien entendu, il faudrait après usurpation que la réponse soit envoyée à l'autre client, ce qui implique de passer ta vraie adresse ne parametre.
0
Utilisateur anonyme
11 juin 2010 à 16:08
on peu en effet avoir des doutes, mais sa demande n'enfreint aucunement la chartre (je viens d'avoir un de mes sujet fermer pour ca alors que ca n'était pas interdit mais pouvais laisser entendre des doutes ^^)
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 16:33
ha non, je n'ai pas dis qu'il voulait faire du piratage. L'ataque de mitnik était possible à cause d'une erreur d'implémentation du générateur de nombre aléatoire du protocole TCP combiné à une grosse faille de sécurité....
La dite attaque n'est plus possible.. Je dissais juste que ca ressemblait.
Cependant, je me pencherai bien sur la solution que j'ai évoqué, mais je doute que ce soit dans mes compétances pour le moment. Il faudrait que je m'interesse de plus près à la la pile réseau sous linux
0
Utilisateur anonyme
11 juin 2010 à 16:49
tout comme moi, ainsi que sur les trames (j'avous ne pas m'être énormément investis dans ce qui concerne le réseau, juste ce que j'ai vu en cours ^^)

après je ne sous entendais pas que c'était pour le piratage, et même si c'est le cas, ce n'est pas à nous d'imposer notre ressentit (je voulais faire un keylogger dans mon p2p pour faire des raccourcis style ctrl+1 etc. mais on m'a fermé le topic ><)
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 16:58
ca va, je me débrtouille pas mal en bas niveau, et donc les protocoles réseau ne me font pas peur. Je n'hésite pas à signaler quand le sujet tend vers le piratage, les modérateurs jugerons par la suite, ils sont là pour ca.

J'ai déja fait un mini key logger, mais la réponse qu'on donne souvent sur ce forum est "tes intentions sont peut être tout a fait louables, mais un petit *** pourrait passer sur la discution pour prendre des idées de piratage. Après, rien n'empèche a qqcn de t'aider en privé s'il juge tes intentions louables. On remarque en général assez facilement les petis malin ;)
0
Utilisateur anonyme
11 juin 2010 à 17:10
héhé oui en effet =)
en toutes franchise, je suis pour les hacker blanc mais j'en reste la. le sujet m'intéresse car il faut savoir défaire les choses si on veut pouvoir faire des protections réellement performantes mais bon ^^.
Ensuite c'est vrai qu'en privé c'est intéressant, mais étant donné que je travail, je n'ai pas forcément le temps de prendre 2/3heures pour réellement avancer avec quelqu'un, alors que sur un forum, le temps est plus facile à gérer.

Quoi qu'il en soit, on spam un peu le topic là =D, on peut toujours continuer en pv, ca serai mieux (mais je finis dans peu de temps et le week sera chargé ;) )
0
Woooo sa soulève plein de bonne idée/Reflection merci !
Je vais clarifié le contexte car certaine idée comme hamachi ou que je sois un hacker :-) ne sont pas possible.

Je crée un petit programme android, le but est de le distribué largement et que les joueur puissent jouer entre eux sans passer par un serveur ou comme si bien dit dans un commentaire : "en utilisant un serveur de rendez-vous"

Je retient donc après survol des idées que si je parle a Monsieur Serveur (1.1.1.1:5000) et que je suis Monsieur client(2.1.1.1:4000) alors Monsieur client 2 ne pourra pas envoyer sur (2.1.1.1:4000) car son adresse IP ne sera pas (1.1.1.1) et sera virer par le routeur/box

De plus je retient L'UDP peut être avec une petite couche pour le fiabilisée car sous Android :


http :125ms ping de moyenne
udp : 75ms ping de moyenne
tcp : 375ms ping de moyenne

Http est rapide car une classe android pour ca existe mais le pb c'est que je peut pas envoyer des trame Serveur à client quand je veux, donc pas adapté a mon cas !

Je sais configurer un routeur mais mes client application android pas tous et je veux pas leur imposer cette contrainte !
D'autre idée que de reimplementer UDP ^^

Je veux bien une petite description du principe low-id emule.

Resumé :
UDP ou HTTP
Systeme Android
Communication Client1 à Client2 à tout moment une fois "connecter"
Communication Client2 à Client1 à tout moment une fois "connecter"

Encore Merci à tous !
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
12 juin 2010 à 11:32
salut
tu as bien compris le concept ...

a mon avis, en UDP il y a moyen de faire qqch, comme le réseau KAD utilisé par emule.
petite explication sur emule: il y a deux protocoles utilisés à la fois: ED2K et KAD.

Premièrement, ED2k qui comporte le principe de lowID:
tu te connectes à un serveur (qui référence des fichiers, quels clients ont ces fichiers, etc...), tu demande un fichier, on t'adresse une liste d'ordinateurs à contacter.
en gros les solutions qui s'offrent à toi (je te le fais a la freestyle, j'ai pas étudié le protocol en détail, je me base sur la logique):
- L'autre ordinateur est accessible depuis internet (les ports sont ouverts): tu le contact directement
- L'autre ordinateur n'est pas accessible depuis internet: tu transmet ta demande au serveur qui lui transmettra ta demande... Normal, il a le droit car le client que tu veux joindre s'est connecté dessus.

Une fois que les données vont être echangées, il y a 2 solutions:
- Les deux ordinateurs sont derriere un routeur pas configuré, (ils sont tous les deux en low ID), alors toutes les transmissions vont passer par le serveur... faut avouer qu'il y a plein de gens qui font ca, du coup ca surcharge les serveurs pour rien, du coup les transferts sont très lent.....
-un deux deux ordinateurs (ou les deux) est accessible depuis internet (routeur bien configuré: High ID): alors l'autre ordinateur le contact directement et ouvre un cana de communication.... Ainsi les données s'échangères et eurent beaucoup de petits mulets ....

LE réseau KAD fonctionne différement, mais a des parties communes....
Il n'y a PAS DE SERVEUR.. En gros, t'es dans la merde pour te connecter, parce que t'as pas de point de reference. Pour te connecter, il te faut l'adresse d'un client KAD (ca c'est vraiment du peer to peer pur.. c'est pour ca que lors d'une installation fraiche de emule, ton client ed2k se connecte, mais KAD est dans le choux... si tu te mets à recherche un fichier, ed2k va recuperer des IP et KAD va essayer de se connecter avec).
bref. Dès que t'es connecté a un gars, il te refile des IP d'autres gars, et ton ordinateur se fait son "réseau de connaissances" comme ca. L'annuaire de fichiers est un annuaire distribué donc je ne connais pas les finesses du rouage... Pour KAD aussi il faut avoir configuré son routeur pour que ca fonctionne mieu: meme principe qu'avant.... SI t'esprotegé derriere ton pare feu, on ne peut pas te contacter. Deux personnes protegées ne pouront jamais se parler.

Donc bon, tu peux t'inspirer de ces processus pour monter ton propre réseau p2p. Je serai personnelement currieux de faire des essais de spoof d'IP (en UDP sinon ca marchera pas) en utilisant la technique suivante (hiers j'étais au boulot j'ai pas eeu trop le temps d'y reflechir):
on a un serveur sur lesquels les clients envoient un peu quelques paquets UDP juste pour s'authentifier, avoir une liste de contacts, etc.... On va dire que S est l'adresse du serveur, A et B celles de deux clients cachés derrière des routeurs....
A envoie un paque à S, il est authentifié
B envoie un paquet à S il est authentifié et récupère l'adresse de A.
B envoie un paquet à A en spoofant l'adresse de S. Ainsi, comme B est autorisé à recevoir les paquets de S, il n'y a pas de problème. Dans le paquet, B a mi son adresse réelle dans la zone de données.
A recoit directement le paquet venant de B, mais étant authentifié par le routeur comme venant de S. A y lit l'adresse de B et utilise le meme processus pour répondre à B: il spoof l'adresse de S et signele message dans la zonne de données. Je sais pas si des réseaux utilisent cette technique, et je ne sais pas à quel point elle s'authentifie à du piratage. Pour moi, tant que S autorise les gens à lui piquer son adresse (et tout le processus repose sur la collaboration de S au début) alors on est OK. PEut être qu'un s^pecialiste du droit informatique aurait des remarques à faire, et je serai heureux de les écouter
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
12 juin 2010 à 11:33
ha oui, vas voir sur wikipedia, il me semble aavoir lu pas mal de detail sur les protocoles ed2k et KAD. Tu peux aussi aller voir le protocole torrent que je connais moins
0
Je vien de regarder le principe et en faite on peut s'en sortir à condition que 1 des 2 client ne soit pas en lowid (une des deux client est débloqué les ports) sinon c'est impossible.
Je pense donc que si emule n'a pas trouver de solution p2p sans ouverture de port je n'en trouverai pas une :-)
correcte ?
0
Utilisateur anonyme
12 juin 2010 à 11:50
<quote>
le but est de le distribué largement et que les joueur puissent jouer entre eux sans passer par un serveur
</quote>

ca existe déjà : avec counter strike 1.0, les serveurs étaient chez les clients : tous pouvaient créer leur partie
(comme quoi, la connexion était de 512k dans les meilleurs des cas et la latence n'était pas importante \o/ )

<quote>
Monsieur client 2 ne pourra pas envoyer sur (2.1.1.1:4000) car son adresse IP ne sera pas (1.1.1.1) et sera virer par le routeur/box

</quote>

- le client 2 ne sera pas proprement ejecté, mais le routeur ne sera pas où transmettre la trame vu qu'il n'y a pas de redirection de ports
- c'est justement là le problème, il faut donc jouer sur les trames afin que le client2 transmette au client1 en se faisant passer pour le serveur (là il y a du boulot)

<quote>
Je sais configurer un routeur mais mes client application android pas tous et je veux pas leur imposer cette contrainte !
D'autre idée que de reimplementer UDP ^^
</quote>
en réutilisant le port utilisé par le serveur, tu vas pouvoir usurper son identité avec le client ce qui pourrait te permettre de créer la connexion entre les deux client (mais il faut que celui qui accepte l'autre ait une partie serveur)

par exemple :

client1 se connect à serveur
client2 se connect à serveur
client2 demande à se connecter à client1 via le serveur
client1 recoit la trame (que le serveur aura tranmis) indiquant tout ca

là, concrètement, la liaison se fait avec le serveur mais au final ce sera les deux "client" (l'un est au final devenu serveur)

c'est là la partie délicate en fait, je t'ai exposé la théorie, maintenant je te laisse t'amuser avec la pratique =D
0
Utilisateur anonyme
12 juin 2010 à 11:51
erf j'ai loupé mes quotes x) 'fin vous avez compris ^^
0