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

Réseau C Discussion :

[UDP] Serveur fixe port client


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut [UDP] Serveur fixe port client
    Bonjour a tous,

    J'utilise un équipement externe avec lequel je communique en UDP.
    C'est le serveur, je l'attaque sur l'IP/Port que me fournissent le fabriquant.

    Ce qui m'étonne, c'est que cet équipement répond sur un port que eux ont fixé.

    Le serveur ne doit il pas récupérer ces infos justement après avoir reçu un premier message venant de moi ? (client)

    Si c'est normal que dois je faire ? Un bind coté client ?

    Merci d'avance,
    Bonne fin de journée
    Guitou

  2. #2
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Citation Envoyé par sone47 Voir le message
    Le serveur ne doit il pas récupérer ces infos justement après avoir reçu un premier message venant de moi ? (client)
    Non.

    Cà, c'est le principe du ftp en mode passif (même si c'est quand même le serveur qui choisit le port). Un serveur UDP, c'est la même chose qu'un serveur TCP, sauf qu'il n'y a pas de contrôle du bon déroulement de la communication (qui nécessite plus de données échangées). Sinon les machines seraient condamnées à n'utiliser qu'un seul serveur UDP. Si deux serveur UDP tournaint sur ta machine comment ferait-elle pour savoir à

    De plus, le bind sert justement à réserver et relier une addresse et un numéro de port. Il ne sert donc que dans le cas où tu codes un serveur vu que le client se fiche du numéro de port utilisé. Pour le client, tu dois simplement faire un dans ton shell

    P.S. : Attention à bien demander un SOCK_DGRAM au lieu d'un SOCK_STREAM lorsque tu crées ta socket.

    Cordialement.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Citation Envoyé par baccali Voir le message
    De plus, le bind sert justement à réserver et relier une addresse et un numéro de port. Il ne sert donc que dans le cas où tu codes un serveur vu que le client se fiche du numéro de port utilisé.
    Cordialement.
    Justement c'est ca que je ne saisis pas dans leur protocole:
    La le serveur me dit que pour l'attaquer je dois utiliser un port X (ok),
    et que lui me répond sur MON port Y, du coup il reçoit bien mes données, mais moi je ne reçoit pas ses réponses (car je n'ai pas le contrôle de mon port Y).

    Le connect est facultatif, il m'évite juste de renseigner l'adresse dest à chaque sendto.

    C'est ce qui me semble bizarre dans leur protocole, comme si je devais utiliser une socket cliente pour attaquer leur serveur, et créer une seconde socket serveur ou j'écoute le port Y que eux ont choisi pour réceptionner leurs données..

  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Par défaut
    Bonjour,

    Je m'excuse je n'avais pas bien saisit la problématique. Quelqu'un complètera sûrement ma réponse si ce n'est pas assez clair mais on dirait qu'ils utilisent un protocole similaire justement au FTP en mode passif avec un port pour les données déjà fixé.

    En gros si j'ai bien compris, il te suffit de faire un bind sur le port Y avant de contacter le serveur et je suppose que lorsque tu envoies des requêtes par X, tu récupères les données par Y.


    Donc tu fais un bind sur <tonAddresseIP>:Y, tu envoies une requête sur <IPServeur>:X, puis tu attends et lis le résultat sur <tonAddresseIP>:Y. Le tout sur le même thread. Est ce plus clair?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Bonjour,

    Oui c'est ce que j'ai fais hier, un bind de ma socket sur mon port Y et c'est OK.

    Par contre je ne comprend pas la façon dont ils ont pensé leur protocole:
    Hier en bindant ma socket sur Y mon premier envoi était reçu par leur équipement, je recevais ensuite leur réponse, puis tout mes autres envois étaient perdus.

    C'est en utilisant wireshark que j'ai remarqué que leur équipement écoute sur le port X mais renvoie les données à partir d'un port Z!
    Du coup coté client quand je faisais un recvfrom mon sockaddr était mis a jour avec ce port Z et tout mes envois n'étaient plus interprétés (il n'interprete que ce qu'il reçoit sur X).

    Au final je dois donc utiliser deux sockaddr, un pour l'envoi et un pour la reception.

    Mais je ne comprend pas pourquoi ils utilisent 2 port différents pour l'envoi/reception... Et pourquoi ils m'obligent à binder ma sock sur un port que eux choisissent, heureusement qu'il était libre sinon j'étais marron...

    Si quelqu'un avait une explication sur cette gestion ça serait cool, car j'ai jamais vu ça copme principe.

    En tout cas merci pour ton aide!

    Bonne journée
    Guitou

Discussions similaires

  1. Partage de ports clients / serveur
    Par David-InfoStyle dans le forum Matériel
    Réponses: 1
    Dernier message: 02/07/2013, 09h28
  2. SFML 2.0 - Protocole UDP d'un serveur distant à un client
    Par victor_gasgas dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 06/12/2011, 23h10
  3. fonction "htons" port client ou serveur
    Par koukou11 dans le forum Développement
    Réponses: 1
    Dernier message: 04/03/2011, 08h10
  4. Fixer Numero de port Client/Serveur
    Par mxh77 dans le forum 4D
    Réponses: 1
    Dernier message: 11/06/2007, 15h21
  5. [C#] Client/serveur avec port série
    Par cyllix dans le forum Windows Forms
    Réponses: 13
    Dernier message: 21/08/2006, 09h56

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