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