IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Discussion :

se connecter à un PC qui est derrière un routeur par socket?


Sujet :

Développement

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut se connecter à un PC qui est derrière un routeur par socket?
    Salut,

    Je voudrait me connecter à un PC qui est derrière un routeur (livebox), et tout ça avec des sockets. J'ai réalisé un programme serveur.

    Mais quant je rentre l'IP internet de ce serveur dans le programme client ca marche pas. Je suposse qu'il faut ouvrir le port mais je voudrait comprendre comment marche tout ça...

    Avant de me lancer dans le code je voudrait avoir des infos sur les passerelles et les masques réseaux.

    Aussi je voudrai savoir ce que ça veut dire ouvrir un port (sur une livebox),
    si on ouvre un port et qu'il y a 2 PC derrière la livebox sur quel PC c'est redirigé.

    Je connait pas bien les paserelles, si quel qu'un a des liens sur ça, je voudrait savoir plus précisément comment ça marche.

    Merci

    PS: j'ai déja codé un tchat (programme serveur+programme client) et je voudrait approfondir ce programme.

    EDIT : Je supose qu'une livebox marche sur le principe d'une passerelle, ou peut être je me trompe??

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Un routeur est configuré pour n'ouvrir que certains ports pour certaines IP. Il faudra donc ouvrir le port que tu utilises pour l'IP que tu vises, mais ça se passe du côté de la config du routeur et non de ton programme.

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Je vais peut être dire une betise, mais si ton socket coté client (derriere le routeur) ouvre son port et se met en attente, cela ne devrait t'il pas suffire pour dire au routeur de laisser passer les flux ?
    Et donc te connecter depuis ton PC qui est devant le routeur.

    Enfin sa depends surement de la config du routeur encore une fois.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Loulou24
    Un routeur est configuré pour n'ouvrir que certains ports pour certaines IP. Il faudra donc ouvrir le port que tu utilises pour l'IP que tu vises, mais ça se passe du côté de la config du routeur et non de ton programme.
    Alors si j'ai bien compris, si il y a 2 PC derrière un routeur ils ne peuvent pas utiliser les 65536 ports, c'est ça ? :

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut
    D'après ce que j'ai compris un routeur reçoit des paquets sur ses 65536 ports et il ragarde dans une liste pour savoir ou rediriger les paquets.

    le routeur reçoit un paquet sur le port 4444 puis le renvoi vers l'IP qu'on lui a indiqué. Ainsi on peut configurer le routeur pour que tout les paquets reçu sur le port 5435 soit achememinés vers l'ip 192.168.10.3 du réseaux local. (il renvoit sur l'IP 192.168.10.3 mais sur quel port, ça aussi on peut configurer : )

    Et quant on veut faire ceci dans l'autre sens:
    Comment ça se passe quant on est derrière le routeur et qu'on veut se connecter vers l'extérieur (on passe par quel port : )


    Merci de m'éclairer

    EDIT: Mais a quoi correspondent les couches, les données encapsulées et tout ça :

  6. #6
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    En fait tu veux juste faire du NAT.

    Si j'ai bien compris, ta configuration est celle-là :
    serveur <-> routeur <-> internet <-> client

    Le client le peut pas atteindre directement le serveur parcequ'il y a le routeur au millieu ; d'ailleurs le serveur ne possède même pas d'adresse ip internet.
    Si ton application serveur écoute le port 1234, alors il faudra dire au routeur qu'il doit faire suivre les connexions arrivant sur le port 1234 vers ta machine serveur. Et ton routeur renvoie le paquet IPen ne modifiant que l'adresse de destination (pour qu'elle corressponde à celle du serveur) ; donc les adresses IP de source et de destination restent les mêmes, ainsi que les ports TCP.

    Et comment le serveur renvoie la réponse au client ? C'est simple, le serveur connait déjà l'adresse IP internet du client. Donc quand le routeur reçoit un paquet à destination d'une adresse internet (par opposition à une adresse locale) il fait son boulot et renvoi le paquet vers internet en modifiant au préalable l'adresse source (pour qu'elle corressponde à l'adresse IP internet du routeur).

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Celelibi
    Si ton application serveur écoute le port 1234, alors il faudra dire au routeur qu'il doit faire suivre les connexions arrivant sur le port 1234 vers ta machine serveur.
    Alors cela limite le nombre de ports disponibles (si on a 3 PC derrière une livebox, ces 3 PC devront se partager les 65536 ports du routeur).

    Cela voudrait dire qu'un meme port du routeur ne peut être utilisé que par une seule machine du réseaux :

    Merci de bien vouloir m'aider à comprendre

  8. #8
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    oui c'est tout à fait exact.
    Le nombre maximal de logiciels serveur (qui écoutent un port TCP) que tu peux faire tourner derrière un unique routeur est de 65535.

    Cela voudrait dire qu'un meme port du routeur ne peut être utilisé que par une seule machine du réseaux ?
    Sur une même machine tu ne peux avoir qu'une seul et unique application qui écoute un certain port. Le routeur, quand il va recevoir une tentative de connexion sur un certain port il ne va pouvoir rediriger cette connexion que vers une seul et unique machine.


    Je tiens quand même à préciser qu'avec IPv6, tous ces problèmes de NAT ne seront plus qu'un lointain souvenir.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour.
    J'ai exactement le même problème que Damien99 :

    Je souhaite créer un application qui serait client ou serveur (suivant les cas). Entre deux de ces applications il peut y avoir un/des routeur(s) ou pas & je veux que l'utilisateur ne s'occupe de rien. Ca revient en fait à une connection peer to peer pour un chat (ou jeu) sans serveur dédié.

    Si j'ai bien compris les explcations, la seule manière détablir une connection avec une machine situé derrière un routeur - sans une configuration particulière de celui-ci - c'est que ce soit elle qui demande la connection. Je me trompe ?

    Mais alors, question : comment fonctionnent des logiciels comme MSN ou bien eMule pour établir une connection entre deux utilisateurs derrière des routeur (liveBox ou autre biduleBox) sans que l'utilisateur ne configure son routeur

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Linuxien
    Je ne crois pas que cela soit possible sans modifier la configuration du routeur
    quand a msn je pense que ce n'est pas une application p2p au sens ou un contact a moi ne se connecte pas directement a mon ordinateur , tous les gens qui utilisent msn sont des clients d'un serveur il n'y a pas de notion de client serveur msn le seul serveur c'est le serveur de msn.
    Donc je pense que les clients de ton appli seront obligés de modifier la configuration du serveur pour faire une redirection de port ou alors faire un serveur centralisé de maniére a ce que tous les utilisateurs soient des clients de ton serveur.

  11. #11
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    Mais alors, question : comment fonctionnent des logiciels comme MSN ou bien eMule pour établir une connection entre deux utilisateurs derrière des routeur (liveBox ou autre biduleBox) sans que l'utilisateur ne configure son routeur
    tu peux pas justement. c'est justement la différence entre une passerelle qui transfert betement et un routeur qui a des regles de routage.
    un exemple simple, VNC se co sur le port 1000 (on va dire), je dois dire à mon routeur de rebalancer les paquets du port 1000vers le pc1 où VNC ecoutera sur le port 1000.
    le pc2 ecoutera lui sur le port 1000 aussi mais au niveau du routeur, je me connecterai au port 1001 et le routeur renverra les paquets du port 1001 vers le port 1000 du pc2.
    j'imagine que c'est pas très clair, mais on peut tout faire avec un routeur et si c'est bien fait, la seule manipulation à faire se faire au niveau du routeur et du routeur uniquement.

  12. #12
    Membre éclairé Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Points : 823
    Points
    823
    Par défaut
    Et pour ce qui est dans l'autre sens, cad du réseau local vers internet, en général, tous les ports sont ouverts par défaut sur les box.

    C'est ce que l'on fait la plupart du temps sur tous les firewall's pour se simplifier la vie car c'est nettement plus compliquer de savoir quels sont les ports à ouvrir dans se sens la.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'avais fini par comprendre tout ça.
    Merci pour ces infos, maintenant je suis fraiment fixé. Je vais faire des petits tutaux pour les utilisateurs qui ne connaissent rien aux configuration des routeurs (comme moi il n'y a pas si longtemps) et le problème sera réglé.

Discussions similaires

  1. [Système] Savoir qui est connecté en ce moment
    Par sourivore dans le forum Langage
    Réponses: 13
    Dernier message: 12/06/2006, 17h05
  2. comment savoir qui est connecté sur les db
    Par zoltix dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/05/2006, 16h35
  3. W2000 serveur Comment trouver qui est connecté ?
    Par Mariussy dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 06/12/2005, 14h06
  4. Savoir qui est connecté
    Par Mat5725 dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2005, 13h06
  5. Global.asa : Qui est connecté
    Par eowene dans le forum ASP
    Réponses: 14
    Dernier message: 02/02/2005, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo