Protocolo de comunicação - Communication protocol

Um protocolo de comunicação é um sistema de regras que permite que duas ou mais entidades de um sistema de comunicação transmitam informações por meio de qualquer tipo de variação de uma quantidade física . O protocolo define as regras, sintaxe , semântica e sincronização de comunicação e possíveis métodos de recuperação de erros . Os protocolos podem ser implementados por hardware , software ou uma combinação de ambos.

Os sistemas de comunicação usam formatos bem definidos para a troca de várias mensagens. Cada mensagem tem um significado exato com o objetivo de obter uma resposta de uma gama de respostas possíveis pré-determinadas para aquela situação particular. O comportamento especificado é geralmente independente de como deve ser implementado . Os protocolos de comunicação devem ser acordados pelas partes envolvidas. Para chegar a um acordo, um protocolo pode ser desenvolvido em um padrão técnico . Uma linguagem de programação descreve o mesmo para cálculos, portanto, há uma analogia próxima entre protocolos e linguagens de programação: os protocolos estão para a comunicação o que as linguagens de programação estão para os cálculos . Uma formulação alternativa afirma que os protocolos estão para a comunicação o que os algoritmos estão para a computação .

Vários protocolos geralmente descrevem diferentes aspectos de uma única comunicação. Um grupo de protocolos projetados para trabalhar juntos é conhecido como um conjunto de protocolos; quando implementados no software, eles são uma pilha de protocolo .

Os protocolos de comunicação da Internet são publicados pela Internet Engineering Task Force (IETF). O IEEE (Instituto de Engenheiros Elétricos e Eletrônicos) lida com redes com e sem fio e a Organização Internacional para Padronização (ISO) lida com outros tipos. O ITU-T lida com protocolos e formatos de telecomunicações para a rede telefônica pública comutada (PSTN). Conforme a PSTN e a Internet convergem , os padrões também estão sendo direcionados para a convergência.

Sistemas de comunicação

História

Um dos primeiros usos do termo protocolo em um contexto de comutação de dados ocorre em um memorando intitulado Um Protocolo para Uso na Rede de Comunicações de Dados NPL, escrito por Roger Scantlebury e Keith Bartlett em abril de 1967.

Na ARPANET , o ponto de partida para a comunicação host-a-host em 1969 foi o protocolo 1822 , que definiu a transmissão de mensagens para um IMP. O Programa de Controle de Rede para a ARPANET foi implementado pela primeira vez em 1970. A interface NCP permitiu que o software aplicativo se conectasse através da ARPANET implementando protocolos de comunicação de nível superior, um exemplo inicial do conceito de camadas de protocolo .

A pesquisa de rede no início dos anos 1970 por Robert E. Kahn e Vint Cerf levou à formulação do Programa de Controle de Transmissão (TCP). Sua especificação RFC  675 foi escrita por Cerf com Yogen Dalal e Carl Sunshine em dezembro de 1974, ainda um projeto monolítico na época.

O Grupo de Trabalho de Rede Internacional concordou com um padrão de datagrama sem conexão que foi apresentado ao CCIT em 1975, mas não foi adotado pela ITU ou pela ARPANET. Pesquisas internacionais, em particular o trabalho de Rémi Després , contribuíram para o desenvolvimento do padrão X.25 , baseado em circuitos virtuais pelo ITU-T em 1976. Os fabricantes de computadores desenvolveram protocolos proprietários como Systems Network Architecture (SNA) da IBM, Digital Equipment DECnet da Corporação e Sistemas de Rede Xerox .

O software TCP foi redesenhado como uma pilha de protocolo modular. Originalmente conhecido como IP / TCP , foi instalado na SATNET em 1982 e na ARPANET em janeiro de 1983. O desenvolvimento de um conjunto de protocolos completo em 1989, conforme descrito na RFC  1122 e na RFC  1123 , lançou as bases para o crescimento do TCP / IP como um conjunto de protocolos abrangente como o componente principal da Internet emergente .

Trabalhos internacionais em um modelo de referência para padrões de comunicação levaram ao modelo OSI , publicado em 1984. Por um período no final dos anos 1980 e início dos anos 1990, engenheiros, organizações e nações se tornaram polarizados sobre a questão de qual padrão , o modelo OSI ou a Internet conjunto de protocolos, resultaria nas melhores e mais robustas redes de computadores.

Conceito

As informações trocadas entre dispositivos por meio de uma rede ou outra mídia são regidas por regras e convenções que podem ser definidas nas especificações do protocolo de comunicação. A natureza da comunicação, os dados reais trocados e quaisquer comportamentos dependentes do estado , são definidos por essas especificações. Em sistemas de computação digital, as regras podem ser expressas por algoritmos e estruturas de dados . Os protocolos estão para a comunicação assim como os algoritmos ou linguagens de programação estão para os cálculos.

Os sistemas operacionais geralmente contêm um conjunto de processos cooperativos que manipulam dados compartilhados para se comunicarem uns com os outros. Essa comunicação é governada por protocolos bem conhecidos, que podem ser incorporados ao próprio código do processo. Em contraste, como não há memória compartilhada , os sistemas de comunicação precisam se comunicar uns com os outros usando um meio de transmissão compartilhado . A transmissão não é necessariamente confiável e os sistemas individuais podem usar hardware ou sistemas operacionais diferentes.

Para implementar um protocolo de rede, os módulos do software de protocolo são integrados a uma estrutura implementada no sistema operacional da máquina. Esta estrutura implementa a funcionalidade de rede do sistema operacional. Quando algoritmos de protocolo são expressos em uma linguagem de programação portátil, o software de protocolo pode ser independente do sistema operacional . Os frameworks mais conhecidos são o modelo TCP / IP e o modelo OSI .

Na época em que a Internet foi desenvolvida, as camadas de abstração provaram ser uma abordagem de projeto bem-sucedida para o projeto do compilador e do sistema operacional e, dadas as semelhanças entre as linguagens de programação e os protocolos de comunicação, os programas de rede originalmente monolíticos foram decompostos em protocolos cooperativos. Isso deu origem ao conceito de protocolos em camadas, que hoje em dia constituem a base do projeto de protocolo.

Os sistemas normalmente não usam um único protocolo para lidar com uma transmissão. Em vez disso, eles usam um conjunto de protocolos cooperativos, às vezes chamado de conjunto de protocolos . Alguns dos conjuntos de protocolos mais conhecidos são TCP / IP , IPX / SPX , X.25 , AX.25 e AppleTalk .

Os protocolos podem ser organizados com base na funcionalidade em grupos, por exemplo, existe um grupo de protocolos de transporte . As funcionalidades são mapeadas nas camadas, cada camada resolvendo uma classe distinta de problemas relacionados a, por exemplo: funções de aplicativo, transporte, internet e interface de rede. Para transmitir uma mensagem, um protocolo deve ser selecionado de cada camada. A seleção do próximo protocolo é realizada estendendo a mensagem com um seletor de protocolo para cada camada.

Tipos

Existem dois tipos de protocolos de comunicação, baseados em sua representação do conteúdo que está sendo transportado: baseado em texto e binário.

Baseado em texto

Um protocolo baseado em texto ou protocolo de texto simples representa seu conteúdo em formato legível por humanos , geralmente em texto simples.

A legibilidade humana imediata contrasta com os protocolos binários que possuem benefícios inerentes para uso em um ambiente de computador (como facilidade de análise mecânica e utilização de largura de banda aprimorada ).

Diferentes aplicativos de rede têm diferentes métodos de encapsulamento de dados. Um método muito comum com os protocolos da Internet é uma representação orientada a texto que transmite solicitações e respostas como linhas de texto ASCII , terminadas por um caractere de nova linha (e geralmente um caractere de retorno de carro). Exemplos de protocolos que usam texto simples e legível para seus comandos são FTP ( File Transfer Protocol ), SMTP ( Simple Mail Transfer Protocol ) e o protocolo finger .

Os protocolos baseados em texto são normalmente otimizados para análise e interpretação humanas e, portanto, são adequados sempre que a inspeção humana do conteúdo do protocolo for necessária, como durante a depuração e durante as fases iniciais de desenvolvimento do protocolo.

Binário

Um protocolo binário utiliza todos os valores de um byte , ao contrário de um protocolo baseado em texto que usa apenas valores correspondentes a caracteres legíveis por humanos na codificação ASCII . Os protocolos binários devem ser lidos por uma máquina, e não por um ser humano. Os protocolos binários têm a vantagem da concisão, que se traduz em velocidade de transmissão e interpretação.

Binários têm sido usados ​​em documentos normativos que descrevem padrões modernos como EbXML , HTTP / 2 , HTTP / 3 e EDOC . Uma interface em UML também pode ser considerada um protocolo binário.

Requisitos básicos

Transferir os dados pela rede é apenas parte do problema de um protocolo. Os dados recebidos devem ser avaliados no contexto do andamento da conversa, portanto, um protocolo deve incluir regras que descrevam o contexto. Diz-se que esse tipo de regra expressa a sintaxe da comunicação. Outras regras determinam se os dados são significativos para o contexto em que a troca ocorre. Diz-se que esse tipo de regra expressa a semântica da comunicação.

As mensagens são enviadas e recebidas em sistemas de comunicação para estabelecer a comunicação. Os protocolos devem, portanto, especificar as regras que regem a transmissão. Em geral, muito do seguinte deve ser abordado:

Formatos de dados para troca de dados
Bitstrings de mensagem digital são trocados. As bitstrings são divididas em campos e cada campo carrega informações relevantes para o protocolo. Conceitualmente, o bitstring é dividido em duas partes chamadas cabeçalho e carga útil . A mensagem real é transportada na carga útil. A área do cabeçalho contém os campos relevantes para a operação do protocolo. Bitstrings mais longos do que a unidade de transmissão máxima (MTU) são divididos em pedaços de tamanho apropriado.
Formatos de endereço para troca de dados
Os endereços são usados ​​para identificar o remetente e o (s) destinatário (s) pretendido (s). Os endereços são transportados na área do cabeçalho das bitstrings, permitindo que os receptores determinem se as bitstrings são de interesse e devem ser processadas ou devem ser ignoradas. Uma conexão entre um remetente e um receptor pode ser identificada usando um par de endereços (endereço do remetente, endereço do receptor) . Normalmente, alguns valores de endereço têm significados especiais. Um endereço all- 1 s pode significar um endereçamento de todas as estações na rede, portanto, o envio para esse endereço resultaria em uma transmissão na rede local. As regras que descrevem os significados do valor do endereço são chamadas coletivamente de esquema de endereçamento .
Mapeamento de endereço
Às vezes, os protocolos precisam mapear endereços de um esquema em endereços de outro esquema. Por exemplo, para converter um endereço IP lógico especificado pelo aplicativo em um endereço Ethernet MAC. Isso é conhecido como mapeamento de endereço .
Encaminhamento
Quando os sistemas não estão conectados diretamente, os sistemas intermediários ao longo da rota para os destinatários pretendidos precisam encaminhar mensagens em nome do remetente. Na Internet, as redes são conectadas por meio de roteadores. A interconexão de redes por meio de roteadores é chamada de internetworking .
Detecção de erros de transmissão
A detecção de erros é necessária em redes onde a corrupção de dados é possível. Em uma abordagem comum, um CRC da área de dados é adicionado ao final dos pacotes, possibilitando ao receptor detectar diferenças causadas por corrupção. O receptor rejeita os pacotes nas diferenças CRC e organiza de alguma forma a retransmissão.
Reconhecimentos
O reconhecimento da recepção correta de pacotes é necessário para a comunicação orientada à conexão . Os agradecimentos são enviados dos destinatários de volta aos seus respectivos remetentes.
Perda de informações - tempos limite e novas tentativas
Os pacotes podem ser perdidos na rede ou atrasados ​​em trânsito. Para lidar com isso, em alguns protocolos, um remetente pode esperar uma confirmação da recepção correta do receptor dentro de um determinado período de tempo. Assim, em tempos limite , o remetente pode precisar retransmitir as informações. No caso de um link interrompido permanentemente, a retransmissão não tem efeito, portanto, o número de retransmissões é limitado. Exceder o limite de tentativas é considerado um erro.
Direção do fluxo de informação
A direção precisa ser tratada se as transmissões só puderem ocorrer em uma direção por vez, como em links half-duplex, ou de um remetente por vez, como em um meio compartilhado . Isso é conhecido como controle de acesso à mídia . Devem ser tomadas providências para acomodar o caso de colisão ou contenção em que duas partes, respectivamente, transmitam ou desejem transmitir simultaneamente.
Controle de sequência
Se bitstrings longas forem divididas em partes e, em seguida, enviadas na rede individualmente, as partes podem se perder ou atrasar ou, em alguns tipos de redes, tomar rotas diferentes para seu destino. Como resultado, as peças podem chegar fora da sequência. As retransmissões podem resultar em peças duplicadas. Ao marcar as peças com informações de sequência no remetente, o receptor pode determinar o que foi perdido ou duplicado, solicitar as retransmissões necessárias e remontar a mensagem original.
Controle de fluxo
O controle de fluxo é necessário quando o emissor transmite mais rápido do que o receptor ou o equipamento de rede intermediário pode processar as transmissões. O controle de fluxo pode ser implementado por mensagens do receptor ao remetente.
Enfileiramento
Os processos de comunicação ou máquinas de estado empregam filas (ou "buffers"), geralmente filas FIFO, para lidar com as mensagens na ordem de envio e, às vezes, podem ter várias filas com priorizações diferentes

Projeto de protocolo

Os princípios da engenharia de sistemas foram aplicados para criar um conjunto de princípios de design de protocolo de rede comuns. O projeto de protocolos complexos freqüentemente envolve a decomposição em protocolos mais simples e cooperativos. Esse conjunto de protocolos cooperativos às vezes é chamado de família de protocolos ou conjunto de protocolos, dentro de uma estrutura conceitual.

Os sistemas de comunicação operam simultaneamente. Um aspecto importante da programação simultânea é a sincronização do software para receber e transmitir mensagens de comunicação em um sequenciamento adequado. A programação simultânea tem sido tradicionalmente um tópico em textos de teoria de sistemas operacionais. A verificação formal parece indispensável porque os programas concorrentes são notórios pelos bugs ocultos e sofisticados que contêm. Uma abordagem matemática para o estudo de simultaneidade e comunicação é chamada de processos sequenciais de comunicação (CSP). A simultaneidade também pode ser modelada usando máquinas de estado finito , como as máquinas Mealy e Moore . As máquinas Mealy e Moore são utilizadas como ferramentas de design em sistemas eletrônicos digitais encontrados na forma de hardware usado em telecomunicações ou dispositivos eletrônicos em geral.

A literatura apresenta inúmeras analogias entre comunicação e programação de computadores. Por analogia, um mecanismo de transferência de um protocolo é comparável a uma unidade de processamento central (CPU). A estrutura apresenta regras que permitem ao programador projetar protocolos cooperativos independentemente uns dos outros.

Layering

Figura 2. Protocolos em relação ao esquema de camadas da Internet.
Figura 2. O modelo TCP / IP ou esquema de camadas da Internet e sua relação com alguns protocolos comuns.

No projeto de protocolo moderno, os protocolos são dispostos em camadas para formar uma pilha de protocolos. A estratificação é um princípio de design que divide a tarefa de design do protocolo em etapas menores, cada uma das quais realiza uma parte específica, interagindo com as outras partes do protocolo apenas em um pequeno número de maneiras bem definidas. A estratificação permite que as partes de um protocolo sejam projetadas e testadas sem uma explosão combinatória de casos, mantendo cada projeto relativamente simples.

Os protocolos de comunicação em uso na Internet são projetados para funcionar em ambientes diversos e complexos. Os protocolos da Internet são projetados para simplicidade e modularidade e se encaixam em uma hierarquia grosseira de camadas funcionais definidas no Conjunto de protocolos da Internet . Os dois primeiros protocolos de cooperação, o Transmission Control Protocol (TCP) e o Internet Protocol (IP), resultaram da decomposição do Transmission Control Program original, um protocolo de comunicação monolítico, neste pacote de comunicação em camadas.

O modelo OSI foi desenvolvido internacionalmente com base na experiência com redes anteriores à Internet como modelo de referência para comunicação geral com regras muito mais rígidas de interação de protocolo e estratificação rigorosa.

Normalmente, o software aplicativo é construído sobre uma camada de transporte de dados robusta. Subjacente a essa camada de transporte está um mecanismo de entrega e roteamento de datagrama que normalmente não tem conexão na Internet. A retransmissão de pacotes através das redes acontece em outra camada que envolve apenas tecnologias de link de rede, que geralmente são específicas para certas tecnologias de camada física, como Ethernet . A disposição em camadas oferece oportunidades para a troca de tecnologias quando necessário, por exemplo, os protocolos são frequentemente empilhados em um arranjo de túnel para acomodar a conexão de redes diferentes. Por exemplo, o IP pode ser encapsulado em uma rede de modo de transferência assíncrona (ATM).

Camada de protocolo

Figura 3. Fluxos de mensagens usando um conjunto de protocolos.
Figura 3. Fluxos de mensagens usando um conjunto de protocolos. Os loops pretos mostram os loops de mensagens reais, os loops vermelhos são a comunicação efetiva entre as camadas ativadas pelas camadas inferiores.

A estratificação do protocolo forma a base do projeto do protocolo. Ele permite a decomposição de protocolos únicos e complexos em protocolos cooperativos mais simples. Cada camada de protocolo resolve uma classe distinta de problemas de comunicação. Juntas, as camadas formam um esquema ou modelo de camadas.

Computações lidam com algoritmos e dados; A comunicação envolve protocolos e mensagens; Portanto, o análogo de um diagrama de fluxo de dados é algum tipo de diagrama de fluxo de mensagens. Para visualizar as camadas de protocolo e suítes de protocolo, um diagrama dos fluxos de mensagens dentro e entre dois sistemas, A e B, é mostrado na figura 3. Os sistemas, A e B, ambos fazem uso do mesmo suíte de protocolo. Os fluxos verticais (e protocolos) estão no sistema e os fluxos de mensagens horizontais (e protocolos) estão entre os sistemas. Os fluxos de mensagens são governados por regras e formatos de dados especificados por protocolos. As linhas azuis marcam os limites das camadas de protocolo (horizontais).

Camada de software

Figura 5: protocolo e camadas de software
Figura 5: Camada de protocolo e software. Os módulos de software que implementam os protocolos são representados por cubos. O fluxo de informações entre os módulos é representado por setas. As (duas setas horizontais superiores) vermelhas são virtuais. As linhas azuis marcam os limites da camada.

Os protocolos de suporte de software têm uma organização em camadas e sua relação com as camadas de protocolo é mostrada na figura 5.

Para enviar uma mensagem no sistema A, o módulo de software da camada superior interage com o módulo diretamente abaixo dele e entrega a mensagem a ser encapsulada. O módulo inferior preenche os dados do cabeçalho de acordo com o protocolo que implementa e interage com o módulo inferior, que envia a mensagem pelo canal de comunicação para o módulo inferior do sistema B. No sistema receptor B ocorre o inverso, então, em última análise, a mensagem é entregue em sua forma original ao módulo superior do sistema B.

A tradução do programa é dividida em subproblemas. Como resultado, o software de tradução também é dividido em camadas, permitindo que as camadas do software sejam projetadas de forma independente. A mesma abordagem pode ser vista nas camadas TCP / IP.

Os módulos abaixo da camada de aplicativo geralmente são considerados parte do sistema operacional. A passagem de dados entre esses módulos é muito mais barata do que a passagem de dados entre um programa de aplicação e a camada de transporte. O limite entre a camada de aplicativo e a camada de transporte é chamado de limite do sistema operacional.

Camada estrita

Aderir estritamente a um modelo em camadas, uma prática conhecida como estrita estratificação, nem sempre é a melhor abordagem para a rede. A estratificação em camadas pode ter um impacto negativo no desempenho de uma implementação.

Embora o uso de camadas de protocolo seja hoje onipresente em todo o campo de redes de computadores, tem sido historicamente criticado por muitos pesquisadores, pois abstrair a pilha de protocolo desta forma pode fazer com que uma camada superior duplique a funcionalidade de uma camada inferior, sendo um excelente exemplo recuperação de erros tanto por link quanto de ponta a ponta.

Padrões de design

Problemas comumente recorrentes no projeto e implementação de protocolos de comunicação podem ser tratados por padrões de projeto de software .

Especificação formal

Métodos formais populares de descrição da sintaxe de comunicação são Abstract Syntax Notation One (um padrão ISO ) e o formulário Backus-Naur aumentado (um padrão IETF ).

Modelos de máquina de estados finitos são usados ​​para descrever formalmente as possíveis interações do protocolo. e comunicar máquinas de estado finito

Desenvolvimento de protocolo

Para que a comunicação ocorra, os protocolos devem ser selecionados. As regras podem ser expressas por algoritmos e estruturas de dados. A independência do hardware e do sistema operacional é aprimorada expressando os algoritmos em uma linguagem de programação portátil. A independência da fonte da especificação fornece uma interoperabilidade mais ampla.

Os padrões de protocolo são normalmente criados com a obtenção da aprovação ou suporte de uma organização de padrões , que inicia o processo de padronização. Os membros da organização de padrões concordam em cumprir o resultado do trabalho de forma voluntária. Freqüentemente, os membros estão no controle de grandes fatias de mercado relevantes para o protocolo e, em muitos casos, os padrões são impostos por lei ou pelo governo porque são considerados como servindo a um interesse público importante; portanto, obter a aprovação pode ser muito importante para o protocolo.

A necessidade de padrões de protocolo

A necessidade de padrões de protocolo pode ser demonstrada observando o que aconteceu com o protocolo bi-sync (BSC) inventado pela IBM . BSC é um protocolo de nível de link inicial usado para conectar dois nós separados. Originalmente, não se destinava a ser usado em uma rede multinó, mas isso revelou várias deficiências do protocolo. Na ausência de padronização, fabricantes e organizações se sentiram à vontade para aprimorar o protocolo, criando versões incompatíveis em suas redes. Em alguns casos, isso foi feito deliberadamente para desencorajar os usuários de usar equipamentos de outros fabricantes. Existem mais de 50 variantes do protocolo bi-sync original. Pode-se supor que um padrão teria evitado que pelo menos parte disso acontecesse.

Em alguns casos, os protocolos ganham domínio do mercado sem passar por um processo de padronização. Esses protocolos são chamados de padrões de fato . Os padrões de fato são comuns em mercados emergentes, nichos de mercado ou mercados monopolizados (ou oligopolizados ). Eles podem segurar um mercado em um controle muito negativo, especialmente quando usados ​​para assustar a concorrência. De uma perspectiva histórica, a padronização deve ser vista como uma medida para neutralizar os efeitos negativos dos padrões de fato. Exceções positivas existem; um sistema operacional padrão de fato como o Linux não tem esse controle negativo sobre seu mercado, porque as fontes são publicadas e mantidas de forma aberta, convidando assim a concorrência.

Organizações de Padrões

Algumas das organizações de padrões relevantes para protocolos de comunicação são a International Organization for Standardization (ISO), a International Telecommunication Union (ITU), o Institute of Electrical and Electronics Engineers (IEEE) e a Internet Engineering Task Force (IETF). O IETF mantém os protocolos em uso na Internet. O IEEE controla muitos protocolos de software e hardware na indústria eletrônica para dispositivos comerciais e de consumo. A ITU é uma organização guarda-chuva de engenheiros de telecomunicações que projetam a rede telefônica pública comutada (PSTN), bem como muitos sistemas de comunicação de rádio . Para eletrônicos marinhos, os padrões NMEA são usados. O World Wide Web Consortium (W3C) produz protocolos e padrões para tecnologias da web.

As organizações de padrões internacionais devem ser mais imparciais do que as organizações locais com um interesse nacional ou comercial a considerar. As organizações de padrões também fazem pesquisa e desenvolvimento para padrões do futuro. Na prática, as organizações de padronização mencionadas cooperam estreitamente entre si.

O Processo de Padronização

O processo de padronização começa com o comissionamento de um subgrupo de trabalho do subcomitê pela ISO. O grupo de trabalho emite rascunhos de trabalho e documentos de discussão para as partes interessadas (incluindo outros organismos de normalização) a fim de provocar discussões e comentários. Isso irá gerar muitas perguntas, muita discussão e geralmente alguma discordância sobre o que o padrão deve fornecer e se pode satisfazer todas as necessidades (geralmente não). Todos os pontos de vista conflitantes devem ser levados em consideração, muitas vezes por meio de um compromisso, para avançar para um projeto de proposta do grupo de trabalho.

O rascunho da proposta é discutido pelos organismos de normalização dos países membros e outras organizações dentro de cada país. Os comentários e sugestões são comparados e as visões nacionais serão formuladas, antes que os membros da ISO votem na proposta. Se rejeitado, o projeto de proposta deve considerar as objeções e contrapropostas para criar um novo projeto de proposta para outra votação. Depois de muitos comentários, modificações e compromissos, a proposta atinge o status de um projeto de padrão internacional e, por fim, um padrão internacional .

O processo normalmente leva vários anos para ser concluído. O rascunho do papel original criado pelo designer será substancialmente diferente do padrão e conterá alguns dos seguintes 'recursos':

  • Vários modos opcionais de operação, por exemplo, para permitir a configuração de diferentes tamanhos de pacote no momento da inicialização, porque as partes não conseguiram chegar a um consenso sobre o tamanho de pacote ideal.
  • Parâmetros que são deixados indefinidos ou permitidos para assumir valores de um conjunto definido a critério do implementador. Isso geralmente reflete visões conflitantes de alguns dos membros.
  • Parâmetros reservados para uso futuro, refletindo que os membros concordaram que as instalações deveriam ser fornecidas, mas não puderam chegar a um acordo sobre como isso deveria ser feito no tempo disponível.
  • Várias inconsistências e ambigüidades serão inevitavelmente encontradas durante a implementação do padrão.

As normas internacionais são reeditadas periodicamente para lidar com as deficiências e refletir as mudanças de visão sobre o assunto.

Padronização OSI

Uma lição aprendida com a ARPANET , a predecessora da Internet, foi que os protocolos precisam de uma estrutura para operar. Portanto, é importante desenvolver uma estrutura de uso geral, preparada para o futuro, adequada para protocolos estruturados (como protocolos em camadas) e sua padronização. Isso evitaria padrões de protocolo com funcionalidade sobreposta e permitiria a definição clara das responsabilidades de um protocolo nos diferentes níveis (camadas). Isso deu origem ao modelo de referência de Interconexão de Sistemas Abertos OSI (RM / OSI), que é usado como uma estrutura para o projeto de protocolos e serviços padrão em conformidade com as especificações de várias camadas.

No modelo OSI , os sistemas de comunicação são considerados conectados por um meio físico subjacente, fornecendo um mecanismo de transmissão básico (e não especificado). As camadas acima são numeradas (de um a sete); a n- ésima camada é referida como (n) -camada. Cada camada fornece serviço para a camada acima dela (ou no topo para o processo de aplicação) usando os serviços da camada imediatamente abaixo dela. As camadas se comunicam por meio de uma interface, chamada de ponto de acesso de serviço . As camadas correspondentes em cada sistema são chamadas de entidades de mesmo nível . Para se comunicar, duas entidades de mesmo nível em uma determinada camada usam um protocolo (n), que é implementado usando serviços da camada (n-1). Quando os sistemas não estão conectados diretamente, são utilizadas entidades de mesmo nível intermediárias (chamadas de relés ). Um endereço identifica exclusivamente um ponto de acesso de serviço. Os domínios de nomenclatura de endereço não precisam ser restritos a uma camada, portanto, é possível usar apenas um domínio de nomenclatura para todas as camadas. Para cada camada, existem dois tipos de padrões: padrões de protocolo que definem como as entidades de mesmo nível em uma determinada camada se comunicam e padrões de serviço que definem como uma determinada camada se comunica com a camada acima dela.

Na versão original do RM / OSI, as camadas e suas funcionalidades são (da camada mais alta para a mais baixa):

  • A camada de Aplicação pode fornecer os seguintes serviços aos processos de aplicação: identificação dos parceiros de comunicação pretendidos, estabelecimento da autoridade necessária para comunicar, determinação da disponibilidade e autenticação dos parceiros, acordo sobre mecanismos de privacidade para a comunicação, acordo sobre responsabilidade por erro recuperação e procedimentos para garantir a integridade dos dados, sincronização entre os processos de aplicação em cooperação, identificação de quaisquer restrições na sintaxe (por exemplo, conjuntos de caracteres e estruturas de dados), determinação do custo e qualidade de serviço aceitável, seleção da disciplina de diálogo, incluindo procedimentos de logon e logoff necessários .
  • A camada de apresentação pode fornecer os seguintes serviços para a camada de aplicação: um pedido para o estabelecimento de uma sessão, transferência de dados, negociação da sintaxe a ser usada entre as camadas de aplicação, quaisquer transformações de sintaxe necessárias, formatação e transformações de propósito especial (por exemplo, dados compressão e criptografia de dados).
  • A camada de sessão pode fornecer os seguintes serviços para a camada de apresentação: estabelecimento e liberação de conexões de sessão, troca de dados normal e acelerada, um serviço de quarentena que permite à entidade de apresentação de envio instruir a entidade de sessão de recebimento a não liberar dados para sua entidade de apresentação sem permissão, gerenciamento de interação para que as entidades de apresentação possam controlar de quem é a vez de executar certas funções de controle, ressincronização de uma conexão de sessão, relatório de exceções irrecuperáveis ​​para a entidade de apresentação.
  • A camada de transporte fornece transferência de dados confiável e transparente de forma econômica, conforme exigido pela qualidade de serviço selecionada. Ele pode suportar a multiplexação de várias conexões de transporte em uma conexão de rede ou dividir uma conexão de transporte em várias conexões de rede.
  • A camada de rede faz a configuração, manutenção e liberação de caminhos de rede entre as entidades de mesmo nível de transporte. Quando os relés são necessários, as funções de roteamento e relé são fornecidas por esta camada. A qualidade do serviço é negociada entre as entidades de rede e transporte no momento em que a conexão é configurada. Essa camada também é responsável pelo controle de congestionamento da rede .
  • A camada de enlace de dados faz a configuração, manutenção e liberação das conexões de enlace de dados. Os erros que ocorrem na camada física são detectados e podem ser corrigidos. Os erros são relatados à camada de rede. A troca de unidades de enlace de dados (incluindo controle de fluxo) é definida por esta camada.
  • A camada física descreve detalhes como as características elétricas da conexão física, as técnicas de transmissão usadas e a configuração, manutenção e liberação das conexões físicas.

Em contraste com o esquema de camadas TCP / IP , que assume uma rede sem conexão, o RM / OSI assumiu uma rede orientada à conexão. As redes orientadas para conexão são mais adequadas para redes de área ampla e as redes sem conexão são mais adequadas para redes de área local. O uso de conexões para se comunicar implica alguma forma de sessão e circuitos (virtuais), portanto, a camada de sessão (no modelo TCP / IP ausente). Os membros constituintes da ISO estavam principalmente preocupados com redes de área ampla, então o desenvolvimento de RM / OSI concentrado em redes orientadas a conexão e redes sem conexão foram apenas mencionados em um adendo ao RM / OSI. Na época, a IETF teve que lidar com isso e com o fato de que a Internet precisava de protocolos que simplesmente não existiam. Como resultado, o IETF desenvolveu seu próprio processo de padronização baseado em "consenso bruto e código em execução".

O processo de padronização é descrito pela RFC2026 .

Hoje em dia, o IETF se tornou uma organização de padrões para os protocolos em uso na Internet. A RM / OSI ampliou seu modelo para incluir serviços sem conexão e, por isso, tanto o TCP quanto o IP podem ser desenvolvidos em padrões internacionais.

Taxonomias

Os esquemas de classificação para protocolos geralmente se concentram no domínio de uso e função. Como um exemplo de domínio de uso, os protocolos orientados a conexão e os protocolos sem conexão são usados ​​em redes orientadas a conexão e redes sem conexão, respectivamente. Um exemplo de função é um protocolo de encapsulamento , que é usado para encapsular pacotes em um protocolo de alto nível para que os pacotes possam ser passados ​​por um sistema de transporte usando o protocolo de alto nível.

Um esquema de camadas combina função e domínio de uso. Os esquemas de camadas dominantes são os propostos pela IETF e pela ISO. Apesar do fato de que as suposições subjacentes dos esquemas de camadas são diferentes o suficiente para garantir a distinção dos dois, é uma prática comum comparar os dois relacionando protocolos comuns às camadas dos dois esquemas.

O esquema de camadas do IETF é chamado de camadas de Internet ou camadas de TCP / IP .

O esquema de camadas da ISO é chamado de modelo OSI ou camadas ISO .

Na configuração do equipamento de rede, muitas vezes é feita uma distinção entre os termos da técnica: o termo "protocolo" refere-se estritamente à camada de transporte e o termo "serviço" se refere a protocolos que utilizam um "protocolo" para transporte. No caso comum de TCP e UDP, os serviços são diferenciados por números de porta. A conformidade com esses números de porta é voluntária, portanto, em sistemas de inspeção de conteúdo, o termo "serviço" refere-se estritamente aos números de porta, e o termo "aplicativo" costuma ser usado para se referir a protocolos identificados por meio de assinaturas de inspeção.

Veja também

Notas

Referências

Bibliografia

Leitura adicional

links externos