65
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

Modelo em camadas

  • Upload
    trantu

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 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

Page 2: Modelo em camadas

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)

Page 3: Modelo em camadas

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

Page 4: Modelo em camadas

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

Page 5: Modelo em camadas

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

Page 6: Modelo em camadas

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

Page 7: Modelo em camadas

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

Page 8: Modelo em camadas

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)

Page 9: Modelo em camadas

Estabelecimento bem sucedido

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 10: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_Req

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Req

Page 11: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_Req

Iniciador Respondedor

CR Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 12: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_ReqCR

T_Conn_Ind

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Ind

Page 13: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_ReqCR

T_Conn_Resp

T_Conn_Ind

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Resp

Page 14: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_ReqCR

T_Conn_Resp

T_Conn_Ind

Iniciador Respondedor

CC

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 15: Modelo em camadas

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

Page 16: Modelo em camadas

Estabelecimento recusado

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 17: Modelo em camadas

Estabelecimento recusado

T_Conn_Req

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Req

Page 18: Modelo em camadas

Estabelecimento recusado

T_Conn_Req

Iniciador Respondedor

CR Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 19: Modelo em camadas

Estabelecimento recusado

T_Conn_ReqCR

T_Conn_Ind

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Ind

Page 20: Modelo em camadas

Estabelecimento recusado

T_Conn_ReqCR

T_Disc_Req

T_Conn_Ind

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Disc_Req

Page 21: Modelo em camadas

Estabelecimento recusado

T_Conn_ReqCR

T_Disc_Req

T_Conn_Ind

Iniciador Respondedor

DR

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 22: Modelo em camadas

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

Page 23: Modelo em camadas

Desistência de estabelecimento

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 24: Modelo em camadas

Desistência de estabelecimento

T_Conn_Req

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Req

Page 25: Modelo em camadas

Desistência de estabelecimento

T_Conn_Req

Iniciador Respondedor

CR Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 26: Modelo em camadas

Desistência de estabelecimento

T_Conn_ReqCR

T_Conn_Ind

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Ind

Page 27: Modelo em camadas

Desistência de estabelecimento

T_Conn_ReqCR

T_Conn_Resp

T_Conn_Ind

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

T_Conn_Resp

Page 28: Modelo em camadas

Desistência de estabelecimento

T_Conn_ReqCR

T_Conn_Resp

T_Conn_Ind

Iniciador Respondedor

CC

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 29: Modelo em camadas

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

Page 30: Modelo em camadas

Desistência de estabelecimento

T_Conn_ReqCR

T_Conn_Resp

T_Conn_Ind

Iniciador Respondedor

T_Disc_ReqDR

Ocioso

Iniciador Respondedor

Conectado

Aguarda Aguarda

Page 31: Modelo em camadas

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

Page 32: Modelo em camadas

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)

Page 33: Modelo em camadas

Estabelecimento bem sucedido

Ocioso

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Page 34: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_ReqOcioso

Iniciador Respondedor

Espera CC

? T_Conn_Req |

! CR

Ocioso

Iniciador Respondedor

Page 35: Modelo em camadas

Estabelecimento bem sucedido

T_Conn_ReqOcioso

Iniciador Respondedor

Espera CC

? T_Conn_Req |

! CR

Ocioso

Iniciador Respondedor

CR

Page 36: Modelo em camadas

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

Page 37: Modelo em camadas

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

Page 38: Modelo em camadas

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

Page 39: Modelo em camadas

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

Page 40: Modelo em camadas

Estabelecimento recusado

Ocioso

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Page 41: Modelo em camadas

Estabelecimento recusado

T_Conn_ReqOcioso

Iniciador Respondedor

Espera CC

? T_Conn_Req |

! CR

Ocioso

Iniciador Respondedor

Page 42: Modelo em camadas

Estabelecimento recusado

T_Conn_ReqOcioso

Iniciador Respondedor

Espera CC

? T_Conn_Req |

! CR

Ocioso

Iniciador Respondedor

CR

Page 43: Modelo em camadas

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

Page 44: Modelo em camadas

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

Page 45: Modelo em camadas

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

Page 46: Modelo em camadas

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

Page 47: Modelo em camadas

Desistência de estabelecimento

Ocioso

Iniciador Respondedor

Ocioso

Iniciador Respondedor

Page 48: Modelo em camadas

Desistência de estabelecimento

T_Conn_ReqOcioso

Iniciador Respondedor

Espera CC

? T_Conn_Req |

! CR

Ocioso

Iniciador Respondedor

Page 49: Modelo em camadas

Desistência de estabelecimento

T_Conn_ReqOcioso

Iniciador Respondedor

Espera CC

? T_Conn_Req |

! CR

Ocioso

Iniciador Respondedor

CR

Page 50: Modelo em camadas

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

Page 51: Modelo em camadas

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

Page 52: Modelo em camadas

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

Page 53: Modelo em camadas

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

Page 54: Modelo em camadas

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

Page 55: Modelo em camadas

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

Page 56: Modelo em camadas

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

Page 57: Modelo em camadas

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

Page 58: Modelo em camadas

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

Page 59: Modelo em camadas

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

Page 60: Modelo em camadas

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

Page 61: Modelo em camadas

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

Page 62: Modelo em camadas

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

Page 63: Modelo em camadas

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

Page 64: Modelo em camadas

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

Page 65: Modelo em camadas

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