alguém tem uma boa definição do que é um protocolo binário? e o que é um protocolo de texto na verdade? como eles se comparam entre si em termos de bits enviados na transmissão?
aqui está o que a wikipedia diz sobre protocolos binários:
Um protocolo binário é um protocolo que se destina ou se espera que seja lido por uma máquina em vez de por um ser humano ( http://en.wikipedia.org/wiki/Binary_protocol )
Oh vamos lá!
para ser mais claro, se eu tiver um arquivo jpg como ele seria enviado através de um protocolo binário e como através de um texto? em termos de bits / bytes enviados no fio, é claro.
no final do dia, se você olhar para uma string, ela é um array de bytes, então a distinção entre os 2 protocolos deve estar em quais dados reais estão sendo enviados na transmissão. em outras palavras, em como os dados iniciais (arquivo jpg) são codificados antes de serem enviados.
Respostas:
O protocolo binário versus protocolo de texto não trata realmente de como os blobs binários são codificados. A diferença é realmente se o protocolo é orientado em torno de estruturas de dados ou de strings de texto. Deixe-me dar um exemplo: HTTP. HTTP é um protocolo de texto, embora, ao enviar uma imagem jpeg, ele apenas envie os bytes brutos, não uma codificação de texto deles.
Mas o que torna o HTTP um protocolo de texto é que a troca para obter o jpg se parece com isto:
Solicitação:
Resposta:
Observe que isso poderia facilmente ter sido compactado de forma muito mais compacta em uma estrutura que se pareceria (em C) com algo como
Solicitação:
Resposta:
Onde os nomes de campo não precisariam ser transmitidos de forma alguma e onde, por exemplo, o
responseType
na estrutura de resposta é um int com o valor 200 em vez de três caracteres '2' '0' '0'. Isso é o que um protocolo baseado em texto é: aquele que é projetado para ser comunicado como um fluxo plano de linhas de texto (geralmente legíveis), em vez de dados estruturados de muitos tipos diferentes.fonte
Aqui está uma espécie de definição de fuga:
Este é um daqueles casos em que é muito difícil encontrar uma definição concisa que abranja todos os casos extremos. Mas também é um daqueles casos em que os casos secundários são completamente irrelevantes, porque simplesmente não ocorrem na vida real.
Quase todos os protocolos que você encontrará na vida real serão semelhantes a este:
[Imagine uma tonelada de outras porcarias não imprimíveis ali. Um dos desafios em transmitir a diferença entre texto e binário é que você tem que fazer a transmissão em texto :-)]
Ou assim:
[Acabei de inventar isso na hora.]
Simplesmente não há muita ambigüidade aí.
Outra definição que tenho ouvido algumas vezes é
Talvez eu esteja mostrando minha nerdice aqui, mas na verdade eu tenho escrito e lido e-mails via SMTP e POP3, lido artigos da Usenet via NNTP e visto páginas da web via HTTP usando
telnet
, por nenhuma outra razão a não ser para ver se realmente funcionaria.Na verdade, enquanto escrevia isso, meio que peguei a febre novamente:
Droga, já faz um bom tempo que não faço isso. Alguns erros aí :-)
fonte
Exemplos de protocolos binários: RTP , TCP , IP .
Exemplos de protocolos de texto: SMTP , HTTP , SIP .
Isso deve permitir que você generalize para uma definição razoável de protocolos binários versus de texto.
Dica: basta pular para as seções de exemplo ou os diagramas. Eles servem para ilustrar a resposta de balanço de Tyler .
fonte
Como muitos de vocês sugeriram, não podemos diferenciar se o protocolo é binário ou texto simplesmente olhando para o conteúdo na transmissão
AFIK
Protocolo binário - Bits são limites A ordem é muito crítica
Por exemplo, RTP
Os primeiros dois bits são a versão O próximo bit é o bit de marcação
Protocolo de texto - Delimitadores específicos para protocolo A ordem dos campos não é importante
Por exemplo, SIP
Outra é, no protocolo binário, podemos dividir um byte, ou seja, um único bit pode ter um significado individual específico; Enquanto em um protocolo de texto, a unidade mínima significativa é BYTE. Você não pode dividir um byte.
fonte
Ambos usam conjuntos de caracteres diferentes, o texto um, usa um conjunto de caracteres reduzido, o binário inclui tudo o que pode, não apenas "letras" e "números", (é por isso que a wikipedia diz "ser humano")
você deve ler este Base64
Acho que a essência para estreitar o conjunto de caracteres é estreitar a complexidade e alcançar portabilidade, compatibilidade. É mais difícil combinar e concordar com muitos para respeitar um conjunto de caracteres Wide (ou qualquer outro). O alfabeto latino / romano e os algarismos arábicos são conhecidos mundialmente. (Existem, é claro, outras considerações para reduzir o código, mas essa é a principal)
Digamos que em protocolos binários o "contrato" entre as partes seja sobre bits, primeiro bit significa isso, segundo aquele, etc. ou mesmo bytes (mas com a liberdade de usar o conjunto de caracteres sem pensar em portabilidade) por exemplo em sistema fechado privado ou (próximo aos padrões de hardware), no entanto, se você projetar um sistema aberto, terá que levar em consideração como seus códigos serão representados em um amplo conjunto de situações, por exemplo, como serão representados em uma máquina do outro lado do mundo? aqui vêm os protocolos de texto onde o contrato será o mais normal possível. Eu projetei os dois motivos, binários para soluções muito customizadas e texto para sistemas abertos e / ou portáteis.
fonte
Como podemos enviar um arquivo de imagem em SOAP: Clique aqui
Isso mostra que os dados binários são anexados como tal [ANEXO] e sua referência é salva na mensagem SOAP.
Portanto, o protocolo é baseado em texto e os dados [Imagem] são anexos binários cuja codificação não é relevante
Portanto, o SOAP é um protocolo de texto devido à maneira como especificamos os cabeçalhos do Soap e não os dados reais codificados nele.
fonte
Eu acho que você entendeu errado. Não é o protocolo que determina como os dados aparecem no "fio", mas é o tipo de dados que determina qual protocolo usar para transmiti-los. Pegue o soquete tcp por exemplo, um arquivo jpeg será enviado e recebido com um protocolo binário porque seus dados binários (não legíveis por humanos, bytes que vão entre o intervalo 32-126 ASCII), mas você pode enviar / receber um arquivo de texto com ambos os protocolos e você não notaria a diferença.
fonte
O protocolo de texto pode ser autoexplicativo e extenso. É autoexplicativo porque a mensagem inclui os nomes dos campos apenas na própria mensagem. Você não pode entender qual valor significa na mensagem do protocolo binário se não consultar a especificação do protocolo.
É extenso significa que HTTP como um protocolo de texto apenas cria regras simples, mas você pode estender a estrutura de dados adicionando livremente novos cabeçalhos ou alterando o tipo de conteúdo para transportar diferentes cargas úteis. E os cabeçalhos são os metadados e têm a capacidade de negociação e adaptação automática.
fonte