Redes de Computadores 1
Prof. Marcelo Diniz
Fonte: http://wps.aw.com/br_kurose_rede_1/
3: Camada de Transporte
1
Capítulo 3: Camada de Transporte
Metas do capítulo:
r
entender os
princípios atrás dos
serviços da camada
de transporte:
m
m
m
m
multiplexação/
demultiplexação
transferência
confiável de dados
controle de fluxo
controle de
congestionamento
r
aprender sobre os
protocolos da camada
de transporte da
Internet:
m
m
m
UDP: transporte não
orientado a conexões
TCP: transporte
orientado a conexões
Controle de
congestionamento do
TCP
3: Camada de Transporte
3a-2
Conteúdo do Capítulo 3
3.1 Serviços da camada
de transporte
r 3.2 Multiplexação e
demultiplexação
r 3.3 Transporte não
orientado para
conexão: UDP
r 3.4 Princípios da
transferência
confiável de dados
r
r
3.6 Princípios de
controle de
congestionamento
3: Camada de Transporte
3a-3
Serviços e protocolos de transporte
r
r
r
fornecem comunicação lógica
entre processos de aplicação
executando em diferentes
hospedeiros
os protocolos de transporte são
executados nos sistemas finais:
m lado transmissor: quebra as
mensagens da aplicação em
segmentos, repassa-os para a
camada de rede
m lado receptor: remonta as
mensagens a partir dos
segmentos, repassa-as para a
camada de aplicação
existem mais de um protocolo de
transporte disponível para as
aplicações
m
aplicação
transporte
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
aplicação
transporte
rede
enlace
física
Internet: TCP e UDP
3: Camada de Transporte
3a-4
Camadas de Transporte x rede
r
r
camada de rede:
Analogia doméstica:
camada de transporte:
r
comunicação lógica
entre hospedeiros
12 crianças enviando cartas
para 12 crianças
comunicação lógica
entre os processos
r
m
depende de, estende
serviços da camada de
rede
r
r
r
processos = crianças
mensagens da apl. = cartas
nos envelopes
hospedeiros = casas
protocolo de transporte =
Anna e Bill
protocolo da camada de
rede = serviço postal
3: Camada de Transporte
3a-5
Protocolos da camada de transporte Internet
r
entrega confiável, ordenada
(TCP)
m
m
m
r
entrega não confiável, não
ordenada: UDP
m
r
controle de
congestionamento
controle de fluxo
estabelecimento de conexão
(“setup”)
extensão sem “gorduras” do
“melhor esforço” do IP
serviços não disponíveis:
m
m
aplicação
transporte
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
rede
enlace
física
aplicação
transporte
rede
enlace
física
garantias de atraso máximo
garantias de largura de
banda mínima
3: Camada de Transporte
3a-6
Conteúdo do Capítulo 3
3.1 Serviços da camada
de transporte
r 3.2 Multiplexação e
demultiplexação
r 3.3 Transporte não
orientado para
conexão: UDP
r 3.4 Princípios da
transferência
confiável de dados
r
r
3.6 Princípios de
controle de
congestionamento
3: Camada de Transporte
3a-7
Multiplexação/demultiplexação
Demultiplexação no receptor:
Entrega dos segmentos
recebidos ao socket correto
Multiplexação no transm.:
reúne dados de muitos
sockets, envelopa os dados
com o cabeçalho (usado
posteriormente para a
demultiplexação)
3: Camada de Transporte
3a-8
Como funciona a demultiplexação
r
r
computador recebe os
datagramas IP
m cada datagrama possui os
endereços IP da origem e
do destino
m cada datagrama
transporta 1 segmento da
camada de transporte
m cada segmento possui
números das portas origem
e destino (lembre: números
de portas bem conhecidas
para aplicações
específicas)
O hospedeiro usa os
endereços IP e os números das
portas para direcionar o
segmento ao socket
apropriado
32 bits
porta origem
porta destino
outros campos
do cabeçalho
dados da
aplicação
(mensagem)
formato de segmento
TCP/UDP
3: Camada de Transporte
3a-9
Demultiplexação não orientada a
conexões
r Cria sockets com
números de porta:
DatagramSocket mySocket1 =
new DatagramSocket(9911);
DatagramSocket mySocket2 =
new DatagramSocket(9922);
r
Quando o hospedeiro
recebe segmento UDP:
m
m
verifica no. da porta de
destino no segmento
encaminha o segmento
UDP para o socket com
aquele no. de porta
r socket UDP identificado r Datagramas IP com
diferentes endereços IP
pela dupla:
origem e/ou números de
(end IP dest, no. da porta destino)
porta origem podem ser
encaminhados para o
mesmo socket
3: Camada de Transporte 3a-10
Demultiplexação não orientada a
conexões (cont)
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) fornece “endereço de retorno”
3: Camada de Transporte 3a-11
Demultiplexação Orientada a
Conexões
r
Socket TCP
identificado pela
quádrupla:
m
m
m
m
r
endereço IP origem
número da porta origem
endereço IP destino
número da porta destino
receptor usa todos os
quatro valores para
direcionar o segmento
para o socket
apropriado
r
Servidor pode dar
suporte a muitos sockets
TCP simultâneos:
m
r
cada socket é identificado
pela sua própria quádrupla
Servidores Web têm
sockets diferentes para
cada conexão cliente
m
HTTP não persistente terá
sockets diferentes para
cada pedido
3: Camada de Transporte 3a-12
Demultiplexação Orientada a
Conexões (cont)
P1
P4
P5
P2
P6
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157
cliente
IP: A
DP: 80
S-IP: A
D-IP:C
SP: 9157
servidor
IP: C
DP: 80
S-IP: B
D-IP:C
Cliente
IP:B
3: Camada de Transporte 3a-13
Demultiplexação Orientada a Conexões:
Servidor Web com Threads
P1
P2
P4
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157
cliente
IP: A
DP: 80
S-IP: A
D-IP:C
SP: 9157
servidor
IP: C
DP: 80
S-IP: B
D-IP:C
Cliente
IP:B
3: Camada de Transporte 3a-14
Conteúdo do Capítulo 3
3.1 Serviços da camada
de transporte
r 3.2 Multiplexação e
demultiplexação
r 3.3 Transporte não
orientado para
conexão: UDP
r 3.4 Princípios da
transferência
confiável de dados
r
r
3.6 Princípios de
controle de
congestionamento
3: Camada de Transporte 3a-15
UDP: User Datagram Protocol [RFC 768]
r
r
r
Protocolo de transporte da
Internet mínimo, “sem
gorduras”,
Serviço “melhor esforço”,
segmentos UDP podem ser:
m perdidos
m entregues à aplicação fora
de ordem
sem conexão:
m
m
não há “setup” UDP entre
remetente, receptor
tratamento independente
de cada segmento UDP
Por quê existe um UDP?
r
r
r
r
elimina estabelecimento de
conexão (o que pode causar
retardo)
simples: não se mantém
“estado” da conexão nem no
remetente, nem no
receptor
cabeçalho de segmento
reduzido
Não há controle de
congestionamento: UDP
pode transmitir tão rápido
quanto desejado (e
possível)
3: Camada de Transporte 3a-16
Mais sobre UDP
r
r
muito utilizado para apls. de
meios contínuos (voz, vídeo)
m tolerantes a perdas
m sensíveis à taxa de
transmissão
Comprimento em
bytes do
segmento UDP,
incluindo
cabeçalho
outros usos de UDP (por
quê?):
DNS (nomes)
m SNMP (gerenciamento)
transferência confiável com UDP:
acrescentar confiabilidade na
camada de aplicação
m recuperação de erro
específica à aplicação!
soma de
verificação
32 bits
porta origem
porta dest.
comprimento
checksum
m
r
Dados de
aplicação
(mensagem)
Formato do segmento UDP
3: Camada de Transporte 3a-17
Soma de Verificação (checksum)
UDP
Objetivo: detectar “erros” (ex.: bits trocados) no
segmento transmitido
Transmissor:
r
r
r
r
trata conteúdo do
segmento como seqüência
de inteiros de 16-bits
campo checksum zerado
checksum: soma (adição
usando complemento de 1)
do conteúdo do segmento
transmissor coloca
complemento do valor da
soma no campo checksum
Receptor:
r
r
calcula checksum do
segmento recebido
verifica se checksum
computado é tudo um ‘FFFF’:
m NÃO - erro detectado
m SIM - nenhum erro
detectado. Mas ainda
pode ter erros? Veja
depois ….
de UDP
3: Camada de Transporte 3a-18
Exemplo do Checksum Internet
r
r
Note que:
m Ao adicionar números, o transbordo (vai um) do
bit mais significativo deve ser adicionado ao
resultado
Exemplo: adição de 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
transbordo 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
soma 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
soma de 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
verificação
3: Camada de Transporte
3a-19
Conteúdo do Capítulo 3
3.1 Serviços da camada
de transporte
r 3.2 Multiplexação e
demultiplexação
r 3.3 Transporte não
orientado para
conexão: UDP
r 3.4 Princípios da
transferência
confiável de dados
r
r
3.6 Princípios de
controle de
congestionamento
3: Camada de Transporte 3a-20
Princípios de Transferência confiável de
dados (rdt)
r
r
r
importante nas
camadas de
transporte, enlace
na lista dos 10
tópicos mais
importantes em
redes!
características
do canal não
confiável
determinam a
complexidade de
um protocolo de
transferência
confiável de
dados (rdt)
3: Camada de Transporte 3a-21
Transferência confiável: o ponto de
partida
rdt_send(): chamada de cima, (ex.:
pela apl.). Passa dados p/ serem
entregues à camada sup. do receptor
lado
transmissor
udt_send(): chamada pela
entidade de transporte, p/
transferir pacotes para o receptor
sobre o canal não confiável
deliver_data(): chamada pela
entidade de transporte p/ entregar
dados p/ camada superior
lado
receptor
rdt_rcv(): chamada quando
pacote chega no lado receptor do
canal
3: Camada de Transporte 3a-22
rdt1.0:
transferência confiável sobre canais
confiáveis
r
Canal de transmissão perfeitamente confiável
m
m
r
não há erros de bits
não há perda de pacotes
Funcionamento transmissor e receptor:
m
m
transmissor envia dados pelo canal
receptor lê os dados do canal
3: Camada de Transporte 3a-23
rdt2.0: canal com erros de bits
r
Como recuperar esses erros?
m
m
m
r
reconhecimentos (ACKs): receptor avisa explicitamente ao
transmissor que o pacote foi recebido corretamente
reconhecimentos negativos (NAKs): receptor avisa
explicitamente ao transmissor que o pacote tinha erros
transmissor reenvia o pacote ao receber um NAK
novos mecanismos no rdt2.0 (em relação ao rdt1.0):
m
m
detecção de erros
retorno ao transmissor: mensagens de controle (ACK,NAK)
receptor->transmissor
3: Camada de Transporte 3a-24
rdt2.0 tem uma falha fatal!
O que acontece se o
ACK/NAK for
corrompido?
r
r
Transmissor não sabe o que
se passou no receptor!
não pode apenas
retransmitir: possibilidade
de pacotes duplicados
O que fazer?
r
Lidando c/ duplicatas:
r
r
r
transmissor inclui número
de seqüência em cada
pacote
transmissor retransmite o
último pacote se ACK/NAK
chegar com erro
receptor descarta (não
entrega a aplicação)
pacotes duplicados
retransmitir, mas pode
causar retransmissão de
pacote recebido certo!
3: Camada de Transporte 3a-25
rdt3.0: canais com erros e perdas
Nova hipótese: canal de
transmissão também
pode perder pacotes
(dados ou ACKs)
m
checksum, nº. de seq.,
ACKs, retransmissões
podem ajudar, mas não
serão suficientes
P: como lidar com perdas?
m
m
Abordagem: transmissor
aguarda um tempo
“razoável” pelo ACK
r
r
transmissor espera até
ter certeza que se perdeu
pacote ou ACK, e então
retransmite
r
desvantagens?
retransmite se nenhum ACK
for recebido neste intervalo
se pacote (ou ACK) apenas
atrasado (e não perdido):
m retransmissão será
duplicata, mas uso de no.
de seq. já cuida disto
m receptor deve especificar
nº. de seq do pacote sendo
reconhecido
requer temporizador
3: Camada de Transporte 3a-26
Conteúdo do Capítulo 3
3.1 Serviços da camada
de transporte
r 3.2 Multiplexação e
demultiplexação
r 3.3 Transporte não
orientado para
conexão: UDP
r 3.4 Princípios da
transferência
confiável de dados
r
r
3.6 Princípios de
controle de
congestionamento
3: Camada de Transporte 3b-27
Princípios de Controle de
Congestionamento
Congestionamento:
informalmente: “muitas fontes enviando dados
acima da capacidade da rede de tratá-los”
r diferente de controle de fluxo!
r Sintomas:
m perda de pacotes (saturação de buffers nos
roteadores)
m longos atrasos (enfileiramento nos buffers dos
roteadores)
r um dos 10 problemas mais importantes em redes!
r
3: Camada de Transporte 3b-28
Causas/custos de congestionamento:
cenário 1
r
r
r
r
r
dois remetentes,
dois receptores
um roteador,
buffers infinitos
sem retransmissão
grandes retardos
qdo. congestionada
máxima vazão
alcançável
3: Camada de Transporte 3b-29
Causas/custos de congestionamento:
cenário 2
Um roteador, buffers finitos
r retransmissão pelo remetente de pacote
perdido
r
Hospedeiro A l : dados originais
in
lout
Hospedeiro C
l'in : dados originais mais
dados retransmitidos
Hospedeiro B
Buffers de enlace de saída
finitos compartilhados
Hospedeiro D
3: Camada de Transporte 3b-30
Causas/custos de congestionamento:
cenário 3
r
r
r
quatro remetentes
caminhos com múltiplos enlaces
temporização/retransmissão
Hosp l : dados originais
dados originais mais
edeiro l' : dados
retransmitidos
A
Buffers de enlace de saída
in
lout
in
finitos compartilhados
Hosp
edeir
oB
3: Camada de Transporte 3b-31
Abordagens de controle de congestionamento
Duas abordagens gerais para controle de
congestionamento:
Controle de congestionamento
Controle de
assistido pela rede:
congestionamento
r roteadores enviam
fim a fim :
informações para os sistemas
r
r
r
não usa realimentação
explícita da rede
congestionamento é
inferido a partir das
perdas, e dos atrasos
observados nos sistemas
finais
abordagem usada pelo TCP
finais
m bit indicando
congestionamento
m taxa explícita para envio
pelo transmissor
3: Camada de Transporte 3b-32
Download

Princípios de Transferência confiável de dados