Da especificação à implementação - UERJrubi/cursos/rc/Parte1d.pdf · 2019-03-18 · para as...

Post on 27-Feb-2020

4 views 0 download

Transcript of Da especificação à implementação - UERJrubi/cursos/rc/Parte1d.pdf · 2019-03-18 · para as...

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