Top Banner
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
65

Modelo em camadas

Jan 07, 2017

Download

Documents

trantu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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