Você está na página 1de 66

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 a
rede (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 estado


específico que consiste em todos os valores de suas
variáveis
 Para cada estado, existem zero ou mais transições
possíveis para outros estados
 Uma transição pode ocorrer quando um dado é
enviado, um dado chega ou um temporizador
estoura
 Gráfico direcionado que mostra todos os estados
como nós e as transições como arcos diferenciados
Máquinas de estados finitos

 Teoria de grafos indica quais estados são


alcançáveis e quais não o são (análise de
alcançabilidade)
 Eventos tais como a chegada de dados e o estouro
de temporizadores ocorrem
 Alcançabilidade usada para detectar erros na
especificaçã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ão
há 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 Iniciador Respondedor

Ocioso

Aguarda Aguarda

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
Ocioso
T_Conn_Req

Aguarda Aguarda

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso

Aguarda Aguarda

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Conn_Ind

Aguarda Aguarda

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind

T_Conn_Resp

Aguarda Aguarda

T_Conn_Resp

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind

T_Conn_Resp
CC
Aguarda Aguarda

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind

T_Conn_Resp
CC
T_Conn_Conf Aguarda Aguarda

T_Conn_Conf

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

Ocioso

Aguarda Aguarda

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
Ocioso
T_Conn_Req

Aguarda Aguarda

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso

Aguarda Aguarda

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Conn_Ind

Aguarda Aguarda

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Disc_Req
T_Disc_Req

Aguarda Aguarda

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind

T_Disc_Req
DR
Aguarda Aguarda

Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Disc_Ind
T_Disc_Req
DR
T_Disc_Ind Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

Ocioso

Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
Ocioso
T_Conn_Req

Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso

Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Conn_Ind

Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind

T_Conn_Resp

Aguarda Aguarda

T_Conn_Resp

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind

T_Conn_Resp
CC
Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Disc_Req T_Disc_Req
T_Conn_Resp
CC
Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Disc_Req
DR T_Conn_Resp

Aguarda Aguarda

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso
T_Conn_Ind
T_Disc_Req
DR
T_Disc_Ind
Aguarda Aguarda

T_Disc_Ind

Conectado
Estudo de caso: transporte

 Máquinas de estados finitos estendidas contém


especificaçõ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

Iniciador Respondedor Iniciador Respondedor

Ocioso Ocioso
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
Ocioso Ocioso

? T_Conn_Req |
! CR

Espera CC
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso

? T_Conn_Req |
! CR

Espera CC
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
! CR ! T_Conn_Ind

Espera CC Espera Resp


Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Conn_Resp ! CR ! T_Conn_Ind

Espera CC Espera Resp

? T_Conn_Resp |
! CC

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Conn_Resp ! CR ! T_Conn_Ind
CC
Espera CC Espera Resp

? T_Conn_Resp |
! CC

Conectado
Estabelecimento bem sucedido

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Conn_Resp ! CR ! T_Conn_Ind
CC
T_Conn_Conf Espera CC Espera Resp

? CC | ? T_Conn_Resp |
! T_Conn_Conf ! CC

Conectado Conectado
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

Ocioso Ocioso
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
Ocioso Ocioso

? T_Conn_Req |
! CR

Espera CC
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso

? T_Conn_Req |
! CR

Espera CC
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
! CR ! T_Conn_Ind

Espera CC Espera Resp


Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Disc_Req ! CR ! T_Conn_Ind

Espera CC Espera Resp

? T_Disc_Req |
! DR

Ocioso
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Disc_Req ! CR ! T_Conn_Ind
DR
Espera CC Espera Resp

? T_Disc_Req |
! DR

Ocioso
Estabelecimento recusado

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Disc_Req ! CR ! T_Conn_Ind
DR
T_Disc_Ind Espera CC Espera Resp

? DR | ? T_Disc_Req |
! T_Disc_Ind ! DR

Ocioso Ocioso
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

Ocioso Ocioso
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
Ocioso Ocioso

? T_Conn_Req |
! CR

Espera CC
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso

? T_Conn_Req |
! CR

Espera CC
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
! CR ! T_Conn_Ind

Espera CC Espera Resp


Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Conn_Resp ! CR ! T_Conn_Ind

Espera CC Espera Resp

? T_Conn_Resp |
! CC

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
? T_Conn_Req | ? CR |
T_Conn_Resp ! CR ! T_Conn_Ind
CC
Espera CC Espera Resp

? T_Conn_Resp |
! CC

Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
T_Disc_Req ? T_Conn_Req | ? CR |
T_Conn_Resp ! CR ! T_Conn_Ind
CC
Espera CC Espera Resp

? T_Disc_Req | ? T_Conn_Resp |
! DR ! CC

Ocioso Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
T_Disc_Req ? T_Conn_Req | ? CR |
DR T_Conn_Resp ! CR ! T_Conn_Ind

Espera CC Espera Resp

? T_Disc_Req | ? T_Conn_Resp |
! DR ! CC

Ocioso Conectado
Desistência de estabelecimento

Iniciador Respondedor Iniciador Respondedor

T_Conn_Req
CR Ocioso Ocioso
T_Conn_Ind
T_Disc_Req ? T_Conn_Req | ? CR |
DR ! CR ! T_Conn_Ind
T_Disc_Ind
Espera CC Espera Resp

? T_Disc_Req | ? T_Conn_Resp |
! DR ! CC

Ocioso ? DR | Conectado
! T_Disc_Ind
Estudo: protocolo de transporte

 Para facilitar a implementação, passa-se das


máquinas de estados finitos estendidas para tabelas
de estados
 Tabelas de estados contém os eventos e os estados
 Eventos chegam em determinados estados
Estudo: protocolo de transporte

Estado ocioso esperaCC conectado


Evento

T-Con.Req !CR
esperaCC

DR !T-Disc.Ind !T-Disc.Ind
ocioso ocioso

CC !T-Con.Con
conectado

T-Disc.Req !DR !DR


ocioso ocioso

Tabela de estados da Aplicação/Transporte


do transmissor
Estudo: protocolo de transporte

case estado
Estado ocioso esperaCC conectado ocioso:
Evento se evento = T-Con.Req
começo
T-Con.Req !CR
enviar CR;
esperaCC estado = esperaCC;
!T-Disc.Ind !T-Disc.Ind
fim
DR
ocioso ocioso

CC !T-Con.Con
conectado

T-Disc.Req !DR !DiscReq


ocioso ocioso

Tabela de estados da Aplicação/Transporte


do transmissor
Estudo: protocolo de transporte

case estado
Estado ocioso esperaCC conectado ocioso:
Evento se evento = T-Con.Req
começo
T-Con.Req !CR
enviar CR;
esperaCC estado = esperaCC;
!T-Disc.Ind !T-Disc.Ind
fim
DR
ocioso ocioso esperaCC:
case evento
CC !T-Con.Con
DR:
conectado
enviar T-Disc.Ind;
T-Disc.Req !DR !DR estado = ocioso;
ocioso ocioso
CC:
enviar T-Con.Con;
estado = conectado;
T-Disc.Req:
Tabela de estados da Aplicação/Transporte enviar DR;
estado = ocioso;
do transmissor
Estudo: protocolo de transporte

case estado
Estado ocioso esperaCC conectado esperaCC:
Evento
case evento
!ConReq
DR:
T-Con.Req
esperaCC
enviar T-Disc.Ind;
estado = ocioso;
DR !T-Disc.Ind !T-Disc.Ind CC:
ocioso ocioso enviar T-Con.Con;
estado = conectado;
CC !T-Con.Con T-Disc.Req:
conectado enviar DR;
estado = ocioso;
T-Disc.Req !DR !DR
ocioso ocioso
conectado:
se evento = DR
enviar T-Disc.Ind;
estado = ocioso;
Tabela de estados da Aplicação/Transporte senão
se evento = T-Disc.Req
do transmissor enviar DR;
estado = ocioso;
Estudo: protocolo de transporte

Estado ocioso espera conectado


Evento Resp

ConReq esperaResp
!T-Con.Ind

DiscReq ocioso ocioso


!T-Disc.Ind !T-Disc.Ind

T-Con.Resp conectado
!ConConf

T-Disc.Req ocioso ocioso


!DiscReq !DiscReq

Tabela de estados do Transporte/Aplicação


do receptor
Estudo: protocolo de transporte

case estado
Estado ocioso espera conectado ocioso:
Evento Resp se evento = ConReq
começo
ConReq esperaResp
estado = esperaResp;
!T-Con.Ind enviar T-Con.Ind;
ocioso ocioso
fim
DiscReq
!T-Disc.Ind !T-Disc.Ind

T-Con.Resp conectado
!ConConf

T-Disc.Req ocioso ocioso


!DiscReq !DiscReq

Tabela de estados do Transporte/Aplicação


do receptor
Estudo: protocolo de transporte

case estado
Estado ocioso espera conectado ocioso:
Evento Resp se evento = ConReq
começo
ConReq esperaCR
estado = espera CR;
!T-ConInd enviar T-Con.Ind;
ocioso ocioso
fim
DiscReq
!T-DiscInd !T-DiscInd esperaResp:
case evento
T-Con.Resp conectado
DiscReq:
!ConConf
estado = ocioso;
ocioso ocioso
enviar T-Disc.Ind;
T-Disc.Req
!DiscReq !DiscReq
T-Con.Resp:
estado = conectado;
enviar CC;
T-Disc.Req:
Tabela de estados do Transporte/Aplicação estado = ocioso;
enviar DiscReq;
do receptor
Estudo: protocolo de transporte

case estado
Estado ocioso esperaCR conectado esperaResp:
Evento
case evento
esperaCR
DiscReq:
ConReq
!T-Con.Ind
estado = ocioso;
enviar T-Disc.Ind;
DiscReq ocioso ocioso T-Con.Resp:
!T-Disc.Ind !T-Disc.Ind estado = conectado;
enviar CC;
T-Con.Resp conectado T-Disc.Req:
!ConConf estado = ocioso;
enviar DiscReq;
T-Disc.Req ocioso ocioso
conectado:
!DiscReq !DiscReq
se evento = DiscReq
estado = ocioso;
enviar T-Disc.Ind;
Tabela de estados do Transporte/Aplicação senão
se evento = T-Disc.Req
do receptor estado = ocioso;
enviar DiscReq;
Bibliografia

 Tanenbaum – Capítulo 1
 Kurose – Capítulo 1
 L. F. G. Soares, G. Lemos e S. Colcher, “Redes
de Computadores: das LANs, MANs e WANs às
Redes ATM”, 2a edição, Editora Campus, 1995 –
Capítulos 1, 2, 3 e 5
 W. Stallings, “Wireless Communications and
Networks”, Prentice Hall, 2002 – Capítulos 3 e 4
 W. F. Giozza, J. F. M. de Araújo, J. A. B. Moura
e J. P. Sauvé, “Redes Locais de Computadores:
Tecnologia e Aplicações”, McGraw-Hill, 1986 –
Capítulos 1 e 2
Bibliografia

 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

Você também pode gostar