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

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 23: Linha 23:
 
# Ao receber a mensagem ''CC'', o iniciador já pode enviar dados pela conexão
 
# Ao receber a mensagem ''CC'', o iniciador já pode enviar dados pela conexão
 
# Ao receber a terceira mensagem, o outro participante também pode enviar dados pela conexão. OBS: essa terceira mensagem pode ser uma mensagem de dados comum, pois ela serve para que o outro participante saiba que a conexão foi estabelecida com os parâmetros negociados.
 
# Ao receber a terceira mensagem, o outro participante também pode enviar dados pela conexão. OBS: essa terceira mensagem pode ser uma mensagem de dados comum, pois ela serve para que o outro participante saiba que a conexão foi estabelecida com os parâmetros negociados.
 +
 +
 +
'''Avalie seu conhecimento'''
 +
# Identifique um protocolo que use estabelecimento em duas vias, e outro que estabeleça em três vias.
 +
# Reflita sobre que restrições teria um protocolo que estabelecesse uma sessão bidirecional usando negociação em duas vias
  
 
== Manutenção de conexão ==
 
== Manutenção de conexão ==
Linha 50: Linha 55:
  
 
Por fim, pode acontecer de mensagens de terminação de conexão serem perdidas. Isso manteria um ou mesmo ambos participantes esperando indefinidamente pelo término de conexão. Uma solução para evitar essa situação é usar ''timeout'' para a espera de confirmação da mensagem de término de conexão.
 
Por fim, pode acontecer de mensagens de terminação de conexão serem perdidas. Isso manteria um ou mesmo ambos participantes esperando indefinidamente pelo término de conexão. Uma solução para evitar essa situação é usar ''timeout'' para a espera de confirmação da mensagem de término de conexão.
 +
 +
 +
'''Avalie seu conhecimento'''
 +
# Analise um protocolo hipotético do tipo mestre-escravo, em que apenas o lado escravo tem o poder de terminar uma sessão. Pense em diferentes situações de terminação, e como elas funcionariam.
  
 
== Atividade ==
 
== Atividade ==
Linha 59: Linha 68:
 
# Modele o ''gerenciamento de conexão'' do seu protocolo de enlace.
 
# Modele o ''gerenciamento de conexão'' do seu protocolo de enlace.
  
 
+
<!--
 
[[imagem:PTC_Sessao-simetrico.jpg|700px]]
 
[[imagem:PTC_Sessao-simetrico.jpg|700px]]
 
<br>''MEF do gerenciamento de conexão do protocolo de enlace''
 
<br>''MEF do gerenciamento de conexão do protocolo de enlace''
Linha 93: Linha 102:
 
* ''KR'': pedido de ''keep alive''
 
* ''KR'': pedido de ''keep alive''
 
* ''KC'': confirmação de ''keep alive''
 
* ''KC'': confirmação de ''keep alive''
 
+
-->
 +
<!--
 
== Formato de quadro do gerenciamento de sessão ==
 
== Formato de quadro do gerenciamento de sessão ==
  
Linha 157: Linha 167:
 
* '''18/10''': prazo para apresentação e demonstração do protocolo, em horário a combinar com o professor
 
* '''18/10''': prazo para apresentação e demonstração do protocolo, em horário a combinar com o professor
  
 +
-->
 
<!--
 
<!--
 
'''Programas para teste:''' inclui um programa transmissor (tx) e um receptor (rx) compilados estaticamente. Quadros ACK possuem somente o campo de controle no cabeçalho, e não possuem dados, Use o transmissor com seu programa receptor, e vice-versa. Execute-os com opção -h para obter uma ajuda.
 
'''Programas para teste:''' inclui um programa transmissor (tx) e um receptor (rx) compilados estaticamente. Quadros ACK possuem somente o campo de controle no cabeçalho, e não possuem dados, Use o transmissor com seu programa receptor, e vice-versa. Execute-os com opção -h para obter uma ajuda.

Edição das 11h35min de 6 de agosto de 2020

Próxima aula


A próxima função do protocolo de enlace envolve o estabelecimento, manutenção e terminação de conexão. Sendo um protocolo ponto-a-ponto, deve-se estabelecer um enlace entre as duas pontas participantes antes de poder transferir dados. Isso evita que as transmissões entre um par de participantes sejam confundidas com transmissões de outros pares.

Nas seções 5.2 e 5.3 do capítulo 5 do livro Protocol Engineering, 2nd ed, de Hartmut Konig, há uma explicação sobre o gerenciamento de conexões e diversas formas de implementá-la. No caso do protocolo de enlace, serão usados estabelecimento e terminação explícitos de conexões, e manutenção de conexão.

Estabelecimento de conexão

Para criar uma conexão deve-se:

  • estabelecer a conexão: ambos participantes devem se sincronizar para aceitar ou recusar a conexão
  • negociar parâmetros de conexão: a conexão pode envolver parâmetros operacionais do protocolo que devem ser comuns a ambos participantes. Como exemplo, citam-se tamanho máximo de PDU e identificador de conexão.

A sincronização entre os participantes implica a troca de mensagens, a qual pode ser feita com duas (2-way handshaking) ou 3 (3-way handshaking) mensagens:


PTC-2-way 3-way.png


A sincronização do tipo 2-way é adequada em comunicações unidirecionais, mas não para comunicações bidirecionais. Isso se deve ao fato de que a primeira mensagem (CR) contém parâmetros de conexão do participante que iniciou o processo, e a segunda mensagem (CC) contém parâmetros do outro participante. Se a mensagem CC for perdida, o participante iniciador da conexão não tem como saber se a conexão foi aceita e quais os parâmetros definidos pelo outro participante. Assim, uma terceira mensagem enviada pelo iniciador serve para que o outro participante saiba que a conexão foi estabelecida, e que assim ele pode usá-la para enviar dados. De forma resumida:

  1. Ao receber a mensagem CC, o iniciador já pode enviar dados pela conexão
  2. Ao receber a terceira mensagem, o outro participante também pode enviar dados pela conexão. OBS: essa terceira mensagem pode ser uma mensagem de dados comum, pois ela serve para que o outro participante saiba que a conexão foi estabelecida com os parâmetros negociados.


Avalie seu conhecimento

  1. Identifique um protocolo que use estabelecimento em duas vias, e outro que estabeleça em três vias.
  2. Reflita sobre que restrições teria um protocolo que estabelecesse uma sessão bidirecional usando negociação em duas vias

Manutenção de conexão

Um enlace pode ter momentos de ociosidade, quando não há mensagens de dados para serem transmitidas. Isso pode ser confundido com casos em que o enlace se rompe (ex: um dos participantes é desligado, ou o meio de comunicação é seccionado). Para evitar que um enlace rompido seja interpretado com um enlace ocioso (e vice-versa), o protocolo deve fazer a manutenção de conexão.

A manutenção de conexão pode ser feita com o envio periódico de mensagens de verificação. Por exemplo, o protocolo PPP usa mensagens Keep-Alive enviadas a cada 10 segundos para monitorar o estado do enlace. Se três mensagens Keep-Alive consecutivas forem perdidas, o enlace é terminado. Nesse caso, após um certo tempo (ex: 30 segundos) o protocolo PPP tenta restabelecer o enlace. O protocolo TCP também possui um mecanismo opcional para manutenção de conexão chamado de Keep Alive. Uma abordagem como essa poderia ser incluída no protocolo de enlace em desenvolvimento.

Terminação de conexão

A terminação de conexão implica duas necessidades:

  1. A sincronização entre os participantes quanto ao término da conexão (ambos participantes devem fechar a conexão)
  2. A garantia de que todas as mensagens de dados pendentes sejam entregues


A solução não é tão simples quanto parece. Uma discussão detalhada pode ser lida na seção 5.3.3 do livro Protocol Engineering, 2nd ed, de Hartmut Konig. Com base nessa explicação e no fato de que o protocolo de enlace em desenvolvimento é bidirecional, deve-se usar a terminação de conexão feita por ambos participantes do enlace. Assim um participante envia uma mensagem para terminação de conexão, e após sua confirmação entra-se em estado de conexão parcialmente fechada (half-close connection). O outro participante envia suas mensagens pendentes, e em seguida envia sua mensagem de terminação de conexão. Após a confirmação dessa última mensagem de terminação, a conexão é considerada terminada. A figura a seguir exemplifica esse procedimento.


PTC-Half-close.png


Uma simplificação pode ser feita se ambos participantes encerrarem a conexão simultaneamente. Nesse caso, a terminação pode ser sincronizada com três mensagens (3-way handshake):


PTC-3-way-close.png


Por fim, pode acontecer de mensagens de terminação de conexão serem perdidas. Isso manteria um ou mesmo ambos participantes esperando indefinidamente pelo término de conexão. Uma solução para evitar essa situação é usar timeout para a espera de confirmação da mensagem de término de conexão.


Avalie seu conhecimento

  1. Analise um protocolo hipotético do tipo mestre-escravo, em que apenas o lado escravo tem o poder de terminar uma sessão. Pense em diferentes situações de terminação, e como elas funcionariam.

Atividade


  1. Identifique em que parte da estrutura do seu protocolo deve se encaixar o gerenciamento de conexão
  2. Modele o gerenciamento de conexão do seu protocolo de enlace.