131 votes

protocoles binaires et protocoles textuels

Quelqu'un a-t-il une bonne définition de ce qu'est un protocole binaire ? et qu'est-ce qu'un protocole textuel ? comment ces protocoles se comparent-ils les uns aux autres en termes de bits envoyés sur le fil ?

Voici ce que dit Wikipédia sur les protocoles binaires :

Un protocole binaire est un protocole destiné à être lu par une machine plutôt que par un être humain ( http://en.wikipedia.org/wiki/Binary_protocol )

oh allez !

Pour être plus clair, si j'ai un fichier jpg, comment serait-il envoyé par un protocole binaire et comment par un protocole textuel ? en termes de bits/octets envoyés sur le fil, bien sûr.

en fin de compte, si vous regardez une chaîne de caractères, il s'agit elle-même d'un tableau d'octets, de sorte que la distinction entre les deux protocoles devrait reposer sur les données réelles qui sont envoyées sur le fil. en d'autres termes, sur la façon dont les données initiales (fichier jpg) sont encodées avant d'être envoyées.

1voto

Andy T Points 8016

J'ai trouvé par hasard cette ancienne question et j'ai décidé d'y ajouter mon opinion, au moins pour la vérifier.

La plupart des réponses expliquent en quoi les protocoles textuels et binaires sont différents du point de vue de la machine. Du point de vue humain, un protocole textuel est un protocole lisible/éditable par l'homme (un homme peut lire et écrire des paquets sans décodeur/encodeur). Cela présente au moins deux avantages : un débogage et une maintenance simplifiés de l'implémentation du protocole texte et la possibilité de le tester à l'aide d'outils simples et universels tels que telnet.

Autre petit avantage : les protocoles textuels sont considérés comme plus fiables, car (je suppose) il est impossible ou simplement difficile d'utiliser une faille dans l'implémentation du protocole pour exécuter un code malveillant, par exemple en exploitant un débordement de mémoire tampon. Il s'agit d'un petit avantage, car les protocoles binaires peuvent obtenir le même résultat grâce à l'encodage base64.

Les protocoles textuels présentent également certains inconvénients :

  • Les protocoles textuels sont généralement plus difficiles à mettre en œuvre. que les protocoles binaires, en raison de l'analyseur syntaxique.
  • Les protocoles binaires consomment moins de bande passante

J'essaie de compiler quelques recommandations finales à partir de cela :

Concevoir un protocole comme un texte quand :

  • Il s'agit d'un protocole de contrôle qui peut être traité comme une série de commandes ou d'instructions. demandes/réponses ((interactif). Du point de vue de la mise en œuvre, il peut être implémenté comme une machine à états finis. Prenons l'exemple de la diffusion multimédia en continu : RTSP - un protocole de contrôle, qui utilise une machine à états finis et consiste en des demandes/réponses - est un protocole textuel, alors que RTP est un protocole binaire parce qu'il transporte principalement des données binaires naturelles, comme les flux multimédias.
  • Il est destiné à une utilisation massive : par un grand nombre de personnes, d'implémentations ou d'applications ; il est donc très important de simplifier le débogage et la maintenance.

.

1voto

Karan Kaw Points 11

Comment envoyer un fichier image en SOAP : Cliquez ici

Cela montre que les données binaires sont jointes en tant que telles [ATTACHMENT] et que leur référence est enregistrée dans le message SOAP.

Le protocole est donc basé sur du texte et les données [Image] sont des pièces jointes binaires dont le codage n'est pas pertinent.

Ainsi, SOAP est un protocole textuel en raison de la façon dont nous spécifions les en-têtes de Soap et non les données réelles encodées.

1voto

Chao Points 758

Le protocole de texte peut être explicite et étendu. Il est explicite parce que le message inclut les noms des champs dans le message lui-même. Vous ne pouvez pas comprendre la signification d'une valeur dans le message d'un protocole binaire si vous ne vous référez pas à la spécification du protocole.

Il s'agit d'un protocole textuel qui se contente d'établir des règles simples, mais il est possible d'étendre la structure des données en ajoutant librement de nouveaux en-têtes ou en modifiant le type de contenu afin de transporter des charges utiles différentes. Les en-têtes sont les métadonnées et ont la capacité de négocier et de s'adapter automatiquement.

1voto

Deng_Ran Points 11

Si le simple fait de regarder le concept ne permet pas d'atteindre l'objectif, permettez-moi de vous donner un exemple pratique. Lorsqu'il est question d'échange de données, on parle toujours de données structurées, de données non structurées et de données semi-structurées. Les données binaires que vous avez mentionnées sont en fait des données non structurées, et les données ne peuvent pas se décrire elles-mêmes ; les données textuelles sont généralement des données au format JSON, également appelées données semi-structurées, qui peuvent se décrire elles-mêmes dans une certaine mesure, au moins en connaissant le nom et la valeur des données.

Le champ Web utilise généralement le format JSON pour échanger des données. GSON et FastJson peuvent convertir du texte au format JSON en objets de données Java. Le domaine de l'internet des objets utilise généralement le format binaire. Si vous adoptez un protocole binaire personnalisé, vous pouvez envisager l'utilisation de FastProto ( https://github.com/indunet/fastproto ) pour décoder et encoder.

0voto

Je pense que vous vous êtes trompé. Ce n'est pas le protocole qui détermine l'aspect des données sur le "fil", mais c'est le type de données qui détermine le protocole à utiliser pour les transmettre. Prenons l'exemple du socket tcp, un fichier jpeg sera envoyé et reçu avec un protocole binaire parce qu'il s'agit de données binaires (non lisibles par l'homme, octets compris dans la plage 32-126 ascii), mais vous pouvez envoyer / recevoir un fichier texte avec les deux protocoles et vous ne remarquerez pas la différence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X