Mudanças entre as edições de "PTC29008: Apresentação"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 195: Linha 195:
  
 
         string dados = server.recv(64, addr, port);
 
         string dados = server.recv(64, addr, port);
         cout << "Recebeu " << dados.size() << " caracteres de " << addr << ":" << port <<" --> " << dados << endl;
+
         cout << "Recebeu " << dados.size() << " caracteres de " << addr << ":" << port <<" ==> " << dados << endl;
 
       } catch (UDPSocket::SocketException e) {
 
       } catch (UDPSocket::SocketException e) {
 
         perror("ao enviar");
 
         perror("ao enviar");

Edição das 18h50min de 31 de julho de 2019

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.
MPCP Utilizado para controlar a rede EPON. O MPCP é definido na camada MAC e permite controlar a largura de banda de cada usuário, auto-discovery e ranging. Utiliza quadros Ethernet padão, o Optical Line Terminal (OLT) transmite os quadros para as Optical Network Units (ONUs) em broadcast, os quadros de controle são enviados na mesma conexão que trafegam os dados. Cada ONU transmite em turnos, quando autorizadas pelo OLT. A OLT regula a largura de banda upstream designada a cada ONU pelo tamanho da janela de transmissão.

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.

Atividade

Aplicações de bate-papo (chat) são bastante utilizadas, havendo diversas opções na Internet. Um bate-papo básico, em que se trocam somente mensagens de texto, pode ser implementado sem grande complexidade. Crie uma aplicação de bate-papo com estas características:

  • Modelo P2P: cada agente de usuário se comunica diretamente com demais agentes de usuário, sem processos intermediários
  • Identificação de usuários: cada usuário deve ser identificado por uma string, a qual é informada pelo próprio usuário ao iniciar o bate-papo
  • Mensagens puramente textuais: cada mensagem enviada ao bate-papo é mostrada ao demais usuários prefixada pela identificação do usuário que a escreveu
  • Mensagens privadas ou públicas: mensagens privadas são mostradas a um único usuário específico, e mensagens públicas são mostradas para todos usuários


O desenvolvimento dessa aplicação implica projetar e implementar um protocolo para o intercâmbio de mensagens. Para a transmissão de mensagens use alguma API de comunicação existente, tal como:


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