Tipo-comprimento-valor

Nos protocolos de comunicações, tipo/marcação-comprimento-valor (T./M.C.V.[a]) é um esquema de codificação usado para informações opcionais. Um fluxo de dados codificado em tipo/marcação-comprimento-valor (T./M.C.V.[a]) contém código relacionado ao tipo de registro, o comprimento do valor do registro e, finalmente, o próprio valor.

Detalhes

O tipo e o comprimento são fixos em tamanho (normalmente de 1 a 4 bytes) e o campo do valor é de tamanho variável. Esses campos são usados da seguinte maneira:

Tipo
Um código binário, simplesmente alfanumérico (geralmente), que indica o tipo de campo que esta parte da mensagem representa;
comprimento
o tamanho do campo de valor (normalmente em bytes) e
valor
séries de bytes de tamanhos variáveis que contêm dados para esta parte da mensagem.

Algumas vantagens de usar uma solução de sistemas de dados de representação tipo/marcação-comprimento-valor (T./M.C.V.[a]) são:

  • As sequências tipo/marcação-comprimento-valor (T./M.C.V.[a]) são facilmente pesquisadas usando funções de análise generalizadas;
  • os novos elementos da mensagem recebidos em um nó mais antigo podem ser ignorados com segurança e o restante da mensagem pode ser analisado. Isso é semelhante ao modo como as marcações [b] da linguagem de marcação extensível (L.M.X.)[c] desconhecidas podem ser ignoradas com segurança;
  • os elementos tipo/marcação-comprimento-valor (T./M.C.V.[a]) podem ser colocados em qualquer ordem dentro do corpo da mensagem e
  • os elementos tipo/marcação-comprimento-valor (T./M.C.V.[a]) são normalmente usados em formato binário e protocolos binários [en], o que torna a análise mais rápida e os dados menores do que em protocolos baseados em texto comparáveis.

Exemplos

Exemplos do mundo real

Protocolos de transporte

  • A segurança da camada de transporte (S.C.T.)[d] [en] (e seu antecessor a camada de soquetes seguros (C.S.S.[e]) usa mensagens codificadas por tipo/marcação-comprimento-valor (T./M.C.V.[a]).
  • '"Shell seguro (Sh.S.)[f]
  • Serviço de política aberta comum (S.P.A.C.)[g] [en]
  • Sistema intermediário para sistema intermediário (S.I.-S.I., também escrito S.I.S.I)[h] [en]
  • Serviço de autenticação remota de usuário de discagem (S.S.R.U.D)[i]
  • O protocolo de descoberta da camada de enlace (P.D.C.E.)[j] [en] permite o envio de informações específicas da organização como um elemento tipo/marcação-comprimento-valor (T./M.C.V.[a]) dentro de pacotes do protocolo de descoberta da camada de enlace (P.D.C.E.)[j].
  • O protocolo de redundância de mídia (P.R.M.)[k] [en] permite informações organizacionais específicas
  • O protocolo de configuração de host dinâmico (P.C.H.D.)[l] usa opções codificadas tipo/marcação-comprimento-valor (T./M.C.V.[a])
  • O protocolo de gerenciamento de recurso de rádio (R.R.)[m] usado em telefones celulares compatíveis com o sistema global para comunicações móveis (S.G.M.)[n] (definido no projeto de parceria de 3ª geração (P.P.3.G.[o]) 04.18). Neste protocolo cada mensagem é definida como uma sequência de elementos de informação.

Formatos de armazenamento de dados

  • O formato de arquivo de intercâmbio (F.A.I.[p]) [en]
  • O Matroska usa tipo/marcação-comprimento-valor (T./M.C.V.[a]) para marcações
  • O formato de arquivo de tempo rápido (F.A.T.R.[q]) [en] (a base para contêineres do grupo de especialistas em imagens em movimento 4 (G.E.I.M.-4[r]) [en]

Outro

Outros exemplos

Imagine uma mensagem para fazer uma ligação telefônica. Em uma primeira versão de um sistema, poderíamos usar dois elementos de mensagem: um "command" e um "phoneNumberToCall":

command_c/4/makeCall_c/phoneNumberToCall_c/8/"722-4246"

Aqui, command_c, makeCall_c e phoneNumberToCall_c são constantes inteiras e 4 e 8 são os comprimentos dos campos "valor", respectivamente.

Posteriormente (na versão 2), um novo campo contendo o número de chamada pode ser adicionado:

command_c/4/makeCall_c/callingNumber_c/14 /"1-613-715-9719"/phoneNumberToCall_c/8/"722-4246"

Um sistema da versão 1 que recebeu uma mensagem de um sistema da versão 2 primeiro leria o elemento command_c e, em seguida, leria um elemento do tipo callingNumber_c. O sistema da versão 1 não entende CallNumber_c, então o campo de comprimento é lido (ou seja, 14) e o sistema avança 14 bytes para ler

phoneNumberToCall_c

que ele entende, e a análise da mensagem continua.

Outras formas de representar dados

Os protocolos principais da suíte de protocolos de Internet (particularmente o protocolo de Internet (P.I.)[v], o protocolo de controle de transmissão (P.C.T.)[w] e o protocolo de datagrama do usuário (P.D.U.)[x] usam campos estáticos predefinidos.

Alguns protocolos da camada de aplicações TCP/IP, incluindo o protocolo de transferência de hipertexto (P.T.Ht.) 1.1[y] (e seus predecessores não padronizados), o protocolo de transferência de arquivos (P.T.A.)[z], o protocolo de transferência de correio simples (P.T.C.S.)[aa], protocolo de correios (P.C.)[ab] e protocolo de iniciação de sessão (P.I.S.)[ac] usam pares "campo: valor" baseados em texto formatados de acordo com a Solicitação de comentários (S.D.C.) 2822 (em inglês)[ad].O protocolo de transferência de hipertexto (P.T.Ht.)[y] representa o comprimento da carga útil com um cabeçalho de comprimento de conteúdo e separa os cabeçalhos da carga útil com uma linha vazia e os cabeçalhos uns dos outros com uma nova linha.

A notação de sintaxe abstrata um (N.S.A.1)[ae] especifica várias regras de codificação baseadas em tipo/marcação-comprimento-valor (T./M.C.V.[a]) (regras de codificação básica (R.C.B.)[af], regras de codificação distintas (R.C.D.)[ag], bem como aquelas não são baseadas em tipo/marcação-comprimento-valor (T./M.C.V.[a]) (regras de codificação empacotadas (R.C.E.)[ah], regras de codificação da L.M.X. (R.C.L.)[ai].

A notação de sintaxe concreta um (N.S.C.1)[aj] [en] descreve regras de codificação usando semântica que não é tipo/marcação-comprimento-valor (T./M.C.V.[a]).

Mais recentemente, a linguagem de marcação extensível (L.M.X.)[c] foi usada para implementar mensagens entre nós diferentes em uma rede. Essas mensagens são normalmente prefixadas com comandos de texto baseados em linha, como com o protocolo de troca de blocos extensível (P.T.B.E.[ak]) [en].

Ver também

  • Chave-comprimento-valor (C.C.V.[al]) [en] – tipo específico de codificação tipo-comprimento-valor.

Notas

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 do inglês T.L.V. – type/tag-length-value
  2. ↑ do inglês tags
  3. 1 2 do inglês X.M.L. – extensible markup language
  4. ↑ do inglês T.L.S. – transport layer security
  5. ↑ do inglês S.S.L. – secure sockets layer
  6. ↑ do inglês S.Sh. – secure shell
  7. ↑ do inglês C.O.P.S. – common open policy service
  8. ↑ di inglês I.S.-I.S., I.S.I.S. – intermediate system to intermediate system
  9. ↑ do inglês R.A.D.I.U.S. – remote authentication dial-in user service
  10. 1 2 do inglês L.L.D.P. – link layer discovery protocol
  11. ↑ do inglês M.R.P. – media redundancy protocol
  12. ↑ do inglês D.H.C.P. – dynamic host configuration protocol
  13. ↑ do inglês R.R. – radio resource
  14. ↑ do inglês G.S.M. – global system for mobile communications
  15. ↑ do inglês 3.G.P.P. – 3rd generation partnership project
  16. ↑ do inglês I.F.F. – interchange file format
  17. ↑ do inglês QT.F.F. – QuickTime file format
  18. ↑ do inglês M.P.E.G.-4 – moving picture experts group
  19. ↑ ubus – o sistema de interconexão usado pela maioria dos serviços executados em uma configuração do roteador sem fio aberto (Open W.Rt.). Os serviços podem se conectar ao barramento e fornecer métodos que podem ser chamados por outros serviços ou clientes.
  20. ↑ do inglês I.P.C . – inter-process communication ou interprocess communication
  21. ↑ do inglês Open W.Rt. – open wireless router
  22. ↑ do inglês I.P. – Internet protocol
  23. ↑ do inglês T.C.P. – transmission control protocol
  24. ↑ do inglês U.D.P. – user datagram protocol
  25. 1 2 do inglês Ht.T.P. - hypertext transfer protocol
  26. ↑ do inglês F.T.P. – file transfer protocol
  27. ↑ do inglês S.M.T.P. – simple mail transfer protocol
  28. ↑ do inglês P.O.P.3 – post office protocol 3
  29. ↑ do inglês S.I.P. – session initiation protocol
  30. ↑ do inglês R.F.C. – request for comments
  31. ↑ do inglês A.S.N.1 – abstract syntax notation one
  32. ↑ do inglês B.E.R. – basic encoding rules
  33. ↑ do inglês D.E.R. – distinguished encoding rules
  34. ↑ do inglês P.E.R. – packed encoding rules
  35. ↑ do inglês X.E.R. – X.M.L. encoding rules
  36. ↑ do inglês C.S.N.1 concrete syntax notation one
  37. ↑ do inglês B.E.E.P. – blocks extensible exchange protocol
  38. ↑ do inglês K.L.V. – key-length-value

Referências

  1. ↑ «Open W.rt. documentation on ubus». openwrt.org (em inglês). 15 de abril de 2022. Consultado em 15 de abril de 2022

Ligações externas

  • tlve (em inglês), um analisador tipo/marcação-comprimento-valor (T./M.C.V.) comum.