4. Serviços da Camada de Transporte
Oferecem comunicação lógica
entre processos de aplicação aplicação
transporte
rodando em hospedeiros rede
enlace
diferentes física
tra
ns
Protocolos de transporte rodam em
po
sistemas finais
rte
Lado remetente: divide as msgs da
ló
−
gi
aplicação em segmentos, passa à
co
camada de rede
fim
−Lado destinatário: remonta os
a
fim
segmentos em msgs, passa à
camada de aplicação aplicação
transporte
Mais de um protocolo de transporte rede
enlace
disponível às aplicações física
− Internet: TCP e UDP
Fundamentos de Redes de Computadores 4/38
5. Camada de Transporte Versus Rede
Camada de rede: Analogia com a família:
comunicação lógica 12 crianças mandando
entre hospedeiros carta a 12 crianças
Camada de transporte: −
Processos = crianças
comunicação lógica −
Msgs da aplicação =
entre processos cartas nos envelopes
−
Conta com e amplia os
−
Hospedeiros = casas
serviços da camada −
Protocolo de transporte
de rede = Ana e Bill
−
Protocolo da camada
de rede = serviço
postal
Fundamentos de Redes de Computadores 5/38
6. Protocolos da Camada de Transporte da Internet
Remessa confiável e em
aplicação
ordem (TCP) transporte
rede
−Controle de congestionamento enlace
física
−Controle de fluxo rede
lo
enlace rede
gi
−Estabelecimento da conexão
enlace
ca
física
física
le
Remessa não confiável e
nd
rede
-e
desordenada: UDP enlace
nd
física
tra
−Extensão sem luxo do IP pelo rede
ns
enlace
po
“melhor esforço” física
rt
network
rede
data link
Serviços não disponíveis:
enlace
physical
física
rede aplicação
enlace transporte
−Garantias de atraso física rede
enlace
−Garantias de largura de banda física
Fundamentos de Redes de Computadores 6/38
7. Multiplexação / Demultiplexação
demultiplexação no destinatário: multiplexação no remetente:
entregando segmentos colhendo dados de múltiplos
recebidos ao socket correto sockets, envelopando dados
com cabeçalho (usados depois
= socket = processo para demultiplexação)
aplicação P3 P1
P1
aplicação P2 P4 aplicação
transporte transporte transporte
rede rede rede
enlace enlace enlace
física física física
hospedeiro 2 hospedeiro 3
hospedeiro 1
Fundamentos de Redes de Computadores 7/38
8. Como Funciona a Demultiplexação
Hospedeiro recebe 32 bits
datagramas IP
# porta origem # porta destino
−Cada datagrama tem
endereço IP de origem,
endereço IP de destino outros campos de cabeçalho
−Cada datagrama carrega 1
segmento da camada de
transporte dados da
−Cada segmento tem número aplicação
de porta de origem, destino (mensagem)
Hospedeiro usa endereços IP
& números de porta para
formato do segmento TCP/UDP
direcionar segmento ao
socket apropriado
Fundamentos de Redes de Computadores 8/38
9. Demultiplexação não Orientada para Conexão
Cria sockets com números Quando hospedeiro recebe
de porta: segmento UDP:
−verifica número de porta
−
DatagramSocket
mySocket1 = new de destino no segmento
−direciona segmento UDP
DatagramSocket(12534);
−DatagramSocket para socket com esse
mySocket2 = new número de porta
DatagramSocket(12535); Datagramas IP com
Socket UDP identificado diferentes endereços IP
por tupla de dois de origem e/ou números
elementos: de porta de origem
−
(endereço IP destino, direcionados para o
número porta destino) mesmo socket
Fundamentos de Redes de Computadores 9/38
10. DatagramSocket serverSocket = new DatagramSocket(6428);
P2 P3 P1
P1
SP: 6428 SP: 6428
DP: 9157 DP: 5775
SP: 9157 SP: 5775
cliente DP: 6428 DP: 6428 Cliente
servidor
IP: A IP: C IP:B
SP oferece “endereço de retorno”
Fundamentos de Redes de Computadores 10/38
11. Demultiplexação orientada para conexão
Socket TCP identificado Hospedeiro servidor pode
por tupla de 4 admitir muitos sockets
elementos: TCP simultâneos:
−
Endereço IP de origem − Cada socket identificado
−
Número de porta de por usa própria tupla de 4
origem Servidores Web têm
−
Endereço IP de destino diferentes sockets para
−
Número de porta de cada cliente conectando
destino − HTTP não persistente terá
diferentes sockets para
Hospedeiro destinatário cada requisição
usa todos os quatro
valores para direcionar
segmento ao socket
apropriado
Fundamentos de Redes de Computadores 11/38
12. P1 P4 P5 P6 P2 P1
P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157 SP: 9157
cliente DP: 80 DP: 80 cliente
servidor
IP: A S-IP: A IP: C S-IP: B IP:B
D-IP:C D-IP:C
Fundamentos de Redes de Computadores 12/38
13. Demultiplexação orientada para conexão: servidor Web
threaded
P1 P4 P2 P1
P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
SP: 9157 SP: 9157
cliente DP: 80 DP: 80 cliente
servidor
IP: A S-IP: A IP: C S-IP: B IP:B
D-IP:C D-IP:C
Fundamentos de Redes de Computadores 13/38
14. Transporte não Orientado para Conexão: UDP
UDP: User Datagram Protocol Por que existe um UDP?
[RFC 768] −Sem estabelecimento de
Protocolo de transporte da Internet
conexão (que pode gerar
“sem luxo”, básico
atraso)
Serviço de “melhor esforço”,
−Simples: sem estado de
segmentos UDP podem ser:
−perdidos conexão no remetente,
−entregues à aplicação fora da destinatário
ordem −Cabeçalho de segmento
Sem conexão: pequeno
−sem handshaking entre remetente e −Sem controle de
destinatário UDP
−Cada segmento UDP tratado congestionamento: UDP
independente dos outros pode transmitir o mais
rápido possível
Fundamentos de Redes de Computadores 14/38
15. UDP continuando
Normalmente usado para
streaming de aplicações 32 bits
de multimídia
tamanho, # porta origem # porta dest.
−Tolerante a perdas em bytes, do tamanho soma verif.
−Sensível à taxa segmento UDP,
incluindo
Outros usos do UDP cabeçalho
−DNS
−SNMP
dados da
Transferência confiável por aplicação
(mensagem)
UDP: aumenta
confiabilidade na camada
de aplicação formato de segmento UDP
− recuperação de erro
específica da aplicação!
Fundamentos de Redes de Computadores 15/38
16. Soma de Verificação UDP
Objetivo: detectar “erros” (ex., bits invertidos) no
segmento transmitido
Remetente: Destinatário:
Trata conteúdo de segmento como Calcula soma de verificação do
sequência de inteiros de 16 bits segmento recebido
Soma de verificação (checksum): Verifica se soma de verificação
adição (soma por complemento de calculada igual ao valor do campo
1) do conteúdo do segmento de soma de verificação:
Remetente coloca valor da soma de NÃO – erro detectado
verificação no campo de soma de
SIM – nenhum erro detectado. Mas
verificação UDP
pode haver erros mesmo assim?
Vamos ver mais pra frente
Lembram do digito verificador de
documentos?
Fundamentos de Redes de Computadores 16/38
17. Exemplo de Soma de Verificação da Internet
nota
−
Ao somar números, um carryout do bit mais
significativo precisa ser somado ao resultado
exemplo: somar 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
contorna 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
Fundamentos de Redes de Computadores 17/38
18. Princípios de transferência confiável de dados
●
Importante nas camadas de aplicação,
transporte e enlace
●
Lista dos 10 mais importantes tópicos de redes!
●
Características do canal confiável determinarão
complexidade do protocolo de transferência
confiável (rdt – Reliable Data Transfer)
Fundamentos de Redes de Computadores 18/38
19. Transferência confiável de dados: introdução
rdt_send(): chamado de cima, (p. e., deliver_data(): chamado pela
pela apl.). Dados passados para remeter à rdt para remeter dados para cima
camada superior do destinatário
lado lado
remetente destinatário
udt_send(): chamado pela rdt, rdt_rcv(): chamado quando pacote
para transferir pacote por canal chega no lado destinatário do canal
não confiável ao destinatário
Fundamentos de Redes de Computadores 19/38
20. vamos:
Desenvolver de forma incremental os lados remetente e destinatário do protocolo
de transferência confiável de dados (rdt)
Considerar apenas a transf. de dados unidirecional
Mas informações de controle fluirão nas duas direções!
●
Usar máquinas de estado finito (FSM) para especificar remetente, destinatário
evento causando transição de estado
ações tomadas sobre transição de estado
estado: quando neste
“estado”, próximo estado estado
estado determinado 1 evento
2
exclusivamente pelo ações
próximo evento
Fundamentos de Redes de Computadores 20/38
21. Rdt1.0: Transferência confiável por canal
confiável
Canal subjacente perfeitamente confiável
Sem erros de bit
Sem perda de pacotes
FSMs separadas para remetente e destinatário:
−
remetente envia dados para canal subjacente
−
destinatário lê dados do canal subjacente
Espera rdt_send(dados) Espera rdt_rcv(pacote)
chamada chamada
extract (pacote,
de cima packet = de baixo
dados)
make_pkt(dados)
deliver_data(dados)
udt_send(pacote)
remetente destinatário
Fundamentos de Redes de Computadores 21/38
22. Rdt2.0: Canal com erros de bit
Canal subjacente pode inverter bits no pacote
− Soma de verificação para detectar erros de bit
A questão: como recuperar-se dos erros:
−Reconhecimentos (ACKs): destinatário diz explicitamente ao
remetente que o pacote foi recebido OK
−Reconhecimentos negativas (NAKs): destinatário diz
explicitamente ao remetente que o pacote teve erros
−Remetente retransmite pacote ao receber NAK
Novos mecanismos no rdt2.0 (além do rdt1.0):
−Detecção de erro
−Feedback do destinatário: msgs de controle (ACK,NAK)
destinatário->remetente
Fundamentos de Redes de Computadores 22/38
23. Rdt2.0: Especificação da FSM (Máquina de Estado
Finito)
rdt_send(dados)
snkpkt = make_pkt(dados,soma_verif)
udt_send(pctenv) destinatário
rdt_rcv(pctrec) &&
Espera Espera isNAK(pctrec)
rdt_rcv(pctrec) &&
chamada ACK ou
de cima
udt_send(pctenv) corrupt(pctrec)
NAK
udt_send(NAK)
rdt_rcv(pctrec) && isACK(pctrec)
Espera
Λ chamada
de baixo
remetente
rdt_rcv(pctrec) &&
notcorrupt(pctrec)
extract(pctrec,dados)
deliver_data(dados)
udt_send(ACK)
Fundamentos de Redes de Computadores 23/38
24. Rdt2.0: Operação sem erros
rdt_send(dados)
3 snkpkt = make_pkt(dados,soma_verif)
udt_send(pctenv) destinatário
rdt_rcv(pctrec) &&
Espera Espera isNAK(pctrec)
rdt_rcv(pctrec) &&
chamada ACK ou
de cima
udt_send(pctenv) corrupt(pctrec)
1 NAK udt_send(NAK)
rdt_rcv(pctrec) && isACK(pctrec) 4
Espera
Λ chamada
remetente 2 de baixo
6
rdt_rcv(pctrec) &&
5 notcorrupt(pctrec)
extract(pctrec,dados)
deliver_data(dados)
udt_send(ACK)
Fundamentos de Redes de Computadores 24/38
25. rdt2.0: Cenário de erro
rdt_send(dados)
3 snkpkt = make_pkt(dados,soma_verif)
udt_send(pctenv) destinatário
rdt_rcv(pctrec) &&
isNAK(pctrec) 4
Espera Espera rdt_rcv(pctrec) &&
chamada ACK ou
de cima
udt_send(pctenv) corrupt(pctrec)
1 NAK udt_send(NAK)
5
rdt_rcv(pctrec) && isACK(pctrec)
Espera
Λ chamada
6
remetente 2 de baixo
rdt_rcv(pctrec) &&
7
notcorrupt(pctrec)
extract(pctrec,dados)
deliver_data(dados)
udt_send(ACK)
Fundamentos de Redes de Computadores 25/38
26. Rdt2.0 tem uma falha fatal!
O que acontece se Tratando de duplicatas:
ACK/NAK for −remetente retransmite
pacote atual se ACK/NAK
corrompido? corrompido
−
remetente não sabe o −remetente acrescenta
que aconteceu no número de sequência a
destinatário! cada pacote
−destinatário descarta (não
−
não pode simplesmente
sobe) pacote duplicado
retransmitir: possível
duplicação
remetente envia um pacote,
depois espera resposta do
destinatário
Fundamentos de Redes de Computadores 26/38
27. Rdt2.1: Remetente trata de ACK/NAKs
corrompidos
rdt_send(dados)
pctenv = make_pkt(0, dados, checksum)
udt_send(pctenv) rdt_rcv(pctrec) &&
Espera ( corrupt(pctrec) ||
Espera
chamada 0 ACK ou isNAK(pctrec) )
de cima NAK 0 udt_send(pctenv)
rdt_rcv(pctrec)
rdt_rcv(pctrec)
&& notcorrupt(pctrec)
&& notcorrupt(pctrec)
&& isACK(pctrec)
&& isACK(pctrec)
Λ
Λ
Espera Espera
ACK ou chamada 1
rdt_rcv(pctrec) && NAK 1 de cima
( corrupt(pctrec) ||
rdt_send(dados)
isNAK(pctrec) )
udt_send(pctenv) pctenv = make_pkt(1, dados,
checksum)
udt_send(pctenv)
Fundamentos de Redes de Computadores 27/38
29. Rdt2.1: Discussão
Remetente: Destinatário:
−
# seq acrescentado ao −
deve verificar se pacote
pkt recebido está
−
dois #s seq. (0,1) duplicado
bastarão. Por quê? −
estado indica se 0 ou 1
−
deve verificar se é # seq. esperado do
ACK/NAK recebido foi pacote
corrompido
−
o dobro de estados nota: destinatário não
−
estado de “lembrar” se sabe se seu último
pacote “atual” tem #
seq. 0 ou 1 ACK/NAK foi recebido
OK no remetente
Fundamentos de Redes de Computadores 29/38
30. Rdt2.2: Um protocolo sem NAK
Mesma funcionalidade de rdt2.1, usando apenas
ACKs
Em vez de NAK, destinatário envia ACK para
último pacote recebido OK
−
Destinatário precisa incluir explicitamente # seq. do
pacote sendo reconhecido com ACK
ACK duplicado no remetente resulta na mesma
ação de NAK: retransmitir pacote atual
Fundamentos de Redes de Computadores 30/38
31. Rdt2.2: Fragmentos do remetente, destinatário
rdt_send(dados)
pctenv = make_pkt(0, dados, checksum)
udt_send(pctenv) rdt_rcv(pctrec) &&
Espera Espera ( corrupt(pctrec) ||
chamada 0 ACK isACK(pctrec,1) )
de cima 0 udt_send(pctenv)
fragmento FSM
do remetente rdt_rcv(pctrec)
&& notcorrupt(pctrec)
rdt_rcv(pctrec) && && isACK(pctrec,0)
(corrupt(pctrec) || Λ
Espera fragmento FSM
0 de
has_seq1(pctrec)) baixo do destinatário
udt_send(pctenv)
rdt_rcv(pctrec) && notcorrupt(pctrec)
&& has_seq1(pctrec)
extract(pctrec,dados)
deliver_data(dados)
pctenv = make_pkt(ACK1, chksum)
udt_send(pctenv)
Fundamentos de Redes de Computadores 31/38
32. Rdt3.0: Canais com erros e perda
nova suposição: canal Técnica: remetente espera
quantidade “razoável” de tempo
subjacente também por ACK
pode perder pacotes Retransmite se não chegar ACK
nesse tempo
(dados ou ACKs) Se pct (ou ACK) simplesmente
−
soma de verificação, # atrasado (não perdido):
seq., ACKs, −Retransmissão será duplicada, mas
os #s de seq. já cuidam disso
retransmissões serão −Destinatário deve especificar # seq.
úteis, mas não do pacote sendo reconhecido com
ACK
suficientes Requer contador regressivo
Fundamentos de Redes de Computadores 32/38
34. RDT 3.0 em ação
Fundamentos de Redes de Computadores 34/38
35. RDT 3.0 em ação
Fundamentos de Redes de Computadores 35/38
36. Desempenho do rdt3.0
rdt3.0 funciona, mas com desempenho ruim pois fica
esperando um ack.
ex.: enlace 1 Gbps, 15 ms atraso propriedade, pacote 8000
bits:
L 8000bits
d trans = = 9
= 8 microssegundos
R 10 bps
U remet: utilização – fração do tempo remet. ocupado
enviando
L/ R 0,008
U = = = 0,00027
remet 30,008
RTT +L / R m icrosec
onds
Pct. 1 KB cada 30 ms -> 33 kB/s vazão em enlace de 1
Gbps
protocolo de rede limita uso de recursos físicos!
Fundamentos de Redes de Computadores 36/38
37. RDT 3.0: Operação Pare e Espere
L/ R 0,008
U = = = 0,00027
remet 30,008
RTT +L / R microsec
onds
Fundamentos de Redes de Computadores 37/38
38. Slides baseados no material do livro Fundamento
de Redes da Pearson Editora.
Fundamentos de Redes de Computadores 38/38