PTC29008: Apresentação

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Próxima aula



  • Caracterização de protocolos por meio de um exemplo: sintaxe, comportamento, temporização, semântica. Princípios de projeto e propriedades desejáveis de protocolos. Análise de um protocolo real.


  • Projeto 1: um protocolo de comunicação
  • Projeto 2: um protocolo de aplicação
  • Projeto 3: verificação formal do protocolo de comunicação

Um protocolo é uma parte muito importante de um sistema de comunicação. A comunicação de dados pode ser entendida como troca de informação entre dois dispositivos através de algum meio de comunicação. A comunicação ocorre no âmbito de um sistema de telecomunicações, composto por equipamentos (hardware) e programas (softwares). Um sistema básico de comunicação de dados se constitui de cinco componentes:


Rede-intro-1.png


  1. A mensagem: a informação a ser transmitida. O conteúdo da mensagem, seja um texto, música, video, ou qualquer outro tipo de informação, é representada por conjuntos de bits (dígitos binários).
  2. Transmissor: dispositivo que transmite a mensagem.
  3. Receptor: dispositivo que recebe a mensagem.
  4. Meio de comunicação: caminho físico por onde viaja a mensagem do transmissor até o receptor.
  5. Protocolo: conjunto de regras que governa a comunicação de dados.


Os sistemas de comunicação reais, incluídas as redes de computadores, são bem mais complexos do que esse modelo simplificado. No entanto, todos podem ser entendidos, em alguma medida, a partir desse modelo. Nesta disciplina estudam-se princípios e técnicas para projeto de protocolos, incluindo formas de verificar a consistência e correção de seu funcionamento.


Serviço e Protocolo

Um sistema de comunicação provê serviços para as aplicações ou usuários realizarem ações que envolvam a comunicação entre sistemas através de uma rede. Por exemplo, existem serviços para transferência de arquivos, reprodução remota de videos e músicas, execução remota de programas, pesquisa por informação, e muitos outros. O conceito de serviço está relacionado ao de protocolo. Um serviço é provido por entidades que interagem de acordo com um protocolo. Assim, um serviço é um dos elementos envolvidos na especificação de um protocolo. As figuras a seguir mostram a relação entre esses conceitos, primeiro apresentando somente a visão de um serviço para um usuário, e, em seguida, a relação entre serviço e protocolo.

PTC-Servico1.png
Um serviço visto por um usuário


PTC-Protocolo1.png
O serviço provido pelo protocolo

Protocolos reais

Que protocolos existentes despertam suas curiosidades sobre os detalhes de seus projetos ? Identifiquem alguns protocolos, e anotem suas finalidades e características.

Protocolo Finalidade Características
NTP Sincronizar os relógios dos computadores ligados a rede. Utiliza uma versão do algoritmo de Marzullo para determinar o tempo dos servidores corrigindo os efeitos da variação da latência da rede. Utiliza uma hierarquia mestre-escravo onde o servidor envia o horário UTC aos equipamentos da rede, enviando as informações por UDP.
FTP Transferência de arquivos entre máquinas em uma rede TCP/IP Utiliza um modelo cliente-servidor para a transferência de arquivos em ambas as direções (download e upload) de maneira eficaz. Estabelece duas conexões TCP paralelas: uma para controle (persistente) e outra para dados (não-persistente). Caracteriza-se por ser um protocolo de padrão aberto.
SSH Permitir a conexão com um outro computador na rede de forma a permitir execução de comandos de uma unidade remota. Usa criptografia de chave pública para autenticar o computador remoto e permiti-lo autenticar o usuário, se necessário.
TELNET Proporcionar uma facilidade de comunicação baseada em texto interativo bidirecional usando uma conexão de terminal virtual.
SMTP Enviar e-mails através da Internet. baseado em texto, orientado a conexão, no qual um remetente de email se comunica com um destinatário de correio emitindo cadeias de comando e fornecendo dados necessários em um canal de fluxo de dados ordenado confiável, geralmente uma conexão TCP.
RTP Usado em aplicações de tempo real.
ARP Permite conhecer o endereço físico de uma placa de rede que corresponde a um endereço IP. (Roicenir) É um protocolo de requisição e resposta que é executado encapsulado pelo protocolo da linha. É comunicado dentro dos limites de uma única rede, nunca roteado entre nós de redes. (Roicenir)
SIP Estabelecer chamadas e conferências através de redes via Protocolo IP. (Roicenir) Utiliza o modelo “requisição-resposta”; Simplicidade; Independência do protocolo de transporte; Baseado em texto. (Roicenir)
SNMP Protocolo de gerenciamento de ativos e serviços de rede. No SNMP há o agente, item, ativo ou serviço, a ser monitorado. O gerente, responsável por consultar, solicitar modificações e gerar alertas quando necessário. Os principais métodos são: (1) GET, realiza as consultas no agente. (2)SET, responsável pelas modificações. (3) TRAP, geração de alertas. (Jéssica Hahn)

Análise dos protocolos

De acordo com Gerard Holzmann, no capítulo 2 de seu livro Design and Validation of Computer Protocols, um protocolo é composto por cinco elementos:

  1. O serviço oferecido pelo protocolo. Ex: protocolo MPCP (outra descrição)
  2. As considerações sobre o ambiente em que o protocolo é executado
  3. O vocabulário de mensagens usadas para implementar o protocolo
  4. A codificação (ou formato) de cada mensagem do vocabulário
  5. O comportamento, definido por regras de intercâmbio responsáveis pela consistência das trocas de mensagens


Com base nesses elementos, deve-se complementar ou adequar a análise dos protocolos selecionados:

Protocolo Serviço Ambiente de execução Vocabulário Codificação Comportamento
NTP Sincronização dos relógios dos computadores ligados a rede. Usa um canal UDP para intercâmbio de mensagens. Pode perder mensagens. Latências de transmissão variáveis (ex: devido a congestionamentos) podem ocorrer. NTP Data packet binária (ver RFC 5905) Há um bom resumo neste documento.
FTP Transferência de arquivos entre computadores conectados em uma rede. Usa dois canais TCP paralelos para intercâmbio de de dados de controle e arquivos. Garante confiabilidade, ou seja, entrega do arquivo enquanto protege de erros de transmissão. Conjunto de comandos: USER, PASS, LIST, STOR, PORT, QUIT. Textual (ASCII ou EBCDIC) ou binária. ( ver RFC 959) 1- Cliente realiza conexão de controle (porta 21) com servidor (modo passivo ou ativo). 2- Com a confirmação positiva, servidor mantém a conexão de controle aberta e aguarda as solicitações de transferência. 3- Em modo de execução ativo o servidor inicia a conexão de dados. 4- Em modo de execução passivo o cliente inicia a conexão de dados para iniciar a transferência.
SSH
SMTP
TELNET
RTP
ARP
SNMP
SIP

Atividade

O protocolo TFTP(ver também a RFC 1350) possibilita a transferência de arquivos de forma bastante simplificada. Ele não exige autenticação, e a transferência é feita de forma confiável com datagramas UDP. Um uso bastante comum desse protocolo é para transferir firmware ou configuração de equipamentos de rede, e mesmo realizar boot remoto. Sendo assim:

  1. Especifique um protocolo parecido com o TFTP e com essas mesmas características.
  2. Implemente esse protocolo na forma de uma API
  3. Escreva uma aplicação que use seu protocolo de forma a demonstrar seu funcionamento