Pergunta

Eu estava lendo um livro descrevendo o Go-Back-N (GBN) protocolo com Máquinas de Estado Finito, como na foto abaixo:enter image description here

enter image description here

$\Lambda$ significa apenas "estado inicial" ou "nenhuma ação", dependendo do contexto.Minhas perguntas são

  1. Esta é a animações interativas link para GBN https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/go-back-n-protocol/index.html.Vamos dizer que nós somos o envio de pacotes de 0, pacote 1 pacote e 2, e 1 de pacotes é perdida beforen chegar receptor.Então, quando é tempo de espera, GBN vai fazer remetente re-enviar o pacote 1 pacote e 2, E eu achei uma coisa interessante que é,se você tentar o link com o cenário acima e você enviar o pacote 3 pouco antes de o tempo limite ocorre,esta ação repor o temporizador, porque você pode ver o tempo de espera é adiada(caso contrário, você vai ver o pacote 1,2,3 voando na tela).Mas, de acordo com o remetente do FSM, depois que você enviar o pacote 3, de tempo limite ocorre imediatamente, em seguida, o remetente será re-enviar o pacote 1 pacote e 2, mas isso não aconteceu como o limite de tempo for adiada, o que contradiz o fato de que o tempo é apenas obter resetado quando base = nextseqnum?

  2. No receptor do FSM, por que ele precisa para definir expectedseqnum = 1 e fazer um pacote baseado em que?por que não podemos definir expectedseqnum = 0 como o inicializada somente a ação?

Foi útil?

Solução

Vou abordar a questão 2 primeiro, pois parece mais fácil do que o outro.A resposta é simplesmente porque ambos os transmissores começar a etiquetar a sua carga de mensagens de 1, nomeadamente com nextseqnum = 1;você pode ver isso é assim para o remetente a partir do canto superior esquerdo da imagem que você postou.Não se deixe enganar pelo fato de que o receptor emite o sndpkt = make_pkt(0, ACK, checksum) no início;que o primeiro pacote é apenas criado, mas não enviada (que seria se o receptor de bater o default estado).Por outro lado, pode haver uma inconsistência na maneira como o applet enumera seus pacotes, pois começa a partir de 0.


Pergunta 1 parece perguntar:se uma seqüência de pacotes 0, 1, 2 é enviada e

  • Pacote 1 é perdida
  • Um novo pacote, 3, é enviada pouco antes do limite de tempo

em seguida, sem tempo limite ocorre, embora nenhuma instrução parece ser de codificação para isso.Embora eu contei a passagem do tempo com as minhas mãos, a sua observação parece ser a correta:dadas as condições acima, mediante o envio de um novo pacote, os eventos associados a um tempo de espera não se manifestar.Isto pode ser devido a um pequeno erro na aplicação, embora gostaria de verificar mais antes de contactar os autores de livros.

o que contradiz o fato de que o tempo é apenas obter resetado quando base = nextseqnum?

Cuidado!O temporizador é também redefinida após receber uma confirmação de que não é o último, como mostrado na parte inferior da Figura 3.20.No entanto, eu não acho que a experiência é afetada por esse comportamento, pois o desencadeamento de condições não forem atendidas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a cs.stackexchange
scroll top