Professional Documents
Culture Documents
Redes de Computadores I
Instituto de Informtica UFG Prof. Fbio M. Costa
(slides baseados em [Kurose&Ross2003])
Resumo do Captulo:
servios da camada de transporte multiplexao/demultiplexao transporte sem conexo: UDP princpios de transferncia
instanciao e implementao
executados nos sistemas finais da rede (hosts ou end systems) Servio de Transporte versus Servios de Rede:
sp an tr
te or l co gi
-a m fi
camada de rede: transferncia de dados entre computadores (end systems) camada de transporte: transferncia de dados entre processos
fi
transporte
TCP
sp an tr
t or e
g l o ic
m fi
No-confivel (best-effort),
im -f -a
servios no disponveis:
Multiplexao / Demultiplexao
Segmento - unidade de dados trocada entre entidades da camada de transporte
P3
receptor
M M
P4 P2
P1
aplicao transporte rede
M
Multiplexao / Demultiplexao
Multiplexao: reunir dados de mltiplos processo de aplicao, juntar cabealhos com informaes para demultiplexao
Multiplexao/demultiplexao:
baseadas no nmero de porta
nmeros de porta origem e destino em cada segmento Lembre-se: portas com nmeros bem-conhecidos so usadas para aplicaes especficas
Multiplexao/Demultiplexao
Em Protocolos Sem Conexo (UDP)
Baseado no socket UDP de destino Socket UDP = Endereo IP + Nmero da Porta Baseado no socket TCP de destino Socket TCP:
Endereo IP de Origem + Nmero da Porta de Origem Endereo IP de Destino + Nmero da Porta de Dest.
Multiplexao: Exemplo 1
host A
porta origem: x porta dest.: 53
servidor B
Multiplexao: Exemplo 2
Processo (ou thread) da Aplicao Socket TCP Camada de Transporte (Demultiplex.)
IP Origem: C IP Dest: B
porta origem: y porta dest.: 80
Servio best
effort , segmentos UDP podem ser: perdidos entregues fora de ordem para a aplicao Sem conexo: no h apresentao (handshaking) entre o UDP transmissor e o receptor cada segmento UDP tratado de forma independente dos outros
baixo overhead
no h controle de congestionam.:
UDP pode enviar segmentos to rpido quanto desejado (e possvel) Cap. 3: Camada de Transporte 10
que?):
DNS SNMP
Transferncia confivel
11
UDP checksum
Objetivo: detectar erros (ex., bits trocados) no segmento transmitido Transmissor: Receptor:
trata o contedo do
computa o checksum do
segmento recebido
verifica se o checksum
de 16 em 16 bits
NO - erro detectado SIM - no h erros. Mas, talvez haja erros apesar disto? Mais sobre isto depois3:. Cap. Camada de Transporte
12
network layer
13
lado transmissor
lado receptor
udt_send(): chamada pela entidade de transporte, para transferir pacotes para o receptor atravs do canal no confivel
rdt_rcv(): chamada pela entidade da camada inferior quando o pacote chega ao lado receptor do canal Cap. 3: Camada de Transporte 14
estado 1
evento aes
estado 2
15
no h erros de bits no h perdas de pacotes transmissor envia dados para o canal subjacente receptor l os dados do canal subjacente
16
reconhecimentos (ACKs): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tem erros transmissor reenvia o pacote quando da recepo de um NAK
deteo de erros retorno do receptor: mensagens de controle (ACK,NAK) receptor -> transmissor retransmisso de pacotes recebidos com erro
Cap. 3: Camada de Transporte 17
FSM do transmissor
FSM do receptor
Cap. 3: Camada de Transporte 18
FSM do transmissor
FSM do receptor
Cap. 3: Camada de Transporte 19
FSM do transmissor
FSM do receptor
Cap. 3: Camada de Transporte 20
Tratando duplicatas:
O que fazer?
para reconhecer o ACK/NAK do receptor. Mas o que acontece se este ACK/NAK se perdem? receptor retransmite o ACK/NAK. Mas isto poderia causar confuso
nmero de seqncia em cada pacote Transmissor reenvia o ltimo pacote se ACK/NAK for perdido receptor descarta (no passa para a aplicao) pacotes duplicados
transmissor acrescenta
22
23
24
rdt2.1: Discusso
Transmissor:
adiciona nmero de
Receptor:
deve verificar se o pacote
seqncia ao pacote
Dois nmeros (0 e 1)
recebido duplicado
bastam. Porque?
deve verificar se os
estados
!
FSM do transmissor
26
checksum, nmeros de seqncia, ACKs, retransmisses sero de ajuda, mas no o bastante transmissor espera at que certos dados ou ACKs sejam perdidos, ento retransmite problemas?
timeout
retransmisso ser duplicata, mas os nmeros de seqncia j tratam com isso receptor deve especificar o nmero de seqncia do pacote sendo reconhecido
Cap. 3: Camada de Transporte 27
rdt3.0 sender
28
rdt3.0 em ao
rdt3.0 em ao
30
Desempenho do rdt3.0
rdt3.0 funciona, mas o desempenho sofrvel exemplo: enlace de 1 Gbps, 15 ms de atraso de propagao, pacotes
de 1KB:
transmisso =
= 8 s 8 s 30,016 ms = 0.00015
Utilizao = U =
Um pacote de 1KB cada 30 ms -> 33kB/seg de vazo sobre um canal de 1 Gbps o protocolo de rede limita o uso dos recursos fsicos!
31
faixa de nmeros de seqncia deve ser aumentada armazenamento dos pacotes no transmissor e/ou no receptor
32
Go-Back-N
Transmissor:
Nmero de seqncia com k bits no cabealho do pacote janela de at N, pacotes no reconhecidos, consecutivos, so
permitidos
timeout: retransmite pacote mais antigo e todos os demais pacotes que 33 estejam dentro da janela Cap. 3: Camada de Transporte
Dados a enviar
Avana a janela
Ocorreu timeout
Possveis respostas
Protocolo assume que a rede/camada
Suficiente para lidar com a possibilidade de reordenao de pacotes pela camada inferior?
Cap. 3: Camada de Transporte 35
expectedseqnum++
receptor simples:
somente ACK: sempre envia ACK para pacotes corretamente
pode gerar ACKs duplicados precisa lembrar apenas do nmero de seqncia esperado (expectedseqnum) descarte (no armazena) -> no h buffer de recepo! reconhece pacote com o mais alto nmero de seqncia em ordem
36
37
Retransmisso Seletiva
Receptor reconhece
transmissor temporiza cada pacote no reconhecido N nmeros de seqncia consecutivos novamente limita a quantidade de pacotes enviados, mas no reconhecidos (i.e., com ACK pendente)
Cap. 3: Camada de Transporte 38
Janela de transmisso
Retransmisso seletiva
transmissor
dados da camada superior :
receptor
se o prximo nmero de seqncia a ser usado est dentro da janela, envia o pacote reenvia pacote n, e redispara seu temporizador de timeout marca pacote n como recebido se n o menor pacote no reconhecido, avana a base da janela para o prximo nmero de seqncia no reconhecido
timeout(n):
ACK(n) em [sendbase,sendbase+N]:
pkt n em [rcvbase-N,rcvbase-1]
ACK(n)
caso contrrio:
ignora
40
Retransmisso seletiva em ao
41
dados duplicados como novos (figura a) Q: qual a relao entre o espao de numerao seqencial e o tamanho da janela?
42
Exerccios
Problemas: 5, 6, 7, 10, 12, 16, 18, 19
2a. ou 3a. Edio - Kurose&Ross Implementar incrementalmente os protocolos estudados na seo 3.4 (em Java ou em C) Sobre UDP, como se fosse a camada de rede Analisar o desempenho dos protocolos em uma rede local
nfase no throughput e eficincia de utilizao
Prtico:
Lab. de Redes
43