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
- O sistema de interconexão[s] usado para comunicação entre processos (C.E.P.)[t] no roteador sem fio aberto[u][1]
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
- ↑ a b c d e f g h i j k l m do inglês T.L.V. – type/tag-length-value
- ↑ a b do inglês X.M.L. – extensible markup language
- ↑ do inglês T.L.S. – transport layer security
- ↑ do inglês S.S.L. – secure sockets layer
- ↑ do inglês S.Sh. – secure shell
- ↑ do inglês C.O.P.S. – common open policy service
- ↑ di inglês I.S.-I.S., I.S.I.S. – intermediate system to intermediate system
- ↑ do inglês R.A.D.I.U.S. – remote authentication dial-in user service
- ↑ a b do inglês L.L.D.P. – link layer discovery protocol
- ↑ do inglês M.R.P. – media redundancy protocol
- ↑ do inglês D.H.C.P. – dynamic host configuration protocol
- ↑ do inglês R.R. – radio resource
- ↑ do inglês G.S.M. – global system for mobile communications
- ↑ do inglês 3.G.P.P. – 3rd generation partnership project
- ↑ do inglês I.F.F. – interchange file format
- ↑ do inglês QT.F.F. – QuickTime file format
- ↑ do inglês M.P.E.G.-4 – moving picture experts group
- ↑ 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.
- ↑ do inglês I.P.C . – inter-process communication ou interprocess communication
- ↑ do inglês Open W.Rt. – open wireless router
- ↑ do inglês I.P. – Internet protocol
- ↑ do inglês T.C.P. – transmission control protocol
- ↑ do inglês U.D.P. – user datagram protocol
- ↑ a b do inglês Ht.T.P. - hypertext transfer protocol
- ↑ do inglês F.T.P. – file transfer protocol
- ↑ do inglês S.M.T.P. – simple mail transfer protocol
- ↑ do inglês P.O.P.3 – post office protocol 3
- ↑ do inglês S.I.P. – session initiation protocol
- ↑ do inglês R.F.C. – request for comments
- ↑ do inglês A.S.N.1 – abstract syntax notation one
- ↑ do inglês B.E.R. – basic encoding rules
- ↑ do inglês D.E.R. – distinguished encoding rules
- ↑ do inglês P.E.R. – packed encoding rules
- ↑ do inglês X.E.R. – X.M.L. encoding rules
- ↑ do inglês C.S.N.1 concrete syntax notation one
- ↑ do inglês B.E.E.P. – blocks extensible exchange protocol
- ↑ do inglês K.L.V. – key-length-value
Referências
- ↑ «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.