implementaÇÃo de um protocolo simples
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 PresentationTRANSCRIPT
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
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”
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;
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;
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.
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”
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;
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;
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;
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
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;
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;
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).
Protocolo de Enlace Simples TIPO PROCEDIMENTO Envia; VAR INICIO REPITA ATE FALSO; FIM;
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;
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.
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;
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;
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.
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;
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;
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;
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;
Protocolo de Enlace com Controle de Fluxo
PROCEDIMENTO Recebe;
VAR
INICIOREPITA
ATE FALSO;FIM;
Protocolo de Enlace com Controle de Fluxo PROCEDIMENTO Recebe; VAR Buffer : Dados;
Qrec, Qconf : Quadro; INICIO REPITA ATE FALSO; FIM;
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;
Exemplo de Protocolo: Enlace Simples
Hipóteses: transmissão simplex em meio real (passível perda de quadro) e buffer infinito no receptor.
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;
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;
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;
Protocolo com Controle de Fluxo e Temporização
PROCEDIMENTO Recebe;
VAR Buffer : Dados;Qrec, Qconf : Quadro;Evento : TipoEvento;
INICIOREPITA
ATE FALSO;FIM;
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;
Exemplo de Protocolo: Enlace Simples
Hipóteses: transmissão simplex em meio real, (passível de erro) e buffer finito no receptor.
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;
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;
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
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
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
Exemplo de Protocolo: Enlace Simples
Hipóteses: transmissão simplex em meio real, com buffer finito no receptor.
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);
PROCEDIMENTO Envia;
VAR Buffer : Dados;Qenv : Quadro;Evento : TipoEvento;CrcEnvia : word;ProximoQuadro : bit;
INICIOProximoQuadro:= 0;DeCima (Buffer);REPITA
ATE FALSO;FIM
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
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
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
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
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