implementaÇÃo de um protocolo simples

48
IMPLEMENTAÇÃO de um PROTOCOLO SIMPLES

Upload: saul

Post on 21-Mar-2016

30 views

Category:

Documents


2 download

DESCRIPTION

IMPLEMENTAÇÃO de um PROTOCOLO SIMPLES. Exemplo de Protocolo: Enlace Simples (transferência de um CARACTER entre 2 computadores) Hipóteses : transmissão simplex em meio ideal , (sem erro e buffer infinito no receptor). Réception d’un message – hardware. M. M. H t. M. H t. M. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

IMPLEMENTAÇÃO de um PROTOCOLO SIMPLES

Page 2: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples (transferência de um CARACTER entre 2 computadores)

Hipóteses: transmissão simplex em meio ideal, (sem erro e buffer infinito no receptor).

Page 3: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Réception d’un message – hardware

Page 4: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

mensagemsegmento

datagramaquadro

origemAplicação

físicaHtHnHl MHtHn MHtMM

destino

HtHnHl MHtHn MHtMM Aplicação

física

Exemplo de Protocolo: Enlace Simples

(transferência de um CARACTER entre 2 computadores)

Hipóteses: transmissão simplex em meio ideal, (sem erro) e buffer infinito no receptor.

“A”

Page 5: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples TIPO Dados: byte; PROCEDIMENTO Envia; VAR Buffer: Dados; INICIO REPITA ATE FALSO; FIM;

Protocolo de Enlace Simples TIPO Dados: byte; PROCEDIMENTO Envia; VAR Buffer: Dados; INICIO REPITA De_Cima (Buffer); Pra_Baixo (Buffer); ATE FALSO; FIM;

Page 6: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples TIPO Dados = byte;

PROCEDIMENTO Recebe; VAR Buffer = Dados;

INICIO REPITA ATE FALSO; FIM;

Protocolo de Enlace Simples TIPO Dados = byte;

PROCEDIMENTO Recebe; VAR Buffer = Dados;

INICIO REPITA De_Baixo (Buffer); Pra_Cima (Buffer); ATE FALSO; FIM;

Page 7: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples (transferência de uma MENSAGEM entre 2 computadores)

Hipóteses: transmissão simplex em meio ideal, (sem erro) e buffer infinito no receptor.

Page 8: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

mensagemsegmento

datagramaquadro

origemAplicação

enlacefísica

HtHnHl MHtHn MHtMM

destino

HtHnHl MHtHn MHtMM Aplicação

enlacefísica

Exemplo de Protocolo: Enlace Simples (transferência de uma MENSAGEM entre 2 computadores)

Hipóteses: transmissão simplex em meio ideal, (sem erro) e buffer infinito no receptor.

“Alô Mamãe”

Page 9: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples

TIPO Dados =

Quadro =

PROCEDIMENTO Envia; VAR INICIO

FIM;

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte; Quadro = PROCEDIMENTO Envia; VAR INICIO

FIM;

Page 10: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples

TIPO Dados = VETOR [0..max] de byte;

Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM;

PROCEDIMENTO Envia; VAR Buffer:; Qenv: INICIO

FIM;

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM; PROCEDIMENTO Envia; VAR Buffer: Dados; Qenv: Quadro; INICIO

De_Cima (Buffer); Qenv.Info := Buffer;

EnviaQuadro (Qenv);

FIM;

Page 11: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples

TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM;

PROCEDIMENTO Recebe; VAR Buffer : Dados; Qrev : Quadro; INICIO

;

FIM;

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM; PROCEDIMENTO Recebe; VAR Buffer : Dados; Qrev : Quadro; INICIO RecebeQuadro (Qrec); Buffer := Qrev.Info;

Pra_Cima (Buffer);

;

FIM;

Page 12: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

mensagemsegmento

datagramaquadro

origemAplicação

enlacefísica

HtHnHl MHtHn MHtMM

destino

HtHnHl MHtHn MHtMM Aplicação

enlacefísica

Exemplo de Protocolo: Enlace Simples (transferência de uma MENSAGEM entre 2 computadores)

“ALO MAMAE ” 9

Page 13: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM; PROCEDIMENTO Envia; VAR Buffer: Dados; Qenv: Quadro; Tquadro: byte; INICIO

De_Cima (Buffer); Tquadro := Calcula_Tquadro;

Qenv.Info := Buffer; Qenv.Tamanho := Tquadro;

EnviaQuadro (Qenv); FIM;

Page 14: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples

TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM;

PROCEDIMENTO Recebe; VAR Buffer : Dados; Qrev : Quadro; Carater, Tquadro, i : byte; INICIO

;

FIM;

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Tamanho : byte; Info : Dados; FIM; PROCEDIMENTO Recebe; VAR Buffer : Dados; Qrev : Quadro; Carater, Tquadro, i : byte; INICIO De_Baixo (Tquadro); Qrev.Tamanho:= Tquadro;

ENQUANTO Tquadro > 0 INICIO

De_Baixo (Carater); Qrev.Info [ i] := Carater;

i := i + 1; Tquadro := Tquadro – 1;

FIM Buffer:= Qenv.info;

PraCima (Buffer); FIM;

Page 15: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples (transferência de uma MENSAGEM entre 2 computadores numa LAN – Local Area Netwok)

Hipóteses: transmissão simplex em meio ideal, (sem erro e buffer infinito no receptor).

Page 16: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples TIPO PROCEDIMENTO Envia; VAR INICIO REPITA ATE FALSO; FIM;

Page 17: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples

TIPO Dados = VETOR [0..max] de byte;

Quadro = REGISTRODestino : byte;Tamanho : byte;Origem : byte;Info : Dados;

FIM;

PROCEDIMENTO Envia;

VAR Buffer: Dados;Qenv : Quadro;

INICIOREPITA

ATE FALSO;FIM;

Page 18: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte;

Quadro = REGISTRO Destino : byte; Tamanho : byte; Origem : byte; Info : Dados; FIM PROCEDIMENTO Envia; VAR Buffer : Dados; Qenv : Quadro; Tquadro : Byte; INICIO REPITA DeCima (Buffer); Qenv.Info:= buffer; ( Tquadro := Calcula_Tquadro; Qenv.Tamanho := Tquadro; Qenv.Destino := MaquinaDestino; Qenv.Origem := MaquinaOrigem ); EnviaQuadro (Qenv); ATE FALSO FIM.

Page 19: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples

TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Destino : byte; Tamanho : byte; Origem : byte; Info : Dados; FIM; PROCEDIMENTO Recebe; VAR Buffer : Dados;

Qrec : Quadro; INICIO REPITA ATE FALSO; FIM;

Page 20: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Destino : byte; Tamanho : byte; Origem : byte; Info : Dados; FIM;

PROCEDIMENTO Recebe; VAR Buffer : Dados;

Qrec : Quadro; INICIO REPITA RecebeQuadro (Qrec); Buffer := Qrec.Info; PraCima (Buffer);

ATE FALSO;

FIM;

Page 21: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples

Hipóteses: transmissão simplex em meio ideal, (sem perda de quadro nem erro) mas...Com buffer finito no receptor.

Page 22: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace Simples (IDEALcom buffer Infinito)

TIPO Dados = VETOR [0..max] de byte;

Quadro = REGISTRODestino : byte;Tamanho : byte;Origem : byte;Info : Dados;

FIM;

PROCEDIMENTO Envia;

VAR Buffer: Dados;Qenv : Quadro;

INIC IOREPITA

DeCima ( Buffer);Qenv.Info:= buffer;EnviaQuadro ( Qenv);

ATE FALSO;FIM;

Page 23: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace com Controle de Fluxo

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem : byte;Info : Dados;

FIM;

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;

INICIOREPITA

ATE FALSO;FIM;

Page 24: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace com Controle de Fluxo

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem :byte;Info : Dados;

FIM;TipoEvento = ( ChegouQuadro);

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento: TipoEvento;

INICIOREPITA

ATE FALSO;FIM;

Page 25: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace com Controle de Fluxo

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem :byte;Info : Dados;

FIM;TipoEvento = (ChegouQuadro);

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento: TipoEvento;

INICIOREPITA

DeCima (Buffer);Qenv.Info:= Buffer;EnviaQuadro (Qenv);Espera (Evento);

ATE FALSO;FIM;

Page 26: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace com Controle de Fluxo

PROCEDIMENTO Recebe;

VAR

INICIOREPITA

ATE FALSO;FIM;

Page 27: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace com Controle de Fluxo PROCEDIMENTO Recebe; VAR Buffer : Dados;

Qrec, Qconf : Quadro; INICIO REPITA ATE FALSO; FIM;

Page 28: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo de Enlace com Controle de Fluxo PROCEDIMENTO Recebe; VAR Buffer : Dados;

Qrec, Qconf : Quadro; Evento : TipoEvento; INICIO REPITA RecebeQuadro (Qrec); Buffer:= Qrec.Info; Pra_Cima (Buffer); EnviaQuadro (Q conf); ATE FALSO; FIM;

Page 29: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples

Hipóteses: transmissão simplex em meio real (passível perda de quadro) e buffer infinito no receptor.

Page 30: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo e Temporização

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem :byte;Info : Dados;

FIM

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;

INICIO

REPITA

ATE FALSO;FIM;

Page 31: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo e Temporização

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem :byte;Info : Dados;

FIMTipoEvento = (ChegouQuadro, Temporização);

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento : TipoEvento;

INICIO

ATE FALSO;FIM;

Page 32: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo e Temporização

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem :byte;Info : Dados;

FIMTipoEvento = (ChegouQuadro, Temporização);

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento : TipoEvento;

INICIODeCima (Buffer);REPITA

Qenv.Info:= Buffer;EnviaQuadro (Qenv);LigaTemporizador;Espera (Evento);SE Evento = ChegouQuadro ENTAO

DeCima (Buffer);ATE FALSO;

FIM;

Page 33: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo e Temporização

PROCEDIMENTO Recebe;

VAR Buffer : Dados;Qrec, Qconf : Quadro;Evento : TipoEvento;

INICIOREPITA

ATE FALSO;FIM;

Page 34: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo e Temporização

PROCEDIMENTO Recebe;

VAR Buffer : Dados;Qrec, Qconf : Quadro;Evento : TipoEvento;

INICIOREPITA

Espera (Evento);SE Evento = ChegouQuadro ENTAO

INICIODe_Baixo ( Qrec); Buffer:=Qrec.Info;

Pra_Cima ( (Buffer);Pra_Baixo ( Qconf);

FIM;ATE FALSO;

FIM;

Page 35: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples

Hipóteses: transmissão simplex em meio real, (passível de erro) e buffer finito no receptor.

Page 36: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo, Temporização e Controle de Erro

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

FIM;TipoEvento= ( );

PROCEDIMENTO Envia;VAR Buffer : Dados;

Qenv : Quadro;Evento : TipoEvento;

INICIODeCima (Buffer);REPITA

ATE FALSO;FIM;

Page 37: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo, Temporização e Controle de Erro

TIPO Dados = VETOR [0..max] de byte;Quadro = REGISTRO

Destino : byte;Tamanho : byte;Origem : byte;Info : Dados;Crc : word;

FIM;TipoEvento= (ChegouQuadroOk, Temporização, ErroCrc);

PROCEDIMENTO Envia;VAR Buffer : Dados;

Qenv : Quadro;Evento : TipoEvento;CrcEnvia : word;

INICIODeCima (Buffer);REPITA

Qenv.Info:= Buffer;CrcEnvia:= CalculaCRC;Qenv.Crc:= CrcEnvia;EnviaQuadro (Qenv);LigaTemporizador;Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

DeCima (Buffer);ATE FALSO;

FIM;

Page 38: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo, Temporização e Controle de Erro

PROCEDIMENTO Recebe;

VAR Qrec, Qconf, Qerro : Quadro;Evento : TipoEvento;CrcRec, CrcEnv : word;

INICIOREPITA

Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INICIO

SENAO EnviaQuadro (Qerro);FIM;

ATE FALSO;FIM

Page 39: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo, Temporização e Controle de Erro

PROCEDIMENTO Recebe;

VAR Qrec, Qconf, Qerro : Quadro;Evento : TipoEvento;CrcRec, CrcEnv : word;

INICIOREPITA

Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INI CIODe_Baixo ( Qrec); CrcRec: CalculaCrc;CrcEnv: Qrec.Crc;

SE CrcRec = CrcEnv ENTAO

SENAO EnviaQuadro (Qerro);FIM;

ATE FALSO;FIM

Page 40: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo, Temporização e Controle de Erro

PROCEDIMENTO Recebe;

VAR Qrec, Qconf, Qerro : Quadro;Evento : TipoEvento;CrcRec, CrcEnv : word;

INICIOREPITA

Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INI CIODe_Baixo ( Qrec); CrcRec: CalculaCrc;CrcEnv: Qrec.Crc;

SE CrcRec = CrcEnv ENTAOINICIO

PraCima (Qrec.Info);EnviaQuadro (Qconf);

FIM;SENAO EnviaQuadro (Qerro);

FIM;ATE FALSO;

FIM

Page 41: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Exemplo de Protocolo: Enlace Simples

Hipóteses: transmissão simplex em meio real, com buffer finito no receptor.

Page 42: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

Protocolo com Controle de Fluxo, Temporização, Controle de erro e bit de seqüência (controle contra duplicação de quadros)

TIPO Dados = VETOR [0..max] de byte; Quadro = REGISTRO Destino : byte; Tamanho : byte; Origem : byte; Sequencia : bit; Info : Dados; Crc : word; FIM; TipoEvento = (ChegouQuadroOk, Temporização, ErroCrc);

Page 43: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento : TipoEvento;CrcEnvia : word;ProximoQuadro : bit;

INICIOProximoQuadro:= 0;DeCima (Buffer);REPITA

ATE FALSO;FIM

Page 44: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento : TipoEvento;CrcEnvia : word;ProximoQuadro : bit;

INICIOProximoQuadro:= 0;DeCima (Buffer);REPITA

Qenv.Info:= Buffer;CrcEnvia:= CalculaCRC;Qenv.Crc:= CrcEnvia;Qenv.Sequencia:= ProximoQuadro;EnviaQuadro (Qenv);LigaTemporizador;Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

ATE FALSO;FIM

Page 45: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

PROCEDIMENTO Envia;

VAR Buffer : Dados;Qenv : Quadro;Evento : TipoEvento;CrcEnvia : word;ProximoQuadro : bit;

INICIOProximoQuadro:= 0;DeCima (Buffer);REPITA

Qenv.Info:= Buffer;CrcEnvia:= CalculaCRC;Qenv.Crc:= CrcEnvia;Qenv.Sequencia:= ProximoQuadro;EnviaQuadro (Qenv);LigaTemporizador;Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INICIODeCima (Buffer);ProximoQuadro:= 1 - ProximoQuadro;

FIM;ATE FALSO;

FIM

Page 46: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

PROCEDIMENTO Recebe;

VAR Buffer : Dados;Qrec, Qconf : Quadro;Evento : TipoEvento;CrcRec, CrcEnv : word;QuadroEsperado :bit;

INICIOQuadroEsperado:= 0;REPITA

Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INICIO

FIM;ATE FALSO;

FIM

Page 47: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

PROCEDIMENTO Recebe;

VAR Buffer : Dados;Qrec, Qconf : Quadro;Evento : TipoEvento;CrcRec, CrcEnv : word;QuadroEsperado :bit;

INICIOQuadroEsperado:= 0;REPITA

Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INICIOObtemQuadro (Qrec);CrcRec: CalculaCrc;CrcEnv: Qrec.Crc;SE CrcRec = CrcEnv ENTAO

SE Qrec.Sequencia = QuadroEsperado ENTAO

FIM;ATE FALSO;

FIM

Page 48: IMPLEMENTAÇÃO de um  PROTOCOLO SIMPLES

PROCEDIMENTO Recebe;

VAR Buffer : Dados;Qrec, Qconf : Quadro;Evento : TipoEvento;CrcRec, CrcEnv : word;QuadroEsperado :bit;

INICIOQuadroEsperado:= 0;REPITA

Espera (Evento);SE Evento = ChegouQuadroOk ENTAO

INICIOObtemQuadro (Qrec);CrcRec: CalculaCrc;CrcEnv: Qrec.Crc;SE CrcRec = CrcEnv ENTAO

SE Qrec.Sequencia = QuadroEsperado ENTAO INICIO

Buffer:=Qrec.Info;PraCima (Buffer);QuadroEsperado := 1 - QuadroEsperad

FIM;EnviaQuadro (Qconf);

FIM;ATE FALSO;

FIM