Mudanças entre as edições de "PTC29008: Diretrizes para projeto de protocolo"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 43: Linha 43:
 
{{collapse top|Exemplo}}
 
{{collapse top|Exemplo}}
 
* protocolo de aplicação do tipo cliente-servidor
 
* protocolo de aplicação do tipo cliente-servidor
* transferência unidirecional confiável de arquivo (cliente  para servidor)
 
 
{{collapse bottom}}
 
{{collapse bottom}}
 
2. Faça considerações sobre o ambiente de execução do protocolo (ex: o tipo de canal de comunicação usado e suas características)
 
2. Faça considerações sobre o ambiente de execução do protocolo (ex: o tipo de canal de comunicação usado e suas características)
Linha 56: Linha 55:
 
!Descrição e formato
 
!Descrição e formato
 
|-
 
|-
|Attr || Inicia o envio. Contém: nome do arquivo, tamanho do arquivo ??, qtde de pacotes ??
+
| ||  
 
|-
 
|-
|Dados|| Parte do conteúdo do arquivo. Contém: número de sequência, dados do arquivo, checksum, flag de último pacote ???
+
| ||  
 
|-
 
|-
|ACK || Confirmação. Contém: número de sequência
 
|-
 
|Finalização || Encerra a transmissão. Contém: ???
 
|-
 
|Erro || Informa erro fatal e aborta a transmissão. Contém: status
 
 
|}
 
|}
 
{{collapse bottom}}
 
{{collapse bottom}}
Linha 81: Linha 75:
  
  
A entrega da especificação e do protocolo implementado deve ser feita '''até dia 07/08'''.
+
A entrega da especificação e do protocolo implementado deve ser feita '''até dia 26/02'''.
 
* [https://moodle.sj.ifsc.edu.br/mod/assign/view.php?id=4217 Entrega da tarefa via Moodle]
 
* [https://moodle.sj.ifsc.edu.br/mod/assign/view.php?id=4217 Entrega da tarefa via Moodle]

Edição das 09h43min de 12 de fevereiro de 2019

Próxima aula


Ainda segundo Gerard Holzmann, no capítulo 2 de seu livro Design and Validation of Computer Protocols, um protocolo possui algumas propriedades desejáveis:

  • Simplicidade: um protocolo bem estruturado pode ser construído com um pequeno número de partes bem projetadas e bem entendidas.
  • Modularidade: um protocolo que realiza uma função complexa pode ser construído com partes menores que interagem de maneira simples e bem definida. Cada parte menor é um protocolo leve que pode ser desenvolvido separadamente, verificado, implementado e mantido.
  • Adequação: um protocolo bem formado não é incompleto, nem possui funções que nunca são de fato utilizadas. Um protocolo bem formado se limita aos recursos existentes, além de ser estável e adaptável.
  • Robustez: um protocolo robusto deve funcionar bem em condições normais, e também em situações imprevistas. Ele deve conseguir lidar com cada possível sequência de ações, em todas as possíveis condições. Ele deve ter um projeto mínimo, de forma a remover considerações não essenciais que poderiam impedir sua adaptação a condições não antecipadas.
  • Consistência: protocolos não devem apresentar interações que os levem a falhar, tais como deadlocks, livelocks e terminações inesperadas.


A figura a seguir mostra a arquitetura do protocolo de enlace PPP como exemplo de simplicidade e modularidade:

PTC-Ppp-estrutura.png


Robustez e consistência são aspectos comportamentais do protocolo, que envolvem portanto a dinâmica de seu funcionamento. O comportamento de um protocolo pode ser descrito de algumas formas, sendo usual utilizar diagramas. A figura a seguir apresenta o comportamento em alto-nível do protocolo PPP (mas não significa que dela se possa concluir que ele seja robusto ou consistente):

PTC-Ppp-comportamento.png

Diretrizes de projeto

No mesmo capÍtulo 2 de seu livro, Gerard Holzmann enumera dez regras de projeto de um protocolo:

  1. Definição do problema: certifique-se de que o problema esteja bem definido, com a identificação de todos os critérios de projeto, requisitos e restrições antes de iniciar um projeto.
  2. Definição do serviço: deve-se definir o serviço a ser realizado em cada nível de abstração antes de decidir que estruturas devem ser usadas para implementá-los (o que vem antes de como).
  3. Funcionalidades externas primeiro: projete a funcionalidade externa antes da interna. Primeiro considere a solução como uma caixa-preta e decida como ela interage com seu ambiente. Depois decida como a caixa-preta pode ser organizada internamente. Provavelmente isso consiste de caixas-pretas menores que podem ser refinadas de forma similar.
  4. Mantenha a simplicidade: protocolos extravagantes são mais propensos a ter bugs que protocolos simples. Eles são mais difíceis de implementar, verificar e comumente menos eficientes. Existem poucos problemas realmente complexos em projetos de protocolos. Problemas que aparentam serem complexos costumam ser problemas misturados. A tarefa dos projetistas é identificar os problemas mais simples, separá-los, e então resolvê-los individualmente.
  5. Preservar independência: não conectar o que for independente, o que significa separar questões ortogonais.
  6. Mantenha o projeto extensível: não introduza o que for imaterial. Não restrinja o que for irrelevante. Um bom projeto é facilmente extensível, e resolve uma classe de problemas ao invés de uma única instância.
  7. Crie um protótipo: antes de implementar um projeto, crie um protótipo de alto-nível, e verifique se os critérios do projeto são atingidos.
  8. Torne-o eficiente: implemente o projeto, meça seu desempenho e, se necessário, otimize-o.
  9. Verifique a implementação: confira se a implementação final otimizada é equivalente ao protótipo de alto-nível que foi verificado.
  10. Não pule as regras 1 a 7

TAREFA: um protocolo simples

Com base na descrição resumida do protocolo proposto na aula anterior:

1. Especifique o serviço provido pelo protocolo

Exemplo
  • protocolo de aplicação do tipo cliente-servidor

2. Faça considerações sobre o ambiente de execução do protocolo (ex: o tipo de canal de comunicação usado e suas características)

Exemplo
  • canal de comunicação não-confiável (UDP)
  • protocolo executado em plataforma com memória limitada e baixa capacidade de processamento

3. Defina seu vocabulário, e também a codificação de mensagens a ser adotada

Exemplo
Mensagem Descrição e formato

4. Descreva seu comportamento

Exemplo

Ao final, implemente esse protocolo usando seus conhecimentos sobre redes de computadores e sistemas distribuídos. OBS:

  • o canal de comunicação deve ser baseado em um protocolo de transporte. Isso elimina a possibilidade de usar protocolos de aplicação, tais como HTTP (e, por consequência, implementar algo na forma de web service ou coisa parecida)


A implementação deve ser feita por meio de um protótipo composto por:

  • uma API onde se implementa o protocolo
  • uma aplicação servidora
  • uma aplicação cliente


A entrega da especificação e do protocolo implementado deve ser feita até dia 26/02.