SlideShare uma empresa Scribd logo
1 de 23
Gerson Alberto Leiria Nunes
gersonnunes@furg.br
Go-back-N: visão geral
 remetente: até N pacotes
não reconhecidos na
pipeline
 destinatário: só envia
ACKs cumulativos
◦ não envia pct ACK se
houver uma lacuna
 remetente: tem
temporizador para pct
sem ACK mais antigo
◦ se o temporizador expirar:
retransmite todos os
pacotes sem ACK
Repetição seletiva: visão geral
 remetente: até pacotes não
reconhecidos na pipeline
 destinatário: reconhece (ACK)
pacotes individuais
 remetente: mantém
temporizador para cada pct
sem ACK
◦ se o temporizador expirar:
retransmite apenas o pacote
sem ACK
remetente:
 # seq. de k bits no cabeçalho do pacote
 “janela” de até N pcts consecutivos sem ACK permitidos
 ACK(n): ACK de todos pcts até inclusive # seq. n – “ACK
cumulativo”
 pode receber ACKs duplicados (ver destinatário)
 temporizador para cada pacote no ar
 timeout(n): retransmite pct n e todos pcts com # seq. mais
alto na janela
apenas ACK: sempre envia ACK para pct recebido
corretamente com # seq. mais alto em ordem
◦ pode gerar ACKs duplicados
◦ só precisa se lembrar de expectedseqnum
 pacote fora de ordem:
◦ descarta (não mantém em buffer) -> sem buffering no
destinatário!
◦ reenvia ACK do pct com # seq. mais alto em ordem
 destinatário reconhece individualmente todos
os pacotes recebidos de modo correto
◦ mantém pcts em buffer, se for preciso, para eventual
remessa em ordem para a camada superior
 remetente só reenvia pcts para os quais o ACK
não foi recebido
◦ temporizador no remetente para cada pct sem ACK
 janela do remetente
◦ N # seq. consecutivos
◦ novamente limita #s seq. de pcts enviados, sem ACK
dados de cima:
 se próx. # seq. disponível
na janela, envia pct
timeout(n):
 reenvia pct n, reinicia
temporizador
ACK(n) em
[sendbase,sendbase+N]:
 marca pct n como
recebido
 se n menor pct com ACK,
avança base da janela
para próximo # seq. sem
ACK
pct n em [rcvbase,
rcvbase+N-1]
 envia ACK(n)
 fora de ordem: buffer
 em ordem: entrega
(também entrega pcts
em ordem no buffer),
avança janela para
próximo pct ainda não
recebido
pct n em [rcvbase-
N,rcvbase-1]
 ACK(n)
caso contrário:
 ignora
destinatário
remetente
cenário telnet simples
#’s de sequência:
◦ “número” na cadeia de
bytes do 1o byte nos
dados do segmento
ACKs:
◦ # seq do próximo byte
esperado do outro lado
◦ ACK cumulativo
P: como o destinatário trata
segmentos fora de ordem
◦ R: TCP não diz – a
critério do
implementador
P: Como definir o
valor de timeout
do TCP?
 maior que RTT
◦ mas RTT varia
 muito curto:
timeout prematuro
◦ retransmissões
desnecessárias
 muito longo: baixa
reação a perda de
segmento
P: Como estimar o RTT?
 SampleRTT: tempo
medido da transmissão do
segmento até receber o
ACK
◦ ignora retransmissões
 SampleRTT variará;
queremos RTT estimado
“mais estável”
◦ média de várias medições
recentes, não apenas
SampleRTT atual
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
 média móvel exponencial ponderada
 influência da amostra passada diminui
exponencialmente rápido
 valor típico:  = 0,125
definindo o timeout
 EstimtedRTT mais “margem de segurança”
◦ grande variação em EstimatedRTT -> maior margem de seg.
 primeira estimativa do quanto SampleRTT se desvia de
EstimatedRTT:
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(geralmente,  = 0,25)
depois definir intervalo de timeout
 TCP cria serviço rdt
em cima do serviço
não confiável do IP
 segmentos em
paralelo
 ACKs cumulativos
 TCP usa único
temporizador de
retransmissão
 retransmissões são
disparadas por:
◦ eventos de timeout
◦ ACKs duplicados
 inicialmente,
considera remetente
TCP simplificado:
◦ ignora ACKs duplicados
◦ ignora controle de
fluxo, controle de
congestionamento
Eventos de remetente TCP:
dados recebidos da apl.:
 cria segmento com #
seq
 # seq # é número da
cadeia de bytes do
primeiro byte de dados
no segmento
 inicia temporizador, se
ainda não tiver iniciado
(pense nele como para
o segmento mais
antigo sem ACK)
 intervalo de expiração:
TimeOutInterval
timeout:
 retransmite
segmento que causou
timeout
 reinicia temporizador
ACK recebido:
 Reconhecem-se
segmentos sem ACK
anteriores
◦ atualiza o que
sabidamente tem ACK
◦ inicia temporizador se
houver segmentos
pendentes
Controle de fluxo TCP
 lado receptor da
conexão TCP tem um
buffer de recepção:
 serviço de
compatibilização de
velocidades:
compatibiliza a taxa
de envio do
remetente com a de
leitura da aplicação
receptora
 processo da aplicação
pode ser lento na
leitura do buffer
remetente não estourará
buffer do destinatário
transmitindo muitos
dados muito rapidamente
controle de fluxo
datagramas
IP
dados TCP
(no buffer)
espaço
de buffer
(atualmente)
não usado
processo da
aplicação
Controle de fluxo TCP:
como funciona
(suponha que destinatário
TCP descarte segmentos
fora de ordem)
 espaço de buffer não
usado:
= rwnd
= RcvBuffer-[LastByteRcvd
- LastByteRead]
 destinatário: anuncia
espaço de buffer não
usado incluindo valor
de rwnd no cabeçalho
do segmento
 remetente: limita # de
bytes com ACKa rwnd
◦ garante que buffer do
destinatário não estoura
datagramas
IP
dados TCP
(no buffer)
espaço
de buffer
(atualmente)
não usado
processo da
aplicação
Gerenciamento da
conexão TCP
lembre-se: Remetente e
destinatário TCP
estabelecem “conexão”
antes que troquem
segmentos dados
 inicializa variáveis TCP:
◦ #s seq.:
◦ buffers, informação de
controle de fluxo (p. e.
RcvWindow)
 cliente: inicia a conexão
Socket clientSocket = new
Socket("hostname","port #");
 servidor: contactado pelo
cliente
Socket connectionSocket =
welcomeSocket.accept();
apresentação de 3 vias:
etapa 1: hosp. cliente envia
segmento SYN do TCP ao
servidor
◦ especifica # seq. inicial
◦ sem dados
etapa 2: hosp. servidor recebe
SYN, responde com segmento
SYNACK
◦ servidor aloca buffers
◦ especifica # seq. inicial do
servidor
etapa 3: cliente recebe SYNACK,
responde com segmento ACK,
que pode conter dados
fechando uma
conexão:
cliente fecha socket:
clientSocket.close();
etapa 1: sistema final do
cliente envia segmento
de controle TCP FIN ao
servidor
etapa 2: servidor recebe
FIN, responde com ACK.
Fecha conexão, envia FIN.
cliente servidor
fecha
fecha
fechado
espera
temporizada
Princípios de controle de
congestionamento
Congestionamento:
 informalmente: “muitas fontes enviando muitos
dados muito rápido para a rede tratar”
 diferente de controle de fluxo!
 manifestações:
◦ pacotes perdidos (estouro de buffer nos
roteadores)
◦ longos atrasos (enfileiramento nos buffers do
roteador)
 um dos maiores problemas da rede!
Causas/custos do
congestionamento: cenário 1
 dois remetentes,
dois destinatários
 um roteador,
infinitos buffers
 sem
retransmissão
 grandes
atrasos quando
congestionado
 vazão máxima
alcançável
Causas/custos do
congestionamento: cenário 2
 um roteador, buffers finitos
 retransmissão do pacote perdido pelo remetente
 sempre: (vazão)
 retransmissão “perfeita” apenas quando há perda:
 retransmissão do pacote adiado (não pedido) torna maior
(que o caso perfeito ) para o mesmo
“custos” do congestionamento:
 mais trabalho (retransmissão) para determinada “vazão”
 retransmissões desnecessárias: enlace transporta várias
cópias do pacote
R/2
R/2
lin
lout
b.
R/2
R/2
lin
lout
a.
R/2
R/2
lin
lout
c.
R/4
R/3
l
in
lout
=
l
in
lout
>
l
in
lout
outro “custo” do congestionamento:
 quando pacote é descartado, qualquer
capacidade de transmissão “upstream” usada
para esse pacote foi desperdiçada!

Mais conteúdo relacionado

Destaque

Aços e ferros fundidos (chiaverinni)
Aços e ferros fundidos (chiaverinni)Aços e ferros fundidos (chiaverinni)
Aços e ferros fundidos (chiaverinni)Gaudencio Hermínio
 
Analise de fourier murray spiegel
Analise de fourier   murray spiegelAnalise de fourier   murray spiegel
Analise de fourier murray spiegelAdilson Bazachi
 
Calculo.vol 3.guidorizzi.pdf
Calculo.vol 3.guidorizzi.pdfCalculo.vol 3.guidorizzi.pdf
Calculo.vol 3.guidorizzi.pdfGustavo Padovany
 
Coletânea de Provas de engenharia elétrica
Coletânea de Provas de engenharia elétricaColetânea de Provas de engenharia elétrica
Coletânea de Provas de engenharia elétricaKatia Ribeiro
 
Introdução à ciência dos materiais callister - capítulo 06 - propriedades m...
Introdução à ciência dos materiais   callister - capítulo 06 - propriedades m...Introdução à ciência dos materiais   callister - capítulo 06 - propriedades m...
Introdução à ciência dos materiais callister - capítulo 06 - propriedades m...Tarcisio Lopes
 

Destaque (20)

Camada de transporte parte1
Camada de transporte parte1Camada de transporte parte1
Camada de transporte parte1
 
Estudo e análise da dispersão de poluentes
Estudo e análise da dispersão depoluentesEstudo e análise da dispersão depoluentes
Estudo e análise da dispersão de poluentes
 
Aços e ferros fundidos (chiaverinni)
Aços e ferros fundidos (chiaverinni)Aços e ferros fundidos (chiaverinni)
Aços e ferros fundidos (chiaverinni)
 
Artigo ptfe-teflon
Artigo ptfe-teflonArtigo ptfe-teflon
Artigo ptfe-teflon
 
Aula 12
Aula   12Aula   12
Aula 12
 
Aula 5
Aula   5Aula   5
Aula 5
 
Camada de rede parte3
Camada de rede   parte3Camada de rede   parte3
Camada de rede parte3
 
Aula introdutoria parte 1
Aula introdutoria   parte 1Aula introdutoria   parte 1
Aula introdutoria parte 1
 
Fisica conceitual paul g hewitte
Fisica conceitual   paul g hewitteFisica conceitual   paul g hewitte
Fisica conceitual paul g hewitte
 
Aula 10
Aula   10Aula   10
Aula 10
 
Camada de transporte parte3
Camada de transporte parte3Camada de transporte parte3
Camada de transporte parte3
 
Seguranca de rede
Seguranca de redeSeguranca de rede
Seguranca de rede
 
Camada de rede parte1
Camada de rede   parte1Camada de rede   parte1
Camada de rede parte1
 
Aula 8
Aula   8Aula   8
Aula 8
 
Camada de aplicação parte1
Camada de aplicação parte1Camada de aplicação parte1
Camada de aplicação parte1
 
Analise de fourier murray spiegel
Analise de fourier   murray spiegelAnalise de fourier   murray spiegel
Analise de fourier murray spiegel
 
Aula sockets
Aula socketsAula sockets
Aula sockets
 
Calculo.vol 3.guidorizzi.pdf
Calculo.vol 3.guidorizzi.pdfCalculo.vol 3.guidorizzi.pdf
Calculo.vol 3.guidorizzi.pdf
 
Coletânea de Provas de engenharia elétrica
Coletânea de Provas de engenharia elétricaColetânea de Provas de engenharia elétrica
Coletânea de Provas de engenharia elétrica
 
Introdução à ciência dos materiais callister - capítulo 06 - propriedades m...
Introdução à ciência dos materiais   callister - capítulo 06 - propriedades m...Introdução à ciência dos materiais   callister - capítulo 06 - propriedades m...
Introdução à ciência dos materiais callister - capítulo 06 - propriedades m...
 

Semelhante a Visão geral de protocolos de controle de congestionamento TCP

R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)Mariana Hiyori
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPMauro Tapajós
 
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...Felipe Alex
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostasForça Tauá
 
Pvn bаsico
Pvn bаsicoPvn bаsico
Pvn bаsicozeu1507
 
Sistemas operacionais 14
Sistemas operacionais 14Sistemas operacionais 14
Sistemas operacionais 14Nauber Gois
 
Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackNatanael Simões
 
DoS: Negação de Serviço e formas de defesa - Elgio Schlemer
DoS: Negação de Serviço e formas de defesa - Elgio SchlemerDoS: Negação de Serviço e formas de defesa - Elgio Schlemer
DoS: Negação de Serviço e formas de defesa - Elgio SchlemerTchelinux
 
Redes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLCRedes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLCMauro Tapajós
 
Camada de transporte capitulo 3
Camada de transporte   capitulo 3Camada de transporte   capitulo 3
Camada de transporte capitulo 3fernandao777
 
Protocolos de transporte
Protocolos de transporteProtocolos de transporte
Protocolos de transporteJoel Saramago
 
Controle de Congestionamento e fluxos ratos
Controle de Congestionamento e fluxos ratosControle de Congestionamento e fluxos ratos
Controle de Congestionamento e fluxos ratosGlauco Gonçalves
 

Semelhante a Visão geral de protocolos de controle de congestionamento TCP (20)

R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)
 
R&C 0401 07 1
R&C 0401 07 1R&C 0401 07 1
R&C 0401 07 1
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDP
 
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostas
 
Pratica3 redes
Pratica3 redesPratica3 redes
Pratica3 redes
 
Lab 06 ping_com_udp
Lab 06 ping_com_udpLab 06 ping_com_udp
Lab 06 ping_com_udp
 
Pvn bаsico
Pvn bаsicoPvn bаsico
Pvn bаsico
 
Sistemas operacionais 14
Sistemas operacionais 14Sistemas operacionais 14
Sistemas operacionais 14
 
Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com Backtrack
 
DoS: Negação de Serviço e formas de defesa - Elgio Schlemer
DoS: Negação de Serviço e formas de defesa - Elgio SchlemerDoS: Negação de Serviço e formas de defesa - Elgio Schlemer
DoS: Negação de Serviço e formas de defesa - Elgio Schlemer
 
Redes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLCRedes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLC
 
Estabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de ConexãoEstabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de Conexão
 
Controle de congestionamento tcp
Controle de congestionamento tcpControle de congestionamento tcp
Controle de congestionamento tcp
 
Camada de transporte capitulo 3
Camada de transporte   capitulo 3Camada de transporte   capitulo 3
Camada de transporte capitulo 3
 
Protocolos de transporte
Protocolos de transporteProtocolos de transporte
Protocolos de transporte
 
Tcp udp
Tcp udpTcp udp
Tcp udp
 
Exercicio rossana
Exercicio rossanaExercicio rossana
Exercicio rossana
 
Comandos ip-de-redes-no-windows-1319-ory76a
Comandos ip-de-redes-no-windows-1319-ory76aComandos ip-de-redes-no-windows-1319-ory76a
Comandos ip-de-redes-no-windows-1319-ory76a
 
Controle de Congestionamento e fluxos ratos
Controle de Congestionamento e fluxos ratosControle de Congestionamento e fluxos ratos
Controle de Congestionamento e fluxos ratos
 

Mais de Universidade Federal do Pampa (17)

Camada de rede parte2
Camada de rede   parte2Camada de rede   parte2
Camada de rede parte2
 
Camada de enlace parte2
Camada de enlace   parte2Camada de enlace   parte2
Camada de enlace parte2
 
Camada de enlace parte1
Camada de enlace   parte1Camada de enlace   parte1
Camada de enlace parte1
 
Camada de aplicacao parte2
Camada de aplicacao parte2Camada de aplicacao parte2
Camada de aplicacao parte2
 
Aula introdutoria parte 2
Aula introdutoria   parte 2Aula introdutoria   parte 2
Aula introdutoria parte 2
 
Aula 11
Aula   11Aula   11
Aula 11
 
Aula 9
Aula   9Aula   9
Aula 9
 
Aula 6.
Aula   6.Aula   6.
Aula 6.
 
Aula 7
Aula   7Aula   7
Aula 7
 
Aula 4
Aula   4Aula   4
Aula 4
 
Aula 3
Aula   3Aula   3
Aula 3
 
Aula 2
Aula   2Aula   2
Aula 2
 
Aula 18
Aula   18Aula   18
Aula 18
 
Aula 17
Aula   17Aula   17
Aula 17
 
Aula 16
Aula   16Aula   16
Aula 16
 
Aula 15
Aula   15Aula   15
Aula 15
 
Aula 14
Aula   14Aula   14
Aula 14
 

Visão geral de protocolos de controle de congestionamento TCP

  • 1. Gerson Alberto Leiria Nunes gersonnunes@furg.br
  • 2. Go-back-N: visão geral  remetente: até N pacotes não reconhecidos na pipeline  destinatário: só envia ACKs cumulativos ◦ não envia pct ACK se houver uma lacuna  remetente: tem temporizador para pct sem ACK mais antigo ◦ se o temporizador expirar: retransmite todos os pacotes sem ACK Repetição seletiva: visão geral  remetente: até pacotes não reconhecidos na pipeline  destinatário: reconhece (ACK) pacotes individuais  remetente: mantém temporizador para cada pct sem ACK ◦ se o temporizador expirar: retransmite apenas o pacote sem ACK
  • 3. remetente:  # seq. de k bits no cabeçalho do pacote  “janela” de até N pcts consecutivos sem ACK permitidos  ACK(n): ACK de todos pcts até inclusive # seq. n – “ACK cumulativo”  pode receber ACKs duplicados (ver destinatário)  temporizador para cada pacote no ar  timeout(n): retransmite pct n e todos pcts com # seq. mais alto na janela
  • 4. apenas ACK: sempre envia ACK para pct recebido corretamente com # seq. mais alto em ordem ◦ pode gerar ACKs duplicados ◦ só precisa se lembrar de expectedseqnum  pacote fora de ordem: ◦ descarta (não mantém em buffer) -> sem buffering no destinatário! ◦ reenvia ACK do pct com # seq. mais alto em ordem
  • 5.
  • 6.  destinatário reconhece individualmente todos os pacotes recebidos de modo correto ◦ mantém pcts em buffer, se for preciso, para eventual remessa em ordem para a camada superior  remetente só reenvia pcts para os quais o ACK não foi recebido ◦ temporizador no remetente para cada pct sem ACK  janela do remetente ◦ N # seq. consecutivos ◦ novamente limita #s seq. de pcts enviados, sem ACK
  • 7.
  • 8. dados de cima:  se próx. # seq. disponível na janela, envia pct timeout(n):  reenvia pct n, reinicia temporizador ACK(n) em [sendbase,sendbase+N]:  marca pct n como recebido  se n menor pct com ACK, avança base da janela para próximo # seq. sem ACK pct n em [rcvbase, rcvbase+N-1]  envia ACK(n)  fora de ordem: buffer  em ordem: entrega (também entrega pcts em ordem no buffer), avança janela para próximo pct ainda não recebido pct n em [rcvbase- N,rcvbase-1]  ACK(n) caso contrário:  ignora destinatário remetente
  • 9. cenário telnet simples #’s de sequência: ◦ “número” na cadeia de bytes do 1o byte nos dados do segmento ACKs: ◦ # seq do próximo byte esperado do outro lado ◦ ACK cumulativo P: como o destinatário trata segmentos fora de ordem ◦ R: TCP não diz – a critério do implementador
  • 10. P: Como definir o valor de timeout do TCP?  maior que RTT ◦ mas RTT varia  muito curto: timeout prematuro ◦ retransmissões desnecessárias  muito longo: baixa reação a perda de segmento P: Como estimar o RTT?  SampleRTT: tempo medido da transmissão do segmento até receber o ACK ◦ ignora retransmissões  SampleRTT variará; queremos RTT estimado “mais estável” ◦ média de várias medições recentes, não apenas SampleRTT atual
  • 11. EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT  média móvel exponencial ponderada  influência da amostra passada diminui exponencialmente rápido  valor típico:  = 0,125
  • 12. definindo o timeout  EstimtedRTT mais “margem de segurança” ◦ grande variação em EstimatedRTT -> maior margem de seg.  primeira estimativa do quanto SampleRTT se desvia de EstimatedRTT: TimeoutInterval = EstimatedRTT + 4*DevRTT DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (geralmente,  = 0,25) depois definir intervalo de timeout
  • 13.  TCP cria serviço rdt em cima do serviço não confiável do IP  segmentos em paralelo  ACKs cumulativos  TCP usa único temporizador de retransmissão  retransmissões são disparadas por: ◦ eventos de timeout ◦ ACKs duplicados  inicialmente, considera remetente TCP simplificado: ◦ ignora ACKs duplicados ◦ ignora controle de fluxo, controle de congestionamento
  • 14. Eventos de remetente TCP: dados recebidos da apl.:  cria segmento com # seq  # seq # é número da cadeia de bytes do primeiro byte de dados no segmento  inicia temporizador, se ainda não tiver iniciado (pense nele como para o segmento mais antigo sem ACK)  intervalo de expiração: TimeOutInterval timeout:  retransmite segmento que causou timeout  reinicia temporizador ACK recebido:  Reconhecem-se segmentos sem ACK anteriores ◦ atualiza o que sabidamente tem ACK ◦ inicia temporizador se houver segmentos pendentes
  • 15. Controle de fluxo TCP  lado receptor da conexão TCP tem um buffer de recepção:  serviço de compatibilização de velocidades: compatibiliza a taxa de envio do remetente com a de leitura da aplicação receptora  processo da aplicação pode ser lento na leitura do buffer remetente não estourará buffer do destinatário transmitindo muitos dados muito rapidamente controle de fluxo datagramas IP dados TCP (no buffer) espaço de buffer (atualmente) não usado processo da aplicação
  • 16. Controle de fluxo TCP: como funciona (suponha que destinatário TCP descarte segmentos fora de ordem)  espaço de buffer não usado: = rwnd = RcvBuffer-[LastByteRcvd - LastByteRead]  destinatário: anuncia espaço de buffer não usado incluindo valor de rwnd no cabeçalho do segmento  remetente: limita # de bytes com ACKa rwnd ◦ garante que buffer do destinatário não estoura datagramas IP dados TCP (no buffer) espaço de buffer (atualmente) não usado processo da aplicação
  • 17. Gerenciamento da conexão TCP lembre-se: Remetente e destinatário TCP estabelecem “conexão” antes que troquem segmentos dados  inicializa variáveis TCP: ◦ #s seq.: ◦ buffers, informação de controle de fluxo (p. e. RcvWindow)  cliente: inicia a conexão Socket clientSocket = new Socket("hostname","port #");  servidor: contactado pelo cliente Socket connectionSocket = welcomeSocket.accept(); apresentação de 3 vias: etapa 1: hosp. cliente envia segmento SYN do TCP ao servidor ◦ especifica # seq. inicial ◦ sem dados etapa 2: hosp. servidor recebe SYN, responde com segmento SYNACK ◦ servidor aloca buffers ◦ especifica # seq. inicial do servidor etapa 3: cliente recebe SYNACK, responde com segmento ACK, que pode conter dados
  • 18. fechando uma conexão: cliente fecha socket: clientSocket.close(); etapa 1: sistema final do cliente envia segmento de controle TCP FIN ao servidor etapa 2: servidor recebe FIN, responde com ACK. Fecha conexão, envia FIN. cliente servidor fecha fecha fechado espera temporizada
  • 19. Princípios de controle de congestionamento Congestionamento:  informalmente: “muitas fontes enviando muitos dados muito rápido para a rede tratar”  diferente de controle de fluxo!  manifestações: ◦ pacotes perdidos (estouro de buffer nos roteadores) ◦ longos atrasos (enfileiramento nos buffers do roteador)  um dos maiores problemas da rede!
  • 20. Causas/custos do congestionamento: cenário 1  dois remetentes, dois destinatários  um roteador, infinitos buffers  sem retransmissão  grandes atrasos quando congestionado  vazão máxima alcançável
  • 21. Causas/custos do congestionamento: cenário 2  um roteador, buffers finitos  retransmissão do pacote perdido pelo remetente
  • 22.  sempre: (vazão)  retransmissão “perfeita” apenas quando há perda:  retransmissão do pacote adiado (não pedido) torna maior (que o caso perfeito ) para o mesmo “custos” do congestionamento:  mais trabalho (retransmissão) para determinada “vazão”  retransmissões desnecessárias: enlace transporta várias cópias do pacote R/2 R/2 lin lout b. R/2 R/2 lin lout a. R/2 R/2 lin lout c. R/4 R/3 l in lout = l in lout > l in lout
  • 23. outro “custo” do congestionamento:  quando pacote é descartado, qualquer capacidade de transmissão “upstream” usada para esse pacote foi desperdiçada!