Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Temporização e retransmissão
Transferência confiável
Controle de fluxo
controle de congestionamento
Porque?
Introduzindo o paralelismo
Ttrans = L/R
Em outras palavras: ele só foi capaz de enviar 1000 bytes em 30,008 ms.
O pare e espere no tempo zero manda o pacote, quando o pirmeiro bit chega
ele manda a confirmação e só depois da confirmação ele envia o próximo em um tempo rtt +
transmissão
Se o pacote nao chegar ele envia novamente o pacote e enquanto isso a janela
nao prospera
O problema é que se um pacote se perder a janela nao anda, para resolver usa-
se a repetição seletiva, deixando a janela andar e retransmitindo somente os pacotes com erro
São retransmitidos apenas pacotes suspeitos de terem sido recebidos com erro
(perdidos ou corrompidos)
A repetição seletiva resolve o problema do Go-Bank-N
CONTROLE DE FLUXO
Buffers – Recepção
Hospedeiros de cada lado de uma conexão TCP reservam um buffer de recepção para a
conexão;
O processo de aplicação associado lerá os dados a partir desse buffer, mas não
necessariamente no momento em que são recebidos;
Se a aplicação for relativamente lenta na leitura dos dados, o remetente pode saturar
o buffer de recepção.
deixa a transmissão mais macia, sem muitas perdas e sem muitas retransmissões
Controle de fluxo
TCP oferece controle de fluxo fazendo com que o remetente mantenha uma variável
denominada janela de recepção;
Como o TCP é full-duplex, o remetente de cada lado da conexão mantém uma janela
de recepção distinta.
Suponha que o host A esteja enviando um arquivo grande ao host B por uma conexão
TCP. O hospedeiro B aloca um buffer de recepção – RcvBuffer.
De tempos em tempos, o processo de aplicação no host B faz a leitura do buffer. Duas
importantes variáveis são mantidas pelo TCP:
Exemplo:
Neste caso, como o TCP não pode saturar o buffer de recepção, devemos ter:
O host B diz ao hospedeiro A quanto espaço disponível ele tem no buffer da conexão
colocando o valor atual de rwnd no campo da janela de recepção de cada segmento que envia
a A.
Com base nisso, o que podemos dizer da relação entre LastByteSent, LastByteAcked e
rwnd?
Suponha que rwnd = 0. Após anunciar ao host A que rwnd=0, imagine que B não tenha
nada para enviar ao host A.
O host A nunca será informado de que foi aberto algum espaço no buffer de recepção
do host B!
Como resolver?