O documento resume os principais conceitos da camada de transporte do modelo OSI, com foco no protocolo TCP. Ele explica como o TCP fornece serviço de transferência confiável de dados através de mecanismos como números de sequência, ACKs, temporizadores, janelas, controle de fluxo e retransmissão. Também aborda tópicos como controle de congestionamento e técnicas para melhorar a eficiência da rede.
4. Transporte orientado para conexão: TCP
TCP: Visão geral (RFCs: 793,
1122, 1323, 2018, 2581)
dados full duplex:
ponto a ponto: −dados bidirecionais fluem na
− um remetente, um destinatário
mesma conexão
cadeia de bytes confiável, em −MSS: tamanho máximo do
ordem:
− sem “limites de mensagem” segmento
paralelismo: orientado a conexão:
− congestionamento TCP e controle − apresentação (troca de msgs
de fluxo definem tamanho da de controle) inicia estado do
janela remetente e destinatário
buffers de envio & recepção antes da troca de dados
fluxo controlado:
− remetente não sobrecarrega
destinatário
Fundamentos de Redes de Computadores 4/27
5. Estrutura do Segmento TCP
32 bits
URG: dados urgentes contagem por
(quase não usado) porta origem porta destino bytes de dados
(não segmentos!)
ACK: # ACK número sequência
válido número reconhecimento
compr.não
cab. usado UAP R S F janela recepção # bytes
PSH: empurrar dados destinatário
agora (quase não soma verificação ponteiro dados urg.
pode aceitar
usado)
RST, SYN, FIN: opções (tamanho variável)
estab. conexão
(comandos setup,
teardown)
dados da
soma de
aplicação
verificação
da Internet (tamanho variável)
(como em UDP)
Fundamentos de Redes de Computadores 5/27
6. Número de Sequência e Acks do TCP
#’s de sequência:
−
“número” na cadeia de
bytes do 1º byte nos
dados do segmento
ACKs:
−
# seq do próximo byte
esperado do outro lado
−
ACK cumulativo
ex.: como o destinatário
trata segmentos fora
de ordem
ex.: TCP não diz – a
critério do
implementador
Fundamentos de Redes de Computadores 6/27
7. Tempo de ida e volta e timeout do TCP
Como definir o valor de Como estimar o RTT?
timeout do TCP?
SampleRTT: tempo medido
da transmissão do
maior que RTT segmento até receber o
−
mas RTT varia ACK
muito curto: timeout − ignora retransmissões
prematuro SampleRTT variará;
−
retransmissões queremos RTT estimado
desnecessárias “mais estável”
− média de várias medições
muito longo: baixa recentes, não apenas
reação a perda de SampleRTT atual
segmento
Fundamentos de Redes de Computadores 7/27
8. EstimatedRTT = (1- α)*EstimatedRTT +
α*SampleRTT
média móvel exponencial ponderada
influência da amostra passada diminui
exponencialmente rápido
valor típico: α = 0,125
Fundamentos de Redes de Computadores 8/27
9. Amostras de RTT Estimados
Fundamentos de Redes de Computadores 9/27
10. Transferência confiável de dados no TCP
TCP cria serviço rdt em
● ●
retransmissões são
cima do serviço não disparadas por:
confiável do IP −
eventos de timeout
−
ACKs duplicados
segmentos em paralelo
● ●
inicialmente, considera
remetente TCP
ACKs cumulativos
● simplificado:
−
ignora ACKs
duplicados
TCP usa único
●
−
ignora controle de
temporizador de fluxo, controle de
retransmissão congestionamento
Fundamentos de Redes de Computadores 10/27
11. Eventos de remetente TCP:
dados recebidos da apl.: timeout:
−
retransmite segmento
cria segmento com # seq
que causou timeout
# seq # é número da cadeia de
bytes do primeiro byte de
−
reinicia temporizador
dados no segmento ACK recebido:
inicia temporizador, se ainda −
Reconhecem-se
não tiver iniciado (pense nele segmentos sem ACK
como para o segmento mais
antigo sem ACK)
anteriores
●
atualiza o que
intervalo de expiração:
sabidamente tem ACK
TimeOutInterval ●
inicia temporizador se
houver segmentos
pendentes
Fundamentos de Redes de Computadores 11/27
12. TCP: cenários de retransmissão
Hosp. A Hosp. B Hosp. A Hosp. B
Seq = Seq =
92, 8 92, 8
by tes da bytes
dados
Seq = 92 timeout
dos Seq =
100,
20 by
t e s da
timeout
dos
= 100
ACK 00
X K =1
=
loss AC ACK
Seq = 120
Seq = 92, 8
92, 8 Sendbase bytes
by tes da dados
Seq = 92 timeout
dos
= 100
SendBase
= 120 K=
= AC
AC K 120
100
SendBase
= 100 SendBase
= 120 Timeout prematuro
tempo tempo
Cenário de ACK perdido
Fundamentos de Redes de Computadores 12/27
13. Host A Host B
Seq =
92, 8
by tes da
dos
100
timeout
Seq =
100, 2 AC K=
0 bytes
dados
X
perda
SendBase ACK
=
= 120 120
tempo
Cenário ACK cumulativo
Fundamentos de Redes de Computadores 13/27
14. TCP Geração de Ack
Fundamentos de Redes de Computadores 14/27
15. Retransmissão Rápida
período de timeout
● ●
se remetente recebe 3
relativamente grande:
longo atraso antes de reenviar
−
ACKs para os
pacote perdido mesmos dados, ele
detecta segmentos perdidos
●
supõe que segmento
por meio de ACKs após dados com ACK
duplicados
−remetente geralmente envia
foi perdido:
muitos segmentos um após o −
retransmissão rápida:
outro reenvia segmento
−se segmento for perdido,
antes que o
provavelmente haverá muitos
ACKs duplicados para esse temporizador expire
segmento
Fundamentos de Redes de Computadores 15/27
16. Hosp. A Hosp. B
seq # x1
seq # x2
seq # x3 ACK x1
seq # x4 X
seq # x5
ACK x1
ACK x1
ACK x1
ACKs
duplicados
três vezes reenv
ia se q X
2
timeout
tempo
Fundamentos de Redes de Computadores 16/27
17. Controle de Fluxo TCP
lado receptor da conexão controle de fluxo
TCP tem um buffer de
recepção: remetente não estourará
buffer do destinatário
transmitindo muitos dados
muito rapidamente
espaço
datagramas de buffer dados TCP processo da
IP (atualmente)
não usado
(no buffer) aplicação serviço de compatibilização
de velocidades:
compatibiliza a taxa de
processo da aplicação envio do remetente com a
pode ser lento na de leitura da aplicação
leitura do buffer receptora
Fundamentos de Redes de Computadores 17/27
18. Controle de fluxo TCP: como funciona
destinatário: anuncia
espaço
datagramas de buffer dados TCP processo da
(atualmente) (no buffer) aplicação
espaço de buffer não
IP não usado usado incluindo valor
de rwnd no cabeçalho
do segmento
(suponha que destinatário
TCP descarte segmentos remetente: limita # de
fora de ordem) bytes com ACKa rwnd
espaço de buffer não usado: garante que buffer do
= rwnd destinatário não
= RcvBuffer-[LastByteRcvd estoura
- LastByteRead]
Fundamentos de Redes de Computadores 18/27
19. Gerenciamento da conexão TCP
lembre-se: Remetente e apresentação de 3 vias:
destinatário TCP estabelecem etapa 1: hosp. cliente envia
“conexão” antes que troquem segmento SYN do TCP ao
segmentos dados servidor
−especifica # seq. inicial
−sem dados
inicializa variáveis TCP:
−
#s seq.: etapa 2: hosp. servidor recebe
−
buffers, informação de SYN, responde com
controle de fluxo (p. e. segmento SYNACK
RcvWindow) −servidor aloca buffers
cliente: inicia a conexão −especifica # seq. inicial do
−
Socket clientSocket = new servidor
Socket("hostname","port #"); etapa 3: cliente recebe
servidor: contactado pelo cliente SYNACK, responde com
−
Socket connectionSocket = segmento ACK, que pode
welcomeSocket.accept(); conter dados
Fundamentos de Redes de Computadores 19/27
20. Gerenciamento da conexão TCP
fechando uma conexão:
cliente fecha socket: cliente servidor
clientSocket.close(); fecha
FIN
etapa 1: sistema final do cliente envia
segmento de controle TCP FIN ao
servidor fecha
ACK
etapa 2: servidor recebe FIN,
temporizada
espera
responde com ACK. Fecha FIN
conexão, envia FIN. ACK
etapa 3: cliente recebe FIN, responde
com ACK
−
entra em “espera temporizada” –
responderá com ACK aos FINs
fechado
recebidos
etapa 4: servidor recebe ACK -
conexão fechada
Nota: Com pequena modificação, pode
tratar de FINs simultâneos.
Fundamentos de Redes de Computadores 20/27
21. 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!
Fundamentos de Redes de Computadores 21/27
22. 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
Fundamentos de Redes de Computadores 22/27
23. Causas/custos do congestionamento: cenário 2
um roteador, buffers finitos
retransmissão do pacote perdido pelo remetente
“custos” do congestionamento:
mais trabalho (retransmissão) para determinada “vazão”
retransmissões desnecessárias: enlace transporta várias
cópias do pacote
Fundamentos de Redes de Computadores 23/27
24. Causas/custos do congestionamento: cenário 3
quatro remetentes
caminhos com vários
saltos
timeout/retransmissão
Fundamentos de Redes de Computadores 24/27
25. sempre: λin = λout (vazão)
retransmissão “perfeita” apenas quando há perda: λ'in > λout
retransmissão do pacote adiado (não pedido) torna λin maior (que o caso
perfeito ) para o mesmo λout
R/2 R/2 R/2
R/3
λ
λ
λ
R/4
out
out
out
R/2 R/2 R/2
λin λin λin
a. b. c.
Fundamentos de Redes de Computadores 25/27
26. Técnicas para controle de congestionamento
duas técnicas amplas para controle de
controle de congestionamento
congestionamento: assistido pela rede:
controle de
congestionamento fim a
●
roteadores oferecem
fim: feedback aos
sistemas finais
●
nenhum feedback explícito −
único bit indicando
da rede congestionamento
●
congestionamento (SNA, DECbit, TCP/IP
deduzido da perda e ECN, ATM)
atraso observados do −
taxa explícita que o
sistema final remetente deve enviar
●
técnica tomada pelo TCP no enlace de saída
Fundamentos de Redes de Computadores 26/27
27. Slides baseados no material do livro Fundamento
de Redes da Pearson Editora.
Fundamentos de Redes de Computadores 27/27