Capítulo 3 Camada
de transporte
Nota sobre o uso destes slides ppt:
Estamos disponibilizando estes slides gratuitamente a todos
(professores, alunos, leitores). Eles estão em formato do
PowerPoint para que você possa incluir, modificar e excluir
slides (incluindo este) e o conteúdo do slide, de acordo com
suas necessidades. Eles obviamente representam muito
trabalho da nossa parte. Em retorno pelo uso, pedimos apenas
o seguinte:
Se você usar estes slides (por exemplo, em sala de aula)
sem muita alteração, que mencione sua fonte (afinal, gostamos
que as pessoas usem nosso livro!).
Se você postar quaisquer slides sem muita alteração em um
site Web, que informe que eles foram adaptados dos (ou talvez
idênticos aos) nossos slides, e inclua nossa nota de direito
autoral desse material.
Obrigado e divirta-se! JFK/KWR
Todo o material copyright 1996-2009
J. F Kurose e K. W. Ross, Todos os direitos reservados.
slide 1
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3 Camada
de transporte
Nota sobre o uso destes slides ppt:
Partes dos slides originais foram
suprimidas ou alteradas para
adaptar o material à ementa da
disciplina Redes 1 da Unirio.
Todo o material copyright 1996-2009
J. F Kurose e K. W. Ross, Todos os direitos reservados.
slide 2
slide 2
2010Pearson
PearsonPrentice
PrenticeHall.
Hall.Todos
Todosososdireitos
direitosreservados.
reservados.
©©2010
Capítulo 3:
Camada de transporte
Objetivos do capítulo:
 entender princípios
por trás dos serviços
da camada de
transporte:




slide 3
multiplexação/demultiplexação
transferência de
dados confiável
controle de fluxo
controle de
congestionamento
 aprender sobre os
protocolos da camada de
transporte na Internet:



UDP: transporte sem
conexão
TCP: transporte orientado a
conexão
controle de
congestionamento TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 4
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Serviços e protocolos
de transporte
 oferecem
comunicação lógica
entre processos de aplicação
rodando em hospedeiros
diferentes
 protocolos de transporte rodam
em sistemas finais
 lado remetente: divide as msgs
da aplicação em segmentos,
passa à camada de rede
 lado destinatário: remonta os
segmentos em msgs, passa à
camada de aplicação
 mais de um protocolo de
transporte disponível às
aplicações
 Internet: TCP e UDP
slide 5
aplicação
transporte
rede
enlace
física
aplicação
transporte
rede
enlace
física
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Camada de transporte
versus rede


camada de rede:
comunicação lógica
entre hospedeiros
camada de transporte:
comunicação lógica
entre processos

slide 6
conta com e amplia os
serviços da camada de
rede
analogia com a família:
12 crianças mandando carta a 12
crianças
 processos = crianças
 msgs da aplicação = conteúdo
das cartas
 hospedeiros = casas
 protocolo de transporte =
envelopes, identificação dos
correpondentes e entrega nos
correios
 protocolo da camada de rede =
serviço postal
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Protocolos da camada
de transporte da Internet
 remessa confiável mantendo
aplicação
transporte
rede
enlace
física
ordem das mensagens (TCP)



estabelecimento da conexão
controle de congestionamento
controle de fluxo
rede
enlace
física
rede
enlace
física
rede
enlace
física
 remessa não confiável e sem
garantia de ordem: UDP

extensão sem luxo do IP,
apenas agregando números das
porta de protocolo
 serviços de transporte não
network
rede
data
link
enlace
physical
física
rede
enlace
física
rede
enlace
física
aplicação
transporte
rede
enlace
física
disponíveis:


slide 7
garantias de atraso
garantias de largura de banda
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 8
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Processos se comunicando
processo: programa
rodando dentro de um
hospedeiro
 no mesmo hospedeiro,
dois processos se
comunicam usando a
comunicação entre
processos (definida pelo
SO).
 processos em
hospedeiros diferentes
se comunicam trocando
mensagens
slide 9
processo cliente:
processo que inicia a
comunicação
processo servidor:
processo que espera
para ser contactado
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Endereçando processos
 para receber mensagens,
processo deve ter um

Resp.: Não, muitos processos
podem estar rodando no mesmo
hospedeiro
 dispositivo hospedeiro tem
 Identificador inclui endereço IP e
endereço IP exclusivo de 32
números de porta associados ao
bits
processo no hospedeiro.
 exercício: use ipconfig do
 Num host, cada processo que usa a
comando prompt para obter
rede possui um número de porta
seu endereço IP (Windows)
 servidores usam portas pré Perg.: Basta o endereço IP do
definidas
hospedeiro em que o processo
 clientes usam portas aleatórias
é executado para identificar o
 Exemplos de número de porta:
processo?
 servidor HTTP: 80
 servidor de correio: 25
identificador
slide 10
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Sockets
 processo envia/recebe
mensagens de/para seu
socket
 socket semelhante à porta



slide 11
processo enviando empurra
mensagem pela porta
processo enviando conta com
infraestrutura de
transporte no outro lado da
porta, que leva a mensagem
ao socket no processo
receptor
pode ser TCP ou UDP
hospedeiro
ou servidor
processo
hospedeiro
ou servidor
controlado pelo
desenvolvedor
da aplicação
processo
socket
socket
TCP com
buffers,
variáveis
Internet
TCP com
buffers,
variáveis
controlado
pelo OS
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Multiplexação/
demultiplexação
demultiplexação no destinatário:
multiplexação no remetente:
entregando segmentos
recebidos ao socket correto
colhendo dados de múltiplos
sockets, envelopando dados
com cabeçalho (usados depois
para demultiplexação)
aplicação
P3
transporte
rede
aplicação
transporte
rede
P2
= processo
P4
aplicação
transporte
rede
enlace
enlace
enlace
física
física
física
hospedeiro 1
slide 12
P1
P1
= socket
hospedeiro 2
hospedeiro 3
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Como funciona a
demultiplexação
 hospedeiro recebe
datagramas IP
 cada datagrama tem
endereço IP de origem,
endereço IP de destino
 cada datagrama carrega 1
segmento da camada de
transporte
 cada segmento tem
número de porta de
origem, destino
 hospedeiro usa endereços IP
& números de porta para
direcionar segmento ao
socket apropriado
slide 13
32 bits
# porta origem # porta destino
outros campos de cabeçalho
dados da
aplicação
(mensagem)
formato do segmento TCP/UDP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Demultiplexação
não orientada para conexão
 quando hospedeiro
 servidor cria sockets com
números de porta definidos:
DatagramSocket mySocket1 = new
DatagramSocket(12534);
 socket UDP identificado por
tupla de dois elementos:
(endereço IP destino, número porta
destino)
slide 14
recebe segmento UDP:


verifica número de porta
de destino no segmento
direciona segmento UDP
para socket com esse
número de porta
 datagramas IP com
diferentes endereços IP
de origem e/ou números
de porta de origem
direcionados para o
mesmo socket
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Demultiplexação não
orientada a conexão (UDP)
DatagramSocket serverSocket = new DatagramSocket(6428);
P2
P1
P1
P3
SP: 6428
SP: 6428
DP: 9157
DP: 5775
SP: 9157
cliente
IP: A
DP: 6428
SP: 5775
servidor
IP: C
DP: 6428
Cliente
IP:B
SP (“Source Port”) oferece “porta de retorno”
associada ao IP de retorno. (DP = Destination Port)
slide 15
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Demultiplexação orientada
para conexão
 socket TCP identificado
por tupla de 4 elementos:




endereço IP de origem
número de porta de origem
endereço IP de destino
número de porta de destino
 hospedeiro destinatário
 hospedeiro servidor pode
admitir muitos sockets
TCP simultâneos:


cada socket identificado
por sua própria tupla de 4
mesma porta de destino
associada c/ cada socket
usa os quatro valores para  servidores Web têm
diferentes sockets para
direcionar segmento ao
cada cliente conectando
socket apropriado, pois
 HTTP não persistente terá
podem haver conexões
diferentes sockets para
TCP em paralelo para o
cada requisição
mesmo processo
slide 16
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Demultiplexação orientada
a conexão (TCP):
servidor Web threaded
P1
P2
P4
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157
cliente
IP: A
slide 17
DP: 80
S-IP: A
D-IP:C
SP: 9157
servidor
IP: C
DP: 80
S-IP: B
D-IP:C
cliente
IP:B
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 18
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
UDP: User Datagram
Protocol [RFC 768]
 protocolo de transporte da
Internet “sem luxo”, básico
 serviço de “melhor esforço”,
segmentos UDP podem ser:
 perdidos
 entregues à aplicação
fora da ordem

sem conexão:


slide 19
sem handshaking entre
remetente e destinatário
UDP
cada segmento UDP
tratado independente
dos outros
Por que existe um UDP?
 sem estabelecimento de
conexão (que pode gerar
atraso)
 simples: sem estado de
conexão no remetente,
destinatário
 cabeçalho de segmento
pequeno
 sem controle de
congestionamento: UDP
pode transmitir o mais
rápido possível
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
UDP: mais
 normalmente usado para
32 bits
streaming de aplicações de
multimídia
tamanho, # porta origem # porta dest.
 tolerante a perdas
em bytes, do
soma verif.
tamanho
segmento UDP,
 sensível à taxa
incluindo
cabeçalho
 outros usos do UDP
 DNS (resolução de nomes)
 SNMP (gerência de redes)
 para se ter transferência
confiável por UDP:
 recuperação de erro tem
que ser realizada pela
aplicação!
slide 20
dados da
aplicação
(mensagem)
formato de segmento UDP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 21
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável de
dados: introdução
rdt_send(): chamado de cima, (p. e.,
pela apl.). Dados passados para remeter
à camada superior do destinatário
lado
remetente
udt_send(): chamado pela
rdt, para transferir pacote por
canal não confiável ao
destinatário
slide 22
deliver_data(): chamado pela
rdt para remeter dados para cima
lado
destinatário
rdt_rcv(): chamado quando pacote
chega no lado destinatário do canal
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável de
dados:
 Pacotes podem se perder ou comrromper
 soma de verificação ou CRC para detectar erros

reconhecimentos (ACKs):


destinatário diz explicitamente ao remetente que o pacote
foi recebido OK
Porém ACKs podem também se perder ou corromper
 emissor não fica eternamente esperando ACKs
 estipula timeout para a chegada de um ACK
 reenvia pacote se timeout estourar
 duplicatas podem chegar no destinatário caso timeout no
emissor estoure antes da chegada do ACK
 emissor precisa saber de qual pacote se refere o ACK
 pacotes e ACKs
slide 23
numerados p/ identificar duplicatas
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável de
dados:
tratando de duplicatas:
 destinatário descarta (não sobe para aplicação)
pacote duplicado e envia novo ACK
 emissor ignora ACKs duplicados
ACKs cumulativos:
 envia ACK para último pacote recebido numa
sequência
 emissor entende que pacotes anteriores foram
recebidos corretamente

slide 24
pressupõe (re-)ordenamento de pacotes no destinatário
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável de
dados: Stop-and-Wait
 Só envia novo pacote quando o anterior é confirmado
slide 25
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável de
dados: Stop-and-Wait
slide 26
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável de
dados: Stop-and-Wait
slide 27
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Paralelismo: utilização
aumentada
Aumento de utilização
por fator de 3!
slide 28
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Protocolos com paralelismo
paralelismo: remetente permite múltiplos pacotes
“no ar”, ainda a serem reconhecidos


intervalo de números de sequência deve ser aumentado
buffering no remetente e/ou destinatário
 duas formas genéricas de protocolo com paralelismo:
Go-Back-N, repetição seletiva
slide 29
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Protocolos com paralelismo
Go-back-N: visão geral
 remetente: até N pacotes
não reconhecidos no canal
 destinatário: só envia ACKs
cumulativos


remetente: tem
temporizador para pacote
sem ACK mais antigo

slide 30
não envia ACK se houver
uma lacuna (pacote
recebido fora de ordem)
se o temporizador expirar:
retransmite todos os (até
N) pacotes sem ACK
Repetição seletiva: visão geral
 remetente: até N pacotes não
reconhecidos no canal
 destinatário: reconhece (ACK)
pacotes individuais


mas poderia trabalhar com ACK
cumulativo
remetente: mantém
temporizador para cada pacote
sem ACK

se o temporizador expirar:
retransmite apenas o pacote
sem ACK
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Go-Back-N
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
slide 31
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
GBN em operação
slide 32
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Repetição seletiva: janelas
de remetente, destinatário
slide 33
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Repetição seletiva em
operação
slide 34
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 35
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
TCP: Visão geral
RFCs: 793, 1122, 1323, 2018, 2581
 ponto a ponto:
 dados full duplex:


um remetente, um
destinatário
cadeia de bytes confiável, em
ordem
 paralelismo:


congestionamento TCP e
controle de fluxo definem
tamanho da janela de transm.
buffers de envio & recepção


dados bidirecionais fluem
na mesma conexão
MSS: tamanho máximo do
segmento em bytes
 orientado a conexão:
 estabelecimento de sessão
inicia estado do remetente
e destinatário antes da
troca de dados
 fluxo controlado:
 remetente não
sobrecarrega destinatário
slide 36
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Estrutura do segmento TCP
URG: dados urgentes
(quase não usado)
ACK: # ACK
válido
PSH: empurrar dados
agora (quase não usado)
RST, SYN, FIN:
estab. conexão
(comandos setup,
teardown)
soma de verificação
da Internet
(como em UDP)
slide 37
32 bits
porta origem
porta destino
número sequência
contagem por
bytes de dados
(não segmentos!)
número reconhecimento
compr. não
UA P R S F
cab. usado
janela recepção
soma verificação ponteiro dados urg.
# bytes
destinatário
pode aceitar
opções (tamanho variável)
dados da
aplicação
(tamanho variável)
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
#s sequência e ACKs do TCP
#’s de sequência:
 “número” do 1o byte dos
dados do segmento,
considerando cadeia de
bytes sendo enviada
ACKs:
 # seq do próximo byte
esperado do outro lado
 usa ACK cumulativo
cenário telnet simples
slide 38
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Tempo de ida e volta e
timeout do TCP
P: Como definir o valor
de timeout do TCP?
 maior que RTT, claro
 mas RTT varia!
 se muito curto:
timeout prematuro
 retransmissões
desnecessárias
 se muito longo:
demora a reagir
quando da perda de
segmento
slide 39
P: Como estimar o RTT?
 SampleRTT: tempo medido
da transmissão do segmento
até receber o ACK
 ignora retransmissões
 SampleRTT variará,
queremos um RTT estimado
que seja “o mais estável”
 faz média de vários
SampleRTT’s recentes,
não usa apenas
SampleRTT atual
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Estimando RTT
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
 média móvel exponencial ponderada
 influência da amostra passada diminui exponencialmente rápido
 valor típico:  = 0,125
slide 40
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Timeout do TCP
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:
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(geralmente,  = 0,25)
depois definir intervalo de timeout
TimeoutInterval = EstimatedRTT + 4*DevRTT
slide 41
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 42
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Transferência confiável
de dados no TCP
 TCP cria serviço de
transferência
confiável em cima do
serviço não confiável
do IP
 segmentos em paralelo
 ACKs cumulativos
 TCP usa único
temporizador de
retransmissão
slide 43
 retransmissões são
disparadas por:


eventos de timeout
ACKs duplicados
 usa mecanismo de
retransmissão seletiva
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
TCP: cenários de
retransmissão
Hosp. A
X
loss
Sendbase
= 100
SendBase
= 120
SendBase
= 100
tempo
Cenário de ACK perdido
slide 44
Hosp. B
Seq = 92 timeout
Hosp. B
SendBase
= 120
Seq = 92 timeout
timeout
Hosp. A
tempo
Timeout prematuro
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
timeout
Host A
Host B
X
perda
SendBase
= 120
tempo
Cenário ACK cumulativo
slide 45
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Retransmissão
rápida
Hosp. A
seq # x1
seq # x2
seq # x3
seq # x4
seq # x5
Hosp. B
X
ACK x1
ACK x1
ACK x1
ACK x1
timeout
ACKs
duplicados
três vezes
tempo
slide 46
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 47
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Controle de fluxo TCP
controle de fluxo
 lado receptor da
conexão TCP tem um
buffer de recepção:
remetente não estourará
buffer do destinatário
transmitindo muitos
dados muito rapidamente
espaço
dados TCP processo da
datagramas de buffer
(atualmente) (no buffer) aplicação
IP
não usado
 processo da aplicação
pode ser lento na
leitura do buffer
slide 48

serviço de
compatibilização de
velocidades:
compatibiliza a taxa de
envio do remetente
com a de leitura da
aplicação receptora
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Controle de fluxo TCP:
como funciona
espaço
dados TCP processo da
datagramas de buffer
(atualmente) (no buffer) aplicação
IP
não usado
rwnd
RcvBuffer
(suponha que destinatário TCP
descarte segmentos fora de
ordem)
 espaço de buffer não usado:
=
=
slide 49
 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
rwnd
RcvBuffer-[LastByteRcvd LastByteRead]
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 50
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
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();
slide 51
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

© 2010 Pearson Prentice Hall. Todos os direitos reservados.
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.
slide 52
etapa 3: cliente recebe
FIN, responde com ACK

entra em “espera
temporizada” –
responderá com ACK
aos FINs recebidos
etapa 4: servidor recebe
ACK - conexão fechada
Nota: Com pequena
modificação, pode tratar
de FINs simultâneos.
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Capítulo 3: Esboço
 3.1 Serviços da camada
de transporte
 3.2 Multiplexação e
demultiplexação
 3.3 Transporte não
orientado para
conexão: UDP
 3.4 Princípios da
transferência
confiável de dados
slide 53
 3.5 Transporte orientado
para conexão: TCP




estrutura de segmento
transferência confiável de
dados
controle de fluxo
gerenciamento da conexão
 3.6 Princípios de controle
de congestionamento
 3.7 Controle de
congestionamento no TCP
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Controle de congestionamento
TCP: busca por largura
de banda
 “procura por largura de banda”: aumenta taxa de
transmissão no recebimento do ACK até por fim ocorrer
perda; depois diminui taxa de transmissão

continua a aumentar no ACK, diminui na perda (pois largura de
banda disponível está mudando, dependendo de outras conexões
na rede)
taxa de emissão
ACKs sendo recebidos,
de modo que aumenta taxa
X
X perda e diminuição de taxa
X
X
comportamento
“dente de serra”
do TCP
X
tempo
slide 54
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Controle de congestionamento
TCP: detalhes
 remetente limita taxa limitando número de
bytes sem ACK “na pipeline”:
LastByteSent-LastByteAcked  cwnd
 cwnd: difere de rwnd (como, por quê?)
 remetente limitado por min(cwnd,rwnd)
bytes
cwnd
 aproximadamente,
taxa =
cwnd
RTT
bytes/seg
 cwnd é dinâmico, função do
congestionamento de rede percebido
slide 55
RTT
ACK(s)
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Controle de congestionamento
TCP: mais detalhes
evento de perda de segmento:
reduzindo cwnd
 timeout: sem resposta do
destinatário

corta cwnd para 1
 3 ACKs duplicados: pelo
menos alguns segmentos
passando (lembre-se da
retransmissão rápida)

slide 56
corta cwnd pela metade,
menos agressivamente do que
no timeout
ACK recebido: aumenta
cwnd
 fase de partida lenta:
 aumento exponencialmente
rápido (apesar do nome) no
início da conexão, ou após
o timeout
 prevenção de
congestionamento:

aumento linear
AIMD: Aditive Increase,
Multiplicative Decrease
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Tipos populares de TCP
slide 57
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Resumo: controle de
congestionamento TCP
 quando cwnd < ssthresh, remetente na fase de
partida lenta, janela cresce exponencialmente.
 quando cwnd > =
ssthresh, remetente está na
fase de prevenção de congestionamento, janela
cresce linearmente.
 quando ocorre o ACK duplicado triplo, ssthresh
definido como cwnd/2, cwnd definido como
~ssthresh
 quando ocorre o
timeout, ssthresh definido como
cwnd/2, cwnd definido como 1 MSS.
slide 58
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Equidade do TCP
objetivo da equidade: se K sessões TCP
compartilharem o mesmo enlace de gargalo da
largura de banda R, cada uma deve ter uma taxa
média de R/K
conexão TCP 1
conexão
TCP 2
slide 59
capacidade de
gargalo do
roteador R
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Por que o TCP é justo?
duas sessões concorrentes:
 aumento aditivo dá inclinação 1, pois vazão aumenta
 diminuição multiplicativa diminui vazão proporcionalmente
R
compartilhamento de largura de banda igual
perda: diminui janela por fator de 2
prevenção de congestionamento: aumento aditivo
perda: diminui janela por fator de 2
prevenção de cong.: aumento aditivo
Vazão da conexão 1
slide 60
R
© 2010 Pearson Prentice Hall. Todos os direitos reservados.
Download

TCP