Da especificação à implementação - UERJrubi/cursos/rc/Parte1c.pdf · 2020. 3. 13. · Estudo:...

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 estendidas Tabelas de estados Pseudocódigos

Transcript of Da especificação à implementação - UERJrubi/cursos/rc/Parte1c.pdf · 2020. 3. 13. · Estudo:...

  • 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