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 :

créer son propre protocole


Sujet :

Développement

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut créer son propre protocole
    Bonjour,

    J'aimerais faire transiter des données (chiffres et caractères) sur un réseau et opterais pour TCP plutôt qu'UDP: je voudrais des processus d'acquittement.
    Pourriez-vous m'aider quant à un protocole adapté à mon besoin? FTP...?
    Ou bien dois-je créer mon propre protocole? => Comment faire d'ailleurs?
    Merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut
    Désolé, je ne sais pas comment créer son propre protocole (ça ne doit pas être si facile).
    Par contre, le protocole FTP assure une réponse quand tu envois un fichier donc tu peux vérifier si tout s'est bien passé ou pas.
    J'opterai donc pour le protocole FTP pour échanger des fichiers.

    Nas'

  3. #3
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Si tu utilises TCP c'est déjà pas mal !

    TCP assure que le contenu est bien arrivé, qu'il n'y a pas de doublon et que les données sont préservées !

    Bon ok le checksum ce n’est pas le meilleur au monde !

    Mais tu peux faire un protocole "FTP bis" basé sur TCP comme FTP qui est basé sur TCP !

    Mais point besoin de faire un protocole si tu veux juste envoyé des messages très courts. Des sockets en TCP/IP et voila le tour est joué

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    J'aimerais réaliser une appli client/serveur ac un simple jeu de commandes-réponses (en ascii) entre les 2 protagonistes.
    Je ve m'appuyer sur du TCP donc je voulais savoir quels protocoles applicatifs seraient en mesure d'aller. Je pensais éventuellement à du FTP en ne me servant que du canal de contrôle et non celui des données.
    Pourriez-vous me conseiller?
    Merci d'avance

  5. #5
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Si je ne dis pas trop de bêtise, le protocole FTP est juste une encapsulation des données de TCP.

    Donc en t'appuyant sur TCP, tu peux toi aussi faire un protocole d'encapsulation des données. C'est assez simple.

    Par exemple tu peux réserver le premier octet comme étant le message qui défini le type de message reçu.


    ex: Tu peux spécifier le premier octet qui indiquera le type de contenu ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    0 -> ping like
    1 -> msg
    2 -> raw data
    3 -> msg server
    4 -> msg global
    ...
    
    // Définition des données de tcp
    //1octects | (taille du paquet -1)
    x | raw data

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Salut,

    Juste poru ajouter ma pierre à l'édifice, en ce qui concerne la création de ton protocole.
    je crains que cela ne soit très complexe à mettre en oeuvre.

    En revanche, UDP ets là pour ca : UDP n'intègre (quasiment) aucune fonctionnalités, afin que tu puisses les définir à ta guise. Tu peux ainsi introduire une vérification plus poussée qu'en TCP, ou moins, faireun protocole crypté, ... Tout ce que tu souhaites est implémentable
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Citation Envoyé par gangsoleil
    Salut,

    Juste poru ajouter ma pierre à l'édifice, en ce qui concerne la création de ton protocole.
    je crains que cela ne soit très complexe à mettre en oeuvre.

    En revanche, UDP ets là pour ca : UDP n'intègre (quasiment) aucune fonctionnalités, afin que tu puisses les définir à ta guise. Tu peux ainsi introduire une vérification plus poussée qu'en TCP, ou moins, faireun protocole crypté, ... Tout ce que tu souhaites est implémentable
    UDP est moins bien dans beaucoup de cas par rapport à TCP.

    En TCP aussi tu peux crypter tes données...
    Tu peux aussi introduire une vérification + poussé des données...

    UDP introduit des difficultés.
    Non gestion des doublons.
    Il n'assure pas que le paquet soit bien transmit.
    UDP est non connecté et on doit envoyer un message de réception pour être sur de l'arrivé du paquet.

    TCP est un protocole connecté, qui est plus lent que UDP car il va envoyer plusieurs messages avant l'envoie des données et vérifier que cela c'est bien passé.

    En gros TCP est une surcouche à UDP gérant toutes les difficultés.

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    C'est bien ce que j'essayait de dire :

    UDP ne gère rien, mais te permet de TOUT gérer (mais il faut le faire à la main)
    TCP gère de nombreuses choses, mais du coup t'en impose de nombreuses.

    Exemple bète : le streaming.
    TCP est une cochonnerie pour faire du streaming, de par la gestion qu'il a des paquets (vérification de la présence de TOUS les paquets, donc pas possible de "sauter" un paquet pour continuer à avoir un flux synchronisé).
    UDP en revanche te permettra d'implémenter ce que tu veux, avec par exemple suppression des doublons mais pas de vérification.

    (Enfin cet exemple est bète car il vaut mieux utiliser RTP et RTCP, qui sont de protocoles dédiés à ce genre de ttransferts, mais là n'était pas la question )

    C'est mieux expliqué comme ca ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Ti-R
    Si je ne dis pas trop de bêtise, le protocole FTP est juste une encapsulation des données de TCP.

    Donc en t'appuyant sur TCP, tu peux toi aussi faire un protocole d'encapsulation des données. C'est assez simple.

    Par exemple tu peux réserver le premier octet comme étant le message qui défini le type de message reçu.


    ex: Tu peux spécifier le premier octet qui indiquera le type de contenu ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    0 -> ping like
    1 -> msg
    2 -> raw data
    3 -> msg server
    4 -> msg global
    ...
    
    // Définition des données de tcp
    //1octects | (taille du paquet -1)
    x | raw data
    J'aimerais avoir un exemple. Paske en vérité je vois pas comment avoir accès directement à un paquet. Je pensais que ça se faisait via la commande send() mais jdois me tromper.

  10. #10
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Citation Envoyé par gangsoleil
    C'est bien ce que j'essayait de dire :

    UDP ne gère rien, mais te permet de TOUT gérer (mais il faut le faire à la main)
    TCP gère de nombreuses choses, mais du coup t'en impose de nombreuses.

    Exemple bète : le streaming.
    TCP est une cochonnerie pour faire du streaming, de par la gestion qu'il a des paquets (vérification de la présence de TOUS les paquets, donc pas possible de "sauter" un paquet pour continuer à avoir un flux synchronisé).
    UDP en revanche te permettra d'implémenter ce que tu veux, avec par exemple suppression des doublons mais pas de vérification.

    (Enfin cet exemple est bète car il vaut mieux utiliser RTP et RTCP, qui sont de protocoles dédiés à ce genre de ttransferts, mais là n'était pas la question )

    C'est mieux expliqué comme ca ?
    UDP est effectivement utilisé dans le streaming et pour les jeux principalement. Mais pas pour le transfert de données ou très peu...
    Même si des protocoles comme FTP on été réécrit avec UDP

  11. #11
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Oui c'est la version send()

    http://c.developpez.com/WalrusSock/

    Et tu dois envoyer un tableau de données. (une chaîne de caractères)

    Donc au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define SEND_DATA "Hello world!"
    send(sock, SEND_DATA, strlen(SEND_DATA), 0);
    tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define SEND_DATA "1Hello world!"
    send(sock, SEND_DATA, strlen(SEND_DATA), 0);
    Voila tu as envoyé un message
    Suivant le protocole très rapidement défini si dessous faisant office d'exemple, ceci est considéré comme un message

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Ti-R
    Oui c'est la version send()

    http://c.developpez.com/WalrusSock/

    Et tu dois envoyer un tableau de données. (une chaîne de caractères)

    Donc au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define SEND_DATA "Hello world!"
    send(sock, SEND_DATA, strlen(SEND_DATA), 0);
    tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #define SEND_DATA "1Hello world!"
    send(sock, SEND_DATA, strlen(SEND_DATA), 0);
    Voila tu as envoyé un message
    Suivant le protocole très rapidement défini si dessous faisant office d'exemple, ceci est considéré comme un message
    Merci bcp pour ton aide en tt k

Discussions similaires

  1. Créer son propre système de fichiers
    Par L'immortel dans le forum Programmation d'OS
    Réponses: 15
    Dernier message: 15/12/2013, 22h16
  2. Créer son propre driver
    Par Fy_Hertz dans le forum C++
    Réponses: 2
    Dernier message: 13/01/2006, 07h53
  3. Créer son propre MessageDlg
    Par snoop94 dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2005, 18h14
  4. Créer son propre éditeur pour un descendant de tpopupmenu
    Par sfpx dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/10/2005, 12h21
  5. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 16h15

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