Вы находитесь на странице: 1из 28

Captulo

3
Redes de computadores e a Internet Redes de computadores e a Internet
Camada
de
transporte
3
3 - 2
Objetivos do captulo:
Entender os princpios por trs dos servios da camada de transporte:
Multiplexao/demultiplexao
Transferncia de dados confivel
Controle de fluxo
Controle de congestionamento
Aprender sobre os protocolos de transporte na Internet:
UDP: transporte no orientado conexo
TCP: transporte orientado conexo
Controle de congestionamento do TCP
Camada de transporte
3
3 - 3
Camada de transporte
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
3
3 - 4
Fornecem comunicao lgica entre
processos de aplicao em diferentes
hospedeiros
Os protocolos de transporte so
executados nos sistemas finais
Lado emissor: quebra as mensagens
da aplicao em segmentos e envia
para a camada de rede
Lado receptor: remonta os
segmentos em mensagens e passa
para a camada de aplicao
H mais de um protocolo de
transporte disponvel para as
aplicaes
Internet: TCP e UDP
Protocolos e servios de transporte
3
3 - 5
Camada de rede: comunicao lgica entre os hospedeiros
Camada de transporte: comunicao lgica entre os processos
Depende dos servios da camada de rede
Analogia com uma casa familiar:
12 crianas enviam cartas para 12 crianas
Processos = crianas
Mensagens da aplicao = cartas nos envelopes
Hospedeiros = casas
Protocolo de transporte = Anna e Bill
Protocolo da camada de rede = servio postal
Camada de transporte vs. camada de rede
3
3 - 6
Confivel, garante ordem de entrega
(TCP)
Controle de congestionamento
Controle de fluxo
Orientado conexo
No confivel, sem ordem de
entrega: UDP
Extenso do melhor esforo do IP
Servios no disponveis:
Garantia a atrasos
Garantia de banda
Protocolos da camada de transporte da Internet
3
3 - 7
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 8
Demultiplexao no hospedeiro receptor: Multiplexao no hospedeiro emissor:
entrega os segmentos
recebidos ao socket correto
coleta dados de mltiplos sockets,
envelopa os dados com cabealho
(usado depois para demultiplexao)
Multiplexao/demultiplexao
3
3 - 9
Computador recebe datagramas IP
Cada datagrama possui endereo
IP de origem e IP de destino
Cada datagrama carrega 1
segmento da camada de
transporte
Cada segmento possui nmeros
de porta de origem e destino
(lembre-se: nmeros de porta bem
conhecidos para aplicaes
especficas)
O hospedeiro usa endereos IP e
nmeros de porta para direcionar o
segmento ao socket apropriado
Como funciona a demultiplexao
3
3 - 10
Cria sockets com nmeros de porta:
DatagramSocket mySocket1 = new DatagramSocket(99111);
DatagramSocket mySocket2 = new DatagramSocket(99222);
Socket UDP identificado por 2 valores:
(endereo IP de destino, nmero da porta de destino)
Quando o hospedeiro recebe o segmento UDP:
Verifica o nmero da porta de destino no segmento
Direciona o segmento UDP para o socket com este nmero de porta
Datagramas com IP de origem diferentes e/ou portas de origem diferentes so
direcionados para o mesmo socket
Demultiplexao no orientada conexo
3
3 - 11
DatagramSocket serverSocket = new DatagramSocket(6428);
cliente
IP:B
P2
cliente
IP: A
P1
P1
P3
servidor
IP: C
SP: 6428
DP: 9157
SP: 9157
DP: 6428
SP: 6428
DP: 5775
SP: 5775
DP: 6428
SP fornece o endereo retorno0
Demultiplexao no orientada conexo
3
3 - 12
Socket TCP identificado por 4 valores:
Endereo IP de origem
End. porta de origem
Endereo IP de destino
End. porta de destino
Hospedeiro receptor usa os quatro valores para direcionar o segmento ao
socket apropriado
Hospedeiro servidor pode suportar vrios sockets TCP simultneos:
Cada socket identificado pelos seus prprios 4 valores
Servidores Web possuem sockets diferentes para cada cliente conectado
HTTP no persistente ter um socket diferente para cada requisio
Demux orientada conexo
3
3 - 13
cliente
IP:B
P1
cliente
IP: A
P1
P2 P4
servidor
IP: C
SP: 9157
DP: 80
SP: 9157
DP: 80
P5 P6 P3
D-IP:C
S-IP: A
D-IP:C
S-IP: B
SP: 5775
DP: 80
D-IP:C
S-IP: B
Demux orientada conexo
3
3 - 14
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 15
Protocolo de transporte da Internet sem gorduras sem frescuras
Servio best effort , segmentos UDP podem ser:
Perdidos
Entregues fora de ordem para a aplicao
Sem conexo:
No h apresentao entre o UDP transmissor e o receptor
Cada segmento UDP tratado de forma independente dos outros
Por que existe um UDP?
No h estabelecimento de conexo (que possa redundar em atrasos)
Simples: no h estado de conexo nem no transmissor, nem no receptor
Cabealho de segmento reduzido
No h controle de congestionamento: UDP pode enviar segmentos to
rpido quanto desejado (e possvel)
UDP: User Datagram Protocol [RFC 768]
3
3 - 16
Muito usado por aplicaes de
mutimdia contnua (streaming)
Tolerantes perda
Sensveis taxa
Outros usos do UDP (por qu?):
DNS
SNMP
Transferncia confivel sobre
UDP: acrescentar confiabilidade
na camada de aplicao
Recuperao de erro
especfica de cada aplicao
Mais sobre UDP
3
3 - 17
Objetivo: detectar erros (ex.: bits trocados) no segmento transmitido
Transmissor:
Trata o contedo do segmento como seqncia de inteiros de 16 bits
Checksum: soma (complemento de 1 da soma) do contedo do segmento
Transmissor coloca o valor do checksum no campo de checksum do UDP
Receptor:
Computa o checksum do segmento recebido
Verifica se o checksum calculado igual ao valor do campo checksum:
NO - erro detectado
SIM - no h erros. Mas, talvez haja erros apesar disso? Mas depois
UDP checksum
3
3 - 18
Note que:
Ao se adicionar nmeros, um vai um do bit mais significativo deve ser
acrescentado ao resultado.
Exemplo: adicione dois inteiros de 16 bits
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sum
checksum
Exemplo: Internet checksum
3
3 - 19
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 20
Importante nas camadas
de aplicao, transporte
e enlace
Top 10 na lista dos
tpicos mais importants
de redes!
Caractersticas dos canais
no confiveis
determinaro a
complexidade dos
protocolos confiveis de
transferncia de dados
(rdt)
Princpios de transferncia confivel de dados
3
3 - 21
Ponto-a-ponto:
Um transmissor, um receptor
Confivel, seqencial byte stream:
No h contornos de mensagens
Pipelined: (transmisso de vrios
pacotes sem confirmao)
Controle de congesto e de fluxo
definem tamanho da janela
Buffers de transmisso e de recepo
Dados full-duplex:
Transmisso bidirecional na mesma
conexo
MSS: maximum segment size
Orientado conexo:
Apresentao (troca de mensagens de
controle) inicia o estado do
transmissor e do receptor antes da
troca de dados
Controle de fluxo:
Transmissor no esgota a capacidade
do receptor
TCP: overview
RFCs: 793, 1122, 1323, 2018, 2581
3
3 - 22
URG: dados urgentes
(pouco usados)
ACK: campo de ACK
vlido
PSH: produz envio de
dados (pouco usado)
RST, SYN, FIN:
estabelec. de conexo
(comandos de
criao e trmino)
nmero de bytes
receptor est
pronto para
aceitar
contagem por
bytes de dados
(no segmentos!)
Internet
checksum
(como no UDP)
Estrutura do segmento TCP
3
3 - 23
Nmeros de seqncia:
Nmero do primeiro byte
nos segmentos de dados
ACKs:
Nmero do prximo byte
esperado do outro lado
ACK cumulativo
P.: Como o receptor trata
segmentos fora de ordem?
A especificao do TCP no
define, fica a critrio do
implementador
Nmero de seqncia e ACKs do TCP
3
3 - 24
P.: como escolher o valor da temporizao do TCP?
Maior que o RTT
Nota: RTT varia
Muito curto: temporizao prematura
Retransmisses desnecessrias
Muito longo: a reao perda de segmento fica lenta
P.: Como estimar o RTT?
SampleRTT: tempo medido da transmisso de um segmento at a
Respectiva confirmao
Ignora retransmisses e segmentos reconhecidos de forma cumulativa
SampleRTT varia de forma rpida, desejvel um amortecedor para a
estimativa do RTT
Usar vrias medidas recentes, no apenas o ltimo SampleRTT obtido
TCP Round Trip Time e temporizao
3
3 - 25
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
Mdia mvel com peso exponencial
Influncia de uma dada amostra decresce de forma exponencial
Valor tpico: = 0,125
TCP Round Trip Time e temporizao
3
3 - 26
Exemplos de estimativa do RTT
3
3 - 27
Definindo a temporizao
EstimatedRTT mais margem de segurana
Grandes variaes no EstimatedRTT -> maior margem de segurana
Primeiro estimar o quanto o SampleRTT se desvia do EstimatedRTT:
DevRTT = (1- )*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)
Ento ajustar o intervalo de temporizao
TimeoutInterval = EstimatedRTT + 4*DevRTT
TCP Round Trip Time e temporizao
3
3 - 28
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no-orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 29
TCP cria servios de rdt em cima do servio no-confivel do IP
Pipelined segments
ACKs cumulativos
TCP usa tempo de retransmisso simples
Retransmisses so disparadas por:
Eventos de tempo de confirmao
ACKs duplicados
Inicialmente considere um transmissor TCP simplificado:
IIgnore ACKs duplicados
Ignore controle de fluxo, controle de congestionamento
TCP: transferncia de dados confivel
3
3 - 30
Dado recebido da app:
Crie um segmento com nmero de seqncia
# seq o nmero do byte-stream do 1
o
byte de dados no segmento
Inicie o temporizador se ele ainda no estiver em execuo (pense no
temporizador para o mais antigo segmento no-confirmado)
Tempo de expirao: TimeOutInterval
Tempo de confirmao:
Retransmite o segmento que provocou o tempo de confirmao
Reinicia o temporizador
ACK recebido:
Quando houver o ACK de segmentos anteriormente no confirmados
Atualizar o que foi confirmado
Iniciar o temporizador se houver segmentos pendentes
Eventos do transmissor TCP
3
3 - 31
Cenrio com perda
do ACK
Temporizao prematura,
ACKs cumulativos
TCP: cenrios de retransmisso
3
3 - 32
Cenrio de ACK cumulativo
TCP: cenrios de retransmisso
3
3 - 33
Evento no receptor
Segmento chega em ordem,
no h lacunas,
segmentos anteriores j aceitos
Segmento chega em ordem,
no h lacunas,
um ACK atrasado pendente
Segmento chega fora de ordem,
nmero de seqncia chegou
maior: gap detectado
Chegada de segmento que
parcial ou completamente
preenche o gap
Ao do receptor TCP
ACK retardado. Espera at 500 ms
pelo prximo segmento. Se no
chegar,envia ACK
Imediatamente envia um ACK
cumulativo
Envia ACK duplicado, indicando nmero
de seqncia do prximo byte esperado
Reconhece imediatamente se o
Segmento comea na borda
inferior do gap
Gerao de ACK [RFC 1122, RFC 2581]
3
3 - 34
Com freqncia, o tempo de expirao relativamente longo:
Longo atraso antes de reenviar um pacote perdido
Detecta segmentos perdidos por meio de ACKs duplicados
Transmissor freqentemente envia muitos segmentos back-to-back
Se o segmento perdido, haver muitos ACKs duplicados.
Se o transmissor recebe 3 ACKs para o mesmo dado, ele supe que o
segmento aps o dado confirmado foi perdido:
Retransmisso rpida: reenvia o segmento antes de o temporizador
expirar
Retransmisso rpida
3
3 - 35
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 36
lado receptor da conexo TCP
possui um buffer de recepo:
Servio de speed-matching:
encontra a taxa de envio
adequada taxa de vazo da
aplicao receptora
Processos de aplicao podem ser
lentos para ler o buffer
Controle de fluxo
Transmissor no deve esgotar os
buffers de recepo enviando
dados rpido demais
TCP: controle de fluxo
3
3 - 37
(suponha que o receptor TCP descarte segmentos fora de ordem)
Espao disponvel no buffer
= RcvWindow
= RcvBuffer-[LastByteRcvd - LastByteRead]
Receptor informa a rea disponvel
incluindo valor RcvWindow nos
segmentos
Transmissor limita os dados no
confimados ao RcvWindow
Garantia contra overflow no
buffer do receptor
Controle de fluxo TCP: como funciona
3
3 - 38
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 39
TCP transmissor estabelece conexo com o receptor antes de trocar segmentos de
dados
Inicializar variveis:
Nmeros de seqncia
Buffers, controle de fluxo (ex. RcvWindow)
Cliente: iniciador da conexo
Socket clientSocket = new Socket(hostname","port number");
Servidor: chamado pelo cliente
Socket connectionSocket = welcomeSocket.accept();
Three way handshake:
Passo 1: sistema final cliente envia TCP SYN ao servidor
Especifica nmero de seqncia inicial
Passo 2: sistema final servidor que recebe o SYN, responde com segmento SYNACK
Reconhece o SYN recebido
Aloca buffers
Especifica o nmero de seqncia inicial do servidor
Passo 3: o sistema final cliente reconhece o SYNACK
Gerenciamento de conexo TCP
3
3 - 40
Fechando uma conexo:
cliente fecha o socket:
clientSocket.close();
Passo 1: o cliente envia o segmento
TCP FIN ao servidor
Passo 2: servidor recebe FIN,
responde com ACK. Fecha a
conexo, envia FIN
Gerenciamento de conexo TCP
3
3 - 41
Passo 3: cliente recebe FIN,
responde com ACK.
Entra espera temporizada -
vai responder com ACK a FINs
recebidos
Passo 4: servidor, recebe ACK.
Conexo fechada
Nota: com uma pequena
modificao, pode-se manipular
FINs simultneos
Gerenciamento de conexo TCP
3
3 - 42
Estados do cliente Estados do servidor
Gerenciamento de conexo TCP
3
3 - 43
URG: dados urgentes
(pouco usados)
ACK: campo de ACK
vlido
PSH: produz envio de
dados (pouco usado)
RST, SYN, FIN:
estabelec. de conexo
(comandos de
criao e trmino)
nmero de bytes
receptor est
pronto para
aceitar
contagem por
bytes de dados
(no segmentos!)
Internet
checksum
(como no UDP)
Estrutura do segmento TCP
3
3 - 44
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 45
Congestionamento:
Informalmente: muitas fontes enviando dados acima da capacidade da
rede de trat-los
Diferente de controle de fluxo!
Sintomas:
Perda de pacotes (saturao de buffer nos roteadores)
Atrasos grandes (filas nos buffers dos roteadores)
Um dos 10 problemas mais importantes na Internet!
Princpios de controle de congestionamento
3
3 - 46
Dois transmissores, dois
receptores
Um roteador, buffers
infinitos
No h retransmisso
Grandes atrasos quando
congestionado
Mxima vazo alcanvel
Causas/custos do congestionamento
3
3 - 47
Um roteador, buffers finitos
Transmissor reenvia pacotes perdidos
Causas/custos do congestionamento: cenrio 2
3
3 - 48
Existem duas abordagens gerais para o problema de controle de
congestionamento:
Controle de congestionamento fim-a-fim:
No usa realimentao explcita da rede
Congestionamento inferido a partir das perdas e dos atrasos
observados nos sistemas finais
Abordagem usada pelo TCP
Controle de congestionamento assistido pela rede:
Roteadores enviam informaes para os sistemas finais
Bit nico indicando o congestionamento (SNA, DECbit, TCP/IP
ECN, ATM)
Taxa explcita do transmissor poderia ser enviada
Abordagens do produto de controle de congestionamento
3
3 - 49
3.1 Servios da camada de transporte
3.2 Multiplexao e demultiplexao
3.3 Transporte no orientado conexo: UDP
3.4 Princpios de transferncia confivel de dados
3.5 Transporte orientado conexo: TCP
Estrutura do segmento
Transferncia confivel de dados
Controle de fluxo
Gerenciamento de conexo
3.6 Princpios de controle de congestionamento
3.7 Controle de congestionamento do TCP
Camada de transporte
3
3 - 50
Controle fim-a-fim (sem assistncia da rede)
Transmissor limita a transmisso:
LastByteSent-LastByteAcked
CongWin
Aproximadamente,
CongWin dinmico, funo de congestionamento das redes detectadas
Como o transmissor detecta o congestionamento?
Evento de perda = tempo de confirmao ou 3 ACKs duplicados
Transmissor TCP reduz a taxa (CongWin) aps o evento de perda
Trs mecanismos:
AIMD
Partida lenta
Reao a eventos de esgotamento de temporizao
rate =
CongWin
RTT
Bytes/sec
TCP: controle de congestionamento
3
3 - 51
Reduo multiplicativa: diminui o CongWin pela metade aps o evento de perda
Aumento aditivo: aumenta o CongWin com 1 MSS a cada RTT na ausncia de
eventos de perda: probing
conexo TCP de longa-vida
TCP AIMD
3
3 - 52
Quando a conexo comea, CongWin = 1 MSS
Exemplo: MSS = 500 bytes e RTT = 200 milissegundos
Taxa inicial = 20 kbps
Largura de banda disponvel pode ser >> MSS/RTT
Desejvel aumentar rapidamente at a taxa respeitvel
Quando a conexo comea, a taxa aumenta rapidamente de modo
exponencial at a ocorrncia do primeiro evento de perda
TCP Partida lenta
3
3 - 53
Quando a conexo comea, a taxa
aumenta rapidamente de modo
exponencial at a ocorrncia do
primeiro evento de perda :
Dobra o CongWin a cada RTT
Faz-se incrementando o CongWin
para cada ACK recebido
Sumrio: taxa inicial lenta mas
aumenta de modo exponenciamente
rpido
hospedeiro A
R
T
T
hospedeiro B
tempo
TCP Partida lenta
3
3 - 54
Aps 3 ACKs duplicados:
CongWin cortado pela metade
Janela ento cresce linearmente
Mas aps evento de tempo de confirmao:
CongWin ajustado para 1 MSS;
A janela ento cresce exponencialmente
vat um limite, ento cresce linearmente
Filosofia
3 ACKs indica que a rede capaz de entregar alguns segmentos
Tempo de confirmao antes dos 3 ACKs duplicados mais alarmante
Refinamento
3
3 - 55
P.: Quando o aumento
exponencial deve tornar-se
linear?
R.: Quando CongWin obtiver
1/2 do seu valor antes do
tempo de confirmao.
Implementao:
Limite varivel
No evento de perda, o limiar
ajustado para 1/2 do
CongWin logo antes do
evento de perda
Refinamento
3
3 - 56
Quando CongWin est abaixo do limite (Threshold), o transmissor
em fase de slow-start, a janela cresce exponencialmente.
Quando CongWin est acima do limite (Threshold, o transmissor
em fase de congestion-avoidance, a janela cresce linearmente.
Quando ocorrem trs ACK duplicados, o limiar (Threshold)
ajustado em CongWin/2 e CongWin ajustado para Threshold.
Quando ocorre tempo de confirmao, o Threshold ajustado
para CongWin/2 e o CongWin ajustado para 1 MSS.
Resumo: controle de congestionamento TCP