Da especificação à implementação - UERJrubi/cursos/rc/Parte1c.pdf · 2020. 3. 13. · Estudo:...
Transcript of Da especificação à implementação - UERJrubi/cursos/rc/Parte1c.pdf · 2020. 3. 13. · Estudo:...
-
Estudo: protocolo de transporte
Estudo de caso: protocolo de transporte Da especificação à implementação
Máquinas de estados finitos
Máquinas de estados finitos estendidas
Tabelas de estados
Pseudocódigos
-
Estudo: protocolo de transporte
Camada transporte Objetivo → melhorar a qualidade do serviço oferecido pela
camada rede
Serviço de transporte
Protocolo de transporte
Modo de transmissão orientado à conexão Estabelecimento da conexão
Transferência de dados
Liberação da conexão
Supondo a camada transporte entre a aplicação e arede (modelo híbrido)
-
Primitivas do serviço de transporte
Estabelecimento de conexão T-Connect.Request/Indication
T-Connect.Response/Confirm
Transferência de dados T-Data.Request/Indication
T-Expedited-Data.Request/Indication
Fechamento de conexão T-Disconnect.Request/Indication
-
Estudo: protocolo de transporte
Implementação de protocolos Especificação em máquinas de estados finitos estendidas
para o transmissor e o receptor
Tradução em linguagem de programação
-
Máquinas de estados finitos
Cada protocolo está sempre em um estadoespecífico que consiste em todos os valores de suasvariáveis
Para cada estado, existem zero ou mais transiçõespossíveis para outros estados
Uma transição pode ocorrer quando um dado éenviado, um dado chega ou um temporizadorestoura
Gráfico direcionado que mostra todos os estadoscomo nós e as transições como arcos diferenciados
-
Máquinas de estados finitos
Teoria de grafos indica quais estados sãoalcançáveis e quais não o são (análise dealcançabilidade)
Eventos tais como a chegada de dados e o estourode temporizadores ocorrem
Alcançabilidade usada para detectar erros naespecificação do protocolo Incompleta → dado chega em um estado e a máquina não
sabe que ação tomar
Bloqueio → existe um conjunto de estados para o qual nãohá saída e nenhum progresso pode ser feito
-
PDUs do protocolo de transporte
CR: Connect Request
CC: Connect Confirm
DR: Disconnect Request
DC: Disconnect Confirm
DT: Data
ED: Expedited Data
AK: Data Acknowledgement
EA: Expedited Data Acknowledgement
RJ: Reject
ER: Error
-
Estudo: protocolo de transporte
Exemplo: conexão Estabelecimento bem sucedido
Estabelecimento recusado
Desistência de estabelecimento
Dois modelos Máquinas de estados finitos para as sequências permitidas
para as primitivas
Máquinas de estados finitos estendidas (primitivas e PDUs)
-
Estabelecimento bem sucedido
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Estabelecimento bem sucedido
T_Conn_Req
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Req
-
Estabelecimento bem sucedido
T_Conn_Req
Iniciador Respondedor
CR Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Estabelecimento bem sucedido
T_Conn_ReqCR
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Ind
-
Estabelecimento bem sucedido
T_Conn_ReqCR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Resp
-
Estabelecimento bem sucedido
T_Conn_ReqCR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
CC
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
T_Conn_Conf
CR
CCT_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Conf
-
Estabelecimento recusado
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Estabelecimento recusado
T_Conn_Req
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Req
-
Estabelecimento recusado
T_Conn_Req
Iniciador Respondedor
CR Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Estabelecimento recusado
T_Conn_ReqCR
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Ind
-
Estabelecimento recusado
T_Conn_ReqCR
T_Disc_Req
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Disc_Req
-
Estabelecimento recusado
T_Conn_ReqCR
T_Disc_Req
T_Conn_Ind
Iniciador Respondedor
DR
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Estabelecimento recusado
T_Conn_Req
T_Disc_Ind
CR
DRT_Disc_Req
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Disc_Ind
-
Desistência de estabelecimento
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Desistência de estabelecimento
T_Conn_Req
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Req
-
Desistência de estabelecimento
T_Conn_Req
Iniciador Respondedor
CR Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Desistência de estabelecimento
T_Conn_ReqCR
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Ind
-
Desistência de estabelecimento
T_Conn_ReqCR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Conn_Resp
-
Desistência de estabelecimento
T_Conn_ReqCR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
CC
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Desistência de estabelecimento
T_Conn_ReqCR
CCT_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
T_Disc_Req
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Disc_Req
-
Desistência de estabelecimento
T_Conn_ReqCR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
T_Disc_ReqDR
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
-
Desistência de estabelecimento
T_Conn_ReqCR
T_Conn_Ind
Iniciador Respondedor
T_Disc_ReqDR
T_Disc_Ind
Ocioso
Iniciador Respondedor
Conectado
Aguarda Aguarda
T_Disc_Ind
-
Estudo de caso: transporte
Máquinas de estados finitos estendidas contémespecificações do tipo condição/ação Condições para o disparo das transições e ações a serem
tomadas quando as transições forem disparadas
?MSG1/!MSG2 (recebe MSG1 e envia MSG2)
-
Estabelecimento bem sucedido
Ocioso
Iniciador Respondedor
Ocioso
Iniciador Respondedor
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Iniciador Respondedor
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Iniciador Respondedor
CR
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
? CR |
! T_Conn_Ind
CRT_Conn_Ind
Iniciador Respondedor
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
CC
-
Estabelecimento bem sucedido
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
Conectado
? T_Conn_Req |
! CR
? CC |
! T_Conn_Conf
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
T_Conn_Conf
CR
CCT_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
-
Estabelecimento recusado
Ocioso
Iniciador Respondedor
Ocioso
Iniciador Respondedor
-
Estabelecimento recusado
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Iniciador Respondedor
-
Estabelecimento recusado
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Iniciador Respondedor
CR
-
Estabelecimento recusado
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
? CR |
! T_Conn_Ind
CRT_Conn_Ind
Iniciador Respondedor
-
Estabelecimento recusado
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
Ocioso
? CR |
! T_Conn_Ind
? T_Disc_Req |
! DR
CR
T_Disc_Req
T_Conn_Ind
Iniciador Respondedor
-
Estabelecimento recusado
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
Ocioso
? CR |
! T_Conn_Ind
? T_Disc_Req |
! DR
CR
T_Disc_Req
T_Conn_Ind
Iniciador Respondedor
DR
-
Estabelecimento recusado
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
Ocioso
? T_Conn_Req |
! CR
? DR |
! T_Disc_Ind
Ocioso
Espera Resp
Ocioso
? CR |
! T_Conn_Ind
? T_Disc_Req |
! DR
T_Disc_Ind
CR
DRT_Disc_Req
T_Conn_Ind
Iniciador Respondedor
-
Desistência de estabelecimento
Ocioso
Iniciador Respondedor
Ocioso
Iniciador Respondedor
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Iniciador Respondedor
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Iniciador Respondedor
CR
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
? CR |
! T_Conn_Ind
CRT_Conn_Ind
Iniciador Respondedor
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
? T_Conn_Req |
! CR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
CC
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
Ocioso
? T_Conn_Req |
! CR
? T_Disc_Req |
! DR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CR
CCT_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
T_Disc_Req
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
Ocioso
? T_Conn_Req |
! CR
? T_Disc_Req |
! DR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CR
T_Conn_Resp
T_Conn_Ind
Iniciador Respondedor
T_Disc_ReqDR
-
Desistência de estabelecimento
T_Conn_ReqOcioso
Iniciador Respondedor
Espera CC
Ocioso
? T_Conn_Req |
! CR
? T_Disc_Req |
! DR
Ocioso
Espera Resp
Conectado
? CR |
! T_Conn_Ind
? T_Conn_Resp |
! CC
CRT_Conn_Ind
Iniciador Respondedor
T_Disc_ReqDR
T_Disc_Ind
? DR |
! T_Disc_Ind
-
Estudo: protocolo de transporte
Para facilitar a implementação, passa-se dasmáquinas de estados finitos estendidas para tabelasde estados
Tabelas de estados contém os eventos e os estados Eventos chegam em determinados estados
-
Estudo: protocolo de transporte
!DR
ocioso
!DR
ocioso
T-Disc.Req
!T-Con.Con
conectado
CC
!T-Disc.Ind
ocioso
!T-Disc.Ind
ocioso
DR
!CR
esperaCC
T-Con.Req
conectadoesperaCCociosoEstado
Evento
Tabela de estados da Aplicação/Transporte
do transmissor
-
Estudo: protocolo de transporte
!DiscReq
ocioso
!DR
ocioso
T-Disc.Req
!T-Con.Con
conectado
CC
!T-Disc.Ind
ocioso
!T-Disc.Ind
ocioso
DR
!CR
esperaCC
T-Con.Req
conectadoesperaCCociosoEstado
Evento
case estadoocioso:
se evento = T-Con.Reqcomeço
enviar CR;estado = esperaCC;
fim
Tabela de estados da Aplicação/Transporte
do transmissor
-
Estudo: protocolo de transporte
!DR
ocioso
!DR
ocioso
T-Disc.Req
!T-Con.Con
conectado
CC
!T-Disc.Ind
ocioso
!T-Disc.Ind
ocioso
DR
!CR
esperaCC
T-Con.Req
conectadoesperaCCociosoEstado
Evento
case estadoocioso:
se evento = T-Con.Reqcomeço
enviar CR;estado = esperaCC;
fim
esperaCC:case evento
DR:enviar T-Disc.Ind;estado = ocioso;
CC:enviar T-Con.Con;estado = conectado;
T-Disc.Req:enviar DR;estado = ocioso;
Tabela de estados da Aplicação/Transporte
do transmissor
-
Estudo: protocolo de transporte
!DR
ocioso
!DR
ocioso
T-Disc.Req
!T-Con.Con
conectado
CC
!T-Disc.Ind ocioso
!T-Disc.Ind
ocioso
DR
!ConReq
esperaCC
T-Con.Req
conectadoesperaCCociosoEstado
Evento
case estado
esperaCC:case evento
DR:enviar T-Disc.Ind;estado = ocioso;
CC:enviar T-Con.Con;estado = conectado;
T-Disc.Req:enviar DR; estado = ocioso;
conectado:se evento = DRenviar T-Disc.Ind;estado = ocioso;
senãose evento = T-Disc.Reqenviar DR; estado = ocioso;
Tabela de estados da Aplicação/Transporte
do transmissor
-
Estudo: protocolo de transporte
ocioso
!DiscReq
ocioso
!DiscReq
T-Disc.Req
conectado
!ConConf
T-Con.Resp
ocioso
!T-Disc.Ind
ocioso
!T-Disc.Ind
DiscReq
esperaResp
!T-Con.Ind
ConReq
conectadoespera
Resp
ociosoEstado
Evento
Tabela de estados do Transporte/Aplicação
do receptor
-
Estudo: protocolo de transporte
ocioso
!DiscReq
ocioso
!DiscReq
T-Disc.Req
conectado
!ConConf
T-Con.Resp
ocioso
!T-Disc.Ind
ocioso
!T-Disc.Ind
DiscReq
esperaResp
!T-Con.Ind
ConReq
conectadoespera
Resp
ociosoEstado
Evento
case estadoocioso:
se evento = ConReqcomeço
estado = esperaResp;enviar T-Con.Ind;
fim
Tabela de estados do Transporte/Aplicação
do receptor
-
Estudo: protocolo de transporte
ocioso
!DiscReq
ocioso
!DiscReq
T-Disc.Req
conectado
!ConConf
T-Con.Resp
ocioso
!T-DiscInd
ocioso
!T-DiscInd
DiscReq
esperaCR
!T-ConInd
ConReq
conectadoespera
Resp
ociosoEstado
Evento
case estadoocioso:
se evento = ConReqcomeço
estado = espera CR;enviar T-Con.Ind;
fim
esperaResp:case evento
DiscReq:estado = ocioso;enviar T-Disc.Ind;
T-Con.Resp:estado = conectado; enviar CC;
T-Disc.Req:estado = ocioso;enviar DiscReq;
Tabela de estados do Transporte/Aplicação
do receptor
-
Estudo: protocolo de transporte
ocioso
!DiscReq
ocioso
!DiscReq
T-Disc.Req
conectado
!ConConf
T-Con.Resp
ocioso
!T-Disc.Ind
ocioso
!T-Disc.Ind
DiscReq
esperaCR
!T-Con.Ind
ConReq
conectadoesperaCRociosoEstado
Evento
case estado
esperaResp:case evento
DiscReq:estado = ocioso;enviar T-Disc.Ind;
T-Con.Resp:estado = conectado;enviar CC;
T-Disc.Req:estado = ocioso;enviar DiscReq;
conectado:se evento = DiscReqestado = ocioso;enviar T-Disc.Ind;
senãose evento = T-Disc.Reqestado = ocioso;enviar DiscReq;
Tabela de estados do Transporte/Aplicação
do receptor
-
Bibliografia
Tanenbaum – Capítulo 1
Kurose – Capítulo 1
Soares – Capítulos 1, 2, 3 e 5
Stallings – Capítulos 3 e 4
Giozza – Capítulos 1 e 2
A. C. P. Pedroza, “Redes de Computadores:
Arquiteturas e Projetos de Protocolos”, Apostila
do GTA/UFRJ, 2001
O. C. M. B. Duarte, “Redes de Computadores”,
Apostila do GTA/UFRJ, 2004