Comparação entre as camadas
 Camada
de Transporte repousa exatamente a
camada de rede.
 Protocolo da camada de transporte fornece
comunicação lógica entre processos, rodando em
hosts diferentes.
 Protocolo da camada de rede fornece
comunicação lógica entre hosts.
Esta distinção é sutil, mas MUITO importante!!!
3: Camada de Transporte
3a-1
Camada de Transporte X Camada de Rede
 Considere 12 irmãos numa casa em São Paulo.
 E outros 12 irmãos em outra casa em Boa Vista no Acre.
 Os de SP São primos daqueles em Boa Vista, e
escrevem uns para os outros semanalmente.
 Em SP, João recolhe as cartas dos irmãos e as entrega ao
correio.
 No Acre, Maria recolhe as cartas dos irmãos, e as
entrega ao correio.
 Ambos também fazem a distribuição local do que chega.
3: Camada de Transporte
3a-2
Camada de Transporte X Camada de Rede (2)
 Hosts (end systems) = Casas.
Processos = os primos que trocam mensagens.
 Mensagens da Aplicação = cartas em envelopes.
 Protocolo da camada de rede = serviço postal (correio).
 Protocolo da camada de transporte = João e Maria.
3: Camada de Transporte
3a-3
Capítulo 3: Camada de Transporte
Metas do capítulo:
Resumo do Capítulo:
 compreender os
 serviços da camada de transporte
princípios atrás dos
serviços da camada de
transporte:




multiplexação/
demultiplexação
transferência confiável
de dados
controle de fluxo
controle de
congestionamento
 instanciação e
implementação na
Internet
 multiplexação/demultiplexação
 transporte sem conexão: UDP
 princípios de transferência confiável
de dados
 transporte orientado a conexão: TCP



transferência confiável
controle de fluxo
gerenciamento de conexões
 princípios de controle de
congestionamento
 controle de congestionamento em TCP
3: Camada de Transporte
3a-4
Serviços e protocolos de transporte
 provê




comunicação lógica
entre processos de aplicação
executando em hospedeiros
diferentes
protocolos de transporte
executam em sistemas
terminais
serviços das camadas de
transporte X rede:
camada de rede : dados
transferidos entre sistemas
camada de transporte: dados
transferidos entre processos

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
depende de, estende serviços
da camada de rede
3: Camada de Transporte
3a-5
Serviços e protocolos de transporte (2)
 Do ponto de vista da APLICAÇÃO a camada de
transporte permite enxergar os sistemas como se eles
estivessem fisicamente conectados.
Mesmo que existam vários roteadores, links e outros equipamentos no
caminho.
 A camada de Aplicação não tem que se preocupar com os
detalhes físicos da infra-estrutura de interligação,
usada para carregar as mensagens.
3: Camada de Transporte
3a-6
Serviços e protocolos de transporte
 Como já foi dito:

Protocolos de transporte são
implementados nos sistemas de
extremidade (end systems) e
não nos roteadores
intermediários.
 TRANSPORTE: Camada 4,
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
superior à camada de rede
3: Camada de Transporte
3a-7
Protocolos da camada de transporte
Serviços de transporte na
Internet:
 entrega confiável, ordenada,
ponto a ponto (TCP)



congestionamento
controle de fluxo
estabelecimento de conexão
(setup)
 entrega não confiável,
(“melhor esforço”), não
ordenada, ponto a ponto ou
multiponto: UDP
 serviços não disponíveis:



tempo-real
garantias de banda
multiponto confiável
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
3: Camada de Transporte
3a-8
Multiplexação/demultiplexação
Lembrança: segmento
unidade de dados trocada
entre entidades da camada de
transporte
= TPDU: transport protocol
data unit
dados da camada
de aplicação
cabeçalho
de segmento
segmento
Ht
P1
M
M
Hn segmento
aplicação
transporte
rede
Demultiplexação: entrega de
segmentos recebidos para os
processos da camada de
aplicação
corretos
P3
receptor
M
M
aplicação
transporte
rede
P4
M
P2
aplicação
transporte
rede
3: Camada de Transporte
3a-9
Multiplexação/demultiplexação
Multiplexação:
juntar dados de múltiplos
processos de apl, envelopando
dados com cabeçalho (usado
depois para demultiplexação)
multiplexação/demultiplexação:
 baseadas em números de porta
e endereços IP de remetente e
receptor
 números de porta de
remetente/receptor em
cada segmento
 lembrete: número de porta
bem conhecido para
aplicações específicas
32 bits
porta remetente porta receptor
outros campos
do cabeçalho
dados da
aplicação
(mensagem)
formato de segmento
TCP/UDP
3: Camada de Transporte 3a-10
Multiplexação/demultiplexação: exemplos
estação
A
porta orig.: x
porta dest: 23
servidor
B
porta orig:23
porta dest: x
IP orig : C
IP dest: B
porta orig: y
porta dest: 80
uso de portas:
apl. simples de telnet
cliente WWW
estação A
Web client
host C
IP orig: A
IP dest: B
porta orig: x
porta dest: 80
IP orig: C
IP dest: B
porta orig: x
porta dest: 80
servidor
WWW B
uso de portas :
servidor WWW
3: Camada de Transporte 3a-11
UDP: User Datagram Protocol [RFC 768]
 Protocolo de transporte da
Internet mínimo, “sem
frescura”,
 Serviço “melhor esforço”,
segmentos UDP podem ser:
 perdidos
 entregues à aplicação fora
de ordem do remesso

sem conexão:


não há “setup” UDP entre
remetente, receptor
tratamento independente
de cada segmento UDP
Por quê existe um UDP?
 elimina estabelecimento de
conexão (o que pode causar
retardo)
 simples: não se mantém
“estado” da conexão no
remetente/receptor
 pequeno cabeçalho de
segmento
 sem controle de
congestionamento: UDP
pode transmitir o mais
rápido possível
3: Camada de Transporte 3a-12
Mais sobre UDP
Comprimento em
bytes do
segmento UDP,
incluindo
 muito utilizado para apls. de
cabeçalho
meios contínuos (voz, vídeo)


tolerantes de perdas
sensíveis à taxa de
transmissão
 outros usos de UDP (por
32 bits
porta origem
porta dest.
comprimento
checksum
quê?):
DNS (nomes)
 SNMP (gerenciamento)
 transferência confiável com
UDP: incluir confiabilidade na
camada de aplicação
 recuperação de erro
específica à apl.!

Dados de
aplicação
(mensagem)
UDP segment format
3: Camada de Transporte 3a-13
Checksum UDP
Meta: detecta “erro” (e.g., bits invertidos) no
segmento transmitido
Remetente:
 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
 remetente coloca
complemento do valor da
soma no campo checksum
de UDP
Receptor:
 calcula checksum do
segmento recebido
 verifica se checksum
computado é zero:
 NÃO - erro detectado
 SIM - nenhum erro
detectado. Mas ainda
pode ter erros? Veja
depois ….
3: Camada de Transporte 3a-14
Exemplo de cálculo do checksum (1)
Considere 3 palavras de 16 bits sendo transmitidas:
0110011001100110
0101010101010101
0000111100001111
A soma das duas primeiras palavras é:
0110011001100110
0101010101010101
10 1110111011 1011
Adicionando a terceira palavra, a soma acima fica:
10 111011101 11011
0000111100001111
1100101011001010
 Os complementos de 1 são obtidos convertendo todos os 0’s
para 1’s, e todos os 1’s para 0’s.
3: Camada de Transporte 3a-15
Exemplo de cálculo do Checksum (2)
Assim o complemento de 1’s da soma 1100101011001010
é 0011010100110101
 Este valor se torna o checksum
 No receptor, todas as palavras de 16 bits são somadas,
incluindo o checksum.
 Se não foram introduzidos erros no pacote, a soma no
receptor certamente deverá resultar em 1111111111111111.
 Se um dos bits for zero, então algum erro foi introduzido no
pacote.
Pergunta para casa: Por que o UDP usa o checksum, se a maioria
dos protocolos data-link(inferiores), incluindo o popular
Ethernet, também fornece verificação de erro?
3: Camada de Transporte 3a-16
Princípios de Transferência confiável de
dados (rdt)
 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-17
Transferência confiável de dados (rdt):
como começar
rdt_send(): chamada de cima,
(p.ex.,pela apl.). Dados recebidos p/
entregar à camada sup. do receptor
send
side
udt_send(): chamada por
rdt, p/ transferir pacote pelo
canal ñ confiável ao receptor
deliver_data(): chamada
por rdt p/ entregar dados
p/ camada superior
receive
side
rdt_rcv(): chamada quando
pacote chega chega no lado
receptor do canal
3: Camada de Transporte 3a-18
Transferência confiável de dados (rdt):
como começar
Iremos:
 desenvolver incrementalmente os lados
remetente, receptor do protocolo RDT
 considerar apenas fluxo unidirecional de dados

mas info de controle flui em ambos os sentidos!
 Usar máquinas de estados finitos (FSM) p/
especificar remetente, receptor
event causing state transition
actions taken on state transition
estado: neste “estado”
o próximo estado é
determinado
unicamente pelo
próximo evento
state
1
event
actions
state
2
3: Camada de Transporte 3a-19
Rdt1.0: transferência confiável usando um canal
confiável
 canal subjacente perfeitamente confiável
 não tem erros de bits
 não tem perda de pacotes
 FSMs separadas para remetente, receptor:
 remetente envia dados pelo canal subjacente
 receptor recebe dados do canal subjacente
3: Camada de Transporte 3a-20
Mensagem de Controle:
 Permitem o receptor informar ao emissor o que foi
recebido corretamente e o que foi recebido com
erro, exigindo repetição.
 Em redes de computadores, protocolo RDT
baseados em retransmissão são chamados de
Protocolos ARQ (Automatic Repeat reQuest).
3: Camada de Transporte 3a-21
Rdt2.0: canal com erros de bits
 canal subjacente pode inverter bits no pacote
 lembre-se: checksum UDP pode detectar erros de bits

a questão: como recuperar dos erros?

reconhecimentos (ACKs): receptor avisa explicitamente ao

reconhecimentos negativos (NAKs): receptor avisa


remetente que pacote chegou bem
explicitamente ao remetente que pacote tinha erros
remetente retransmite pacote ao receber um NAK
cenários humanos usando ACKs, NAKs?
 novos mecanismos em rdt2.0 (em relação ao
rdt1.0):


deteção de erros
realimentação pelo receptor: msgs de controle (ACK,NAK)
receptor->remetente
3: Camada de Transporte 3a-22
Novas capacidades em RDT 2.0
3 (três) capacidades adicionais são exigidas em
protocolos ARQ para lidar com a presença de erros
de bits:
 Detecção de erros: mecanismo para permitir que o
receptor identifique quando os erros de bits
ocorreram.
 Realimentação (feedback) pelo receptor:
mensagens de controle (ACK, NAK) trocadas entre
receptor → remetente.
 Retransmissão: para corrigir os erros detectados.
Estes novos mecanismos estão presentes em RDT 2.0
(além do RDT 1.0)
3: Camada de Transporte 3a-23
rdt2.0: especificação da FSM
FSM do remetente
FSM do receptor
3: Camada de Transporte 3a-24
rdt2.0: especificação da FSM - Emissor
Aguarda dados
da aplicação
Possui 2 estados: Em um estado aguarda
dados da camada superior. Em outro
estado, aguarda ACK ou NAK do
receptor.
Aguarda ACK ou
NAK do receptor
Recebe um NAK , reenvia o
último pacote atual, e retorna a
aguardar um ACK ou NAK.Não
pode aceitar dados da da camada
superior (stop-and-wait).
Se receber um ACK
confirmando que um dado
atual foi recebido, retorna ao
estado de aguardar um
pacote da camada superior
3: Camada de Transporte 3a-25
Rdt 2.0 – Especificações da FSM - Receptor
Possui 1 estado: ao receber um
pacote, responde com ACK ou NAK,
dependendo se o pacote está ou não
corrompido.
Pacote recebido apresenta
erro. Emite um NAK, e
retorna ao estado de
aguardar.
Pacote recebido está
íntegro. Emite um ACK,
confirmando e retorna ao
estado de aguardar.
3: Camada de Transporte 3a-26
rdt2.0: em ação (sem erros)
FSM do remetente
FSM do receptor
3: Camada de Transporte 3a-27
rdt2.0: em ação (cenário de erro)
FSM do remetente
FSM do receptor
3: Camada de Transporte 3a-28
rdt2.0 tem uma falha fatal!
O que acontece se
ACK/NAK com erro?
 Remetente não sabe o que
passou no receptor!
 não se pode apenas
retransmitir: possibilidade
de pacotes duplicados
O que fazer?
 remetente usa ACKs/NAKs
p/ ACK/NAK do receptor?
E se perder ACK/NAK do
remetente?
 retransmitir, mas pode
causar retransmissão de
pacote recebido certo!
Lidando c/ duplicação:
 remetente inclui
número de
seqüência p/ cada pacote
 remetente retransmite
pacote atual se ACK/NAK
recebido com erro
 receptor descarta (não
entrega) pacote duplicado
para e espera
Remetente envia um pacote,
e então aguarda resposta
do receptor
3: Camada de Transporte 3a-29
rdt2.1: remetente, trata ACK/NAKs c/ erro
Insere um nº de
seqüência no pacote
Deve verificar
se ACK/NAK
recebido tinha
erro
3: Camada de Transporte 3a-30
rdt2.1: receptor, trata ACK/NAKs com erro
Deve checar se pacote
recebido é duplicado.
Estado indica se nº de
seqüência esperado é 0 ou 1.
3: Camada de Transporte 3a-31
rdt2.1: discussão
Remetente:
 no. de seq no pacote
 bastam dois nos. de
seq. (0,1). Por quê?
 deve checar se
ACK/NAK recebido
tinha erro
 duplicou o no. de
estados

Receptor:
 deve checar se pacote
recebido é duplicado

estado indica se no. de
seq. esperado é 0 ou 1
 note: receptor não tem
como saber se último
ACK/NAK foi recebido
bem pelo remetente
estado deve “lembrar”
se pacote “corrente”
tem no. de seq. 0 ou 1
3: Camada de Transporte 3a-32
rdt2.2: um protocolo sem NAKs
FSM do
remetente
 mesma funcionalidade
que rdt2.1, só com ACKs
 ao invés de NAK,
receptor envia ACK p/
último pacote recebido
bem

receptor deve incluir
explicitamente no. de seq
do pacote reconhecido
!
 ACK duplicado no
remetente resulta na
mesma ação que o NAK:
retransmite pacote atual
3: Camada de Transporte 3a-33
rdt3.0: canais com erros e perdas
Nova suposição: canal
subjacente também
pode perder pacotes
(dados ou ACKs)
Abordagem: remetente
aguarda um tempo
“razoável” pelo ACK
 retransmite e nenhum ACK
recebido neste intervalo
 se pacote (ou ACK) apenas
atrasado (e não perdido):
 retransmissão será
duplicada, mas uso de no.
P: como lidar com perdas?
de seq. já cuida disto
 remetente espera até ter
 receptor deve especificar
certeza que se perdeu
no. de seq do pacote sendo
pacote ou ACK, e então
reconhecido
retransmite
 requer temporizador
 eca!: desvantagens?

checksum, no. de seq.,
ACKs, retransmissões
podem ajudar, mas não
serão suficientes
3: Camada de Transporte 3a-34
rdt3.0: remetente
3: Camada de Transporte 3a-35
rdt3.0 em ação
3: Camada de Transporte 3a-36
rdt3.0 em ação
3: Camada de Transporte 3a-37
Desempenho de rdt3.0
 rdt3.0 funciona, porém seu desempenho é muito ruim
 exemplo: enlace de 1 Gbps, retardo fim a fim de 15 ms,
pacote de 1KB:
Ttransmitir=
8kb/pacote
= 8 microseg
10**9 b/seg
8 microseg
fração do tempo
=
= 0,00015
Utilização = U = remetente ocupado
30.016 mseg


pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num enlace
de 1 Gbps
protocolo limita uso dos recursos físicos!
3: Camada de Transporte 3a-38
Protocolos “dutados” (pipelined)
Dutagem (pipelining): remetente admite múltiplos
pacotes “em trânsito”, ainda não reconhecidos


faixa de números de seqüência deve ser aumentada
buffers no remetente e/ou no receptor
 Duas formas genéricas de protocolos dutados:
volta-N, retransmissão seletiva
3: Camada de Transporte 3a-39
Volta-N
Remetente:
 no. de seq. de k-bits no cabeçalho do pacote
 admite “janela” de até N pacotes consecutivos não reconhecidos
 ACK(n): reconhece todos pacotes, até e inclusive no. de seq n -
“ACK cumulativo”
 pode receber ACKs duplicados (veja receptor)
 temporizador para cada pacote em trânsito
 timeout(n): retransmite pacote n e todos os pacotes com no. de
seq maiores na janela
3: Camada de Transporte 3a-40
Volta-N: FSM estendida do remetente
Recibo de um pacote.
ACK(n): confirma que
todos os pacotes, até
– e inclusive – o nº de
seqüência n foram
recebidos no
receptor:”ACK
acumulativo” pode
receber ACK’s
duplicados.
Camada superior:
verifica se a janela está
cheia. Se não está,
forma o pacote e envia.
Se está cheia, recusa.
Existe um temporizador para
cada pacote em trânsito.
Timeout(n): retransmite pacote
n e todos os pacotes com nº de
seqüências maiores na janela
3: Camada de Transporte 3a-41
Volta-N: FSM estendida do receptor
receptor simples:
 usa apenas ACK: sempre envia ACK para pacote
recebido bem com o maior no. de seq. em-ordem


pode gerar ACKs duplicados
só precisa se lembrar do expectedseqnum
 pacote fora de ordem:
 descarta (não armazena) -> receptor não usa buffers!
 manda ACK de pacote com maior no. de seq em-ordem
3: Camada de Transporte 3a-42
Volta-N
em ação
Janela = 4. Envia
de 0 a 3 e o 2 se
perde
Pacote 2 se
perdeu. Descarta
o 3 e pede o 2
(confirma o 1).
Descarta o 4 e o
5, e continua
pedindo o 2.
Timeout do ACK
de 2.
Retransmite o 2.
3: Camada de Transporte 3a-43
Retransmissão seletiva
 receptor reconhece
individualmente todos os
pacotes recebidos corretamente

armazena pacotes no buffer, conforme precisa, para
posterior entrega em-ordem à camada superior
 remetente apenas re-envia pacotes para os quais
ACK não recebido

temporizador de remetente para cada pacote sem ACK
 janela do remetente
 N nos. de seq consecutivos
 outra vez limita nos. de seq de pacotes enviados, mas
ainda não reconhecidos
3: Camada de Transporte 3a-44
Retransmissão seletiva: janelas de
remetente, receptor
3: Camada de Transporte 3a-45
Retransmissão seletiva
remetente
dados de cima:
 se próx. no. de seq na
janela, envia pacote
timeout(n):
 reenvia pacote n, reiniciar
temporizador
ACK(n) em
[sendbase,sendbase+N]:
 marca pacote n “recebido”
 se n for menor pacote não
reconhecido, avança base
da janela ao próx. no. de
seq não reconhecido
receptor
pacote n em
[rcvbase, rcvbase+N-1]
 envia ACK(n)
 fora de ordem: buffer
 em ordem: entrega (tb.
entrega pacotes em ordem
no buffer), avança janela
p/ próxima pacote ainda
não recebido
pacote n em
[rcvbase-N,rcvbase-1]
 ACK(n)
senão:
 ignora
3: Camada de Transporte 3a-46
Retransmissão seletiva em ação
Quando um pacote com um nº de seqüência de
rcv_base=2 é recebido, então ele e os pacotes
rcv_base+1 e rcv_base+2 podem ser entregues à
camada superior.
3: Camada de Transporte 3a-47
Retransmissão
seletiva: dilema
Exemplo:
 nos. de seq : 0, 1, 2, 3
 tam. de janela =3
 receptor não vê
diferença entre os
dois cenários!
 incorretamente passa
dados duplicados como
novos em (a)
Q: qual a relação entre
tamanho de no. de seq
e tamanho de janela?
3: Camada de Transporte 3a-48
Download

Camada de Transporte - RDT "x.x"