Download - Modelo em camadas
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 estendida
� Tabelas de estados
� Pseudocódigo
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 estendida
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