Title: Prof. Evandro Cant
1Prof. Evandro Cantú
REDES DE COMPUTADORES
2- Prof. Evandro Cantú, Dr. Eng.
- cantu_at_sj.cefetsc.edu.br
- www.sj.cefetsc.edu.br/wiki
- Slides adaptados de J. Kurose K. Ross
- (http//www.aw-bc.com/kurose-ross/),
- e J. A. Suruagy
- (http//www.nuperc.unifacs.br/suruagy/redes/index.
html)
2
Curso de Capacitação Intelbras Redes
Computadores Maio 2007
3Camada de Transporte
- Objetivos
- compreender os 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
- aprender os protocolos da camada de transporte da
Internet - UDP transporte sem conexão
- TCP transporte orientado a conexões
- Controle de congestionamento do TCP
4Serviç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
finais - lado transmissor quebra as mensagens das
aplicações em segmentos, repassa-os para a camada
de rede - 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 - Internet TCP e UDP
5Camadas de Transporte x Rede
- camada de rede comunicação lógica entre
hospedeiros - camada de transporte comunicação lógica entre
processos - depende da camada rede e estende os serviços por
ela oferecidos
6Protocolos da camada de transporte Internet
- entrega confiável, ordenada (TCP)
- controle de congestionamento
- controle de fluxo
- estabelecimento de conexão (setup)
- entrega não confiável, não ordenada UDP
- extensão sem frescuras do melhor esforço do
IP - serviços não disponíveis
- garantias de atraso
- garantias de largura de banda
7Multiplexação/demultiplexação
Entrega dos segmentos recebidos ao socket
correto
reúne dados de muitos sockets, envelopa os dados
com o cabeçalho (usado posteriormente para a
demultiplexação)
processo
socket
8Como funciona a demultiplexação
- host recebe os datagramas IP
- cada datagrama possui os endereços IP da origem e
do destino - cada datagrama transporta 1 segmento da camada de
transporte - cada segmento possui números das portas origem e
destino (lembre números de portas bem conhecidas
para aplicações específicas) - host usa os endereços IP e os números das portas
para direcionar o segmento ao socket apropriado
formato de segmento TCP/UDP
9Demultiplexação sem Conexões
- Quando host recebe segmento UDP
- verifica no. da porta de destino no segmento
- encaminha o segmento UDP para o socket com aquele
no. de porta - Datagramas IP com diferentes endereços IP origem
e/ou números de porta origem são encaminhados
para o mesmo socket
- socket UDP identificado pela dupla
- (end IP dest, no. da porta destino)
10Demultiplexação sem Conexões
SP (source port) provê endereço de retorno
11Demultiplexação Orientada a Conexões
- Socket TCP identificado pela 4-dupla
- 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
- Servidor pode dar suporte a muitos sockets TCP
simultâneos - cada socket é identificado pela sua própria
4-dupla - Servidores Web têm sockets diferentes para cada
conexão cliente - HTTP não persistente terá sockets diferentes para
cada pedido
12Demultiplexação Orientada a Conexões
S-IP B
D-IPC
SP 9157
Cliente IPB
DP 80
servidor IP C
S-IP A
S-IP B
D-IPC
D-IPC
13Demultiplexação Orientada a Conexões Servidor
Web com Threads
P4
S-IP B
D-IPC
SP 9157
Cliente IPB
DP 80
servidor IP C
S-IP A
S-IP B
D-IPC
D-IPC
14UDP User Datagram Protocol RFC 768
- 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
- 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
15Mais sobre UDP
Comprimento em bytes do segmento UDP, incluindo
cabeçalho
- muito utilizado para apls. de meios contínuos
(voz, vídeo) - tolerantes de perdas
- sensíveis à taxa de transmissão
- outros usos de UDP
- DNS (nomes)
- SNMP (gerenciamento)
- transferência confiável com UDP incluir
confiabilidade na camada de aplicação - recuperação de erro específica à apl.!
32 bits
porta origem
porta dest.
checksum
comprimento
Dados de aplicação (mensagem)
Formato do segmento UDP
16Checksum UDP
Meta detectar 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 .
17Exemplo do Checksum Internet
- Note
- Ao adicionar números, o transbordo do bit mais
significativo deve ser adicionado o 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 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
transbordo
soma
checksum
18Princí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)
19Transferência confiável de dados (rdt)
send side
receive side
20TCP Visão geral RFCs 793, 1122, 1323, 2018, 2581
- ponto a ponto
- 1 remetente, 1 receptor
- fluxo de bytes, ordenados, confiável
- não estruturado em msgs
- com paralelismo (pipelined)
- tam. da janela ajustado por controle de fluxo e
congestionamento do TCP - buffers de envio e recepção
- transmissão full duplex
- fluxo de dados bi-direcional na mesma conexão
- MSS tamanho máximo de segmento
- orientado a conexão
- handshaking (troca de msgs de controle) inicia
estado de remetente, receptor antes de trocar
dados - fluxo controlado
- receptor não será afogado
21TCP estrutura do segmento
URG dados urgentes (pouco usados)
contagem de dadospor bytes (não segmentos!)
ACK no. ACK válido
PSH envia dados já (pouco usado)
no. bytes rcpt quer aceitar
RST, SYN, FIN gestão de conexão (comandos
deestabelecimento, liberação)
checksum Internet (como UDP)
22TCP Seq e Ack
Estação B
Estação A
- Números de sequência (Seq)
- númerodentro do fluxo de bytes do primeiro byte
de dados do segmento - Números de Reconhecimento (Ack)
- no. de seq do próx. byte esperado do outro lado
- ACK cumulativo
Usuário tecla C
Seq42, ACK79, data C
B reconhece chegada de C, ecoa C de volta
Seq79, ACK43, data C
A reconhece chegada do Cecoado
Seq43, ACK80
cenário simples de telnet
23TCP Tempo de Resposta e Temporização
- P como escolher valor do temporizador TCP?
- maior que o RTT (Round Trip Time)
- note RTT pode variar
- muito curto temporização prematura
- retransmissões são desnecessárias
- muito longo reação demorada à perda de segmentos
- P como estimar RTT?
- RTTamostra tempo medido entre a transmissão do
segmento e o recebimento do ACK correspondente - Como o RTT_amostra vai varia, usa-se várias
medições recentes, não apenas o valor corrente.
24Exemplo de estimativa do RTT
25TCP Tempo de Resposta (RTT) e Temporização
- Escolhendo o intervalo de temporização
- RTT_estimado mais uma margem de segurança
- grande variação no RTT_estimado -gt maior
margem de segurança - primeiro estima o quanto a RTTamostra desvia do
RTT_estimado, então, seta o temporizador para
Temporização RTT_estimado 4Desvio_RTT
26Transferência de dados confiável do TCP
- O TCP cria um serviço confiável sobre o serviço
não confiável do IP - Segmentos em série (pipelined)
- Acks cumulativos
- O TCP usa um único temporizador para
retransmissões
- As retransmissões são disparadas por
- estouros de temporização
- acks duplicados
- Considere inicialmente um transmissor TCP
simplificado - ignora acks duplicados
- ignora controles de fluxo e de congestionamento
27Eventos do transmissor TCP
- Dados recebidos da aplicação
- Cria segmento com no. de seqüência (nseq)
- nseq é o número de seqüência do primeiro byte do
segmento - Liga o temporizador se já não estiver ligado
(temporização do segmento mais antigo ainda não
reconhecido) - Valor do temporizador calculado anteriormente
- estouro do temporizador
- Retransmite o segmento que causou o estouro do
temporizador - Reinicia o temporizador
- Recepção de Ack
- Se reconhecer segmentos ainda não reconhecidos
- atualizar informação sobre o que foi reconhecido
- religa o temporizador se ainda houver segmentos
pendentes (não reconhecidos)
28TCP cenários de retransmissão
Host A
Host B
Seq92, 8 bytes data
Seq100, 20 bytes data
ACK100
ACK120
Seq92, 8 bytes data
Sendbase 100
SendBase 120
ACK120
Seq92 timeout
SendBase 100
SendBase 120
estouro prematuro do temporizador
29TCP cenários de retransmissão
SendBase 120
30TCP geração de ACKs RFCs 1122, 2581
Ação do Receptor TCP ACK retardado. Espera até
500ms p/ próx. segmento. Se não chegarsegmento,
envia ACK envia imediatamente um único ACK
cumulativo envia ACK duplicado, indicando no.
de seq.do próximo byte esperado ACK imediato
se segmento no início da lacuna
Evento no Receptor chegada de segmento em
ordem sem lacunas, anteriores já
reconhecidos chegada de segmento em ordem sem
lacunas, um ACK retardado pendente chegada de
segmento fora de ordem, com no. de seq.
maior que esperado -gt lacuna chegada de segmento
que preenche a lacuna parcial oucompletamente
31Retransmissão rápida
- O intervalo do temporizador é freqüentemente
bastante longo - longo atraso antes de retransmitir um pacote
perdido - Detecta segmentos perdidos através de ACKs
duplicados. - O transmissor normalmente envia diversos
segmentos - Se um segmento se perder, provavelmente haverá
muitos ACKs duplicados.
- Se o transmissor receber 3 ACKs para os mesmos
dados, ele supõe que o segmento após os dados
reconhecidos se perdeu - Retransmissão rápida retransmite o segmento
antes que estoure o temporizador
32Controle de Fluxo do TCP
Controle de fluxo
- Lado receptor da conexão TCP possui um buffer de
recepção
o transmissor não inundará o buffer do receptor
transmitindo muito e rapidamente
- serviço de casamento de velocidades adaptando a
taxa de transmissão à taxa de leitura da
aplicação receptora
- Processo da apl. pode demorar a ler do receptor
33Controle de Fluxo do TCP como funciona
- O receptor anuncia o espaço livre incluindo o
valor da RcvWindow nos segmentos - O transmissor limita os dados não reconhecidos ao
tamanho da RcvWindow - Garante que o buffer do receptor não transbordará
- (Suponha que o receptor TCP receba segmentos fora
de ordem) - espaço livre no buffer
- RcvWindow
- RcvBuffer-LastByteRcvd - LastByteRead
34TCP Gerenciamento de Conexões
- Inicialização em 3 tempos
- Passo 1 sistema cliente envia segmento de
controle SYN do TCP ao servidor - especifica no. inicial de seq
- não envia dados
- Passo 2 sistema servidor recebe SYN, responde
com segmento de controle SYNACK - aloca buffers
- especifica no. inicial de seq. servidor-gt
receptor - Passo 3 receptor recebe SYNACK, responde com
segmento ACK que pode conter dados.
- Lembrete Remetente, receptor TCP estabelecem
conexão antes de trocar segmentos de dados - inicializam variáveis TCP
- nos. de seq.
- buffers, info s/ controle de fluxo (p.ex.
RcvWindow) - cliente iniciador de conexão
- servidor contactado por cliente
35TCP Gerenciamento de Conexões (cont.)
- Encerrando uma conexão
- cliente fecha soquete
- Passo 1 sistema cliente envia segmento de
controle FIN ao servidor - Passo 2 servidor recebe FIN, responde com ACK.
Encerra a conexão, enviando FIN.
cliente
servidor
fechar
FIN
ACK
fechar
FIN
ACK
espera temporizada
fechada
36TCP Gerenciamento de Conexões (cont.)
- Passo 3 cliente recebe FIN, responde com ACK.
- Entre em espera temporizada - responderá com
ACK a FINs recebidos - Passo 4 servidor, recebe ACK. Conexão
encerrada.
cliente
servidor
fechando
FIN
ACK
fechando
FIN
ACK
esperatemporizada
fechada
fechada
37TCP Gerenciamento de Conexões (cont.)
Ciclo de vidade servidor TCP
Ciclo de vidade cliente TCP
38Princípios de Controle de Congestionamento
- Congestionamento
- informalmente muitas fontes enviando muitos
dados muito rapidamente para a rede poder tratar - diferente de controle de fluxo!
- manifestações
- perda de pacotes (esgotamento de buffers em
roteadores) - longos atrasos (enfileiramento nos buffers dos
roteadores) - um dos 10 problemas mais importantes em redes!
39Abordagens de controle de congestionamento
Duas abordagens amplas para controle de
congestionamento
- Controle de congestionamento fim a fim
- não tem realimentação explícita pela rede
- congestionamento inferido a partir das perdas,
retardo observados pelo sistema terminal - abordagem usada pelo TCP
- Controle de congestionamento com apoio da rede
- roteadores realimentam os sistemas terminais
- bit indicando congestionamento (ATM)
- taxa explícita p/ envio pelo remetente
40Controle de Congestionamento do TCP
- controle fim-a-fim (sem assistência da rede)
- transmissor limita a transmissão
- LastByteSent-LastByteAcked ? CongWin
- Praticamente,
- CongWin é dinâmica, em função do congestionamento
percebido da rede
- Como o transmissor percebe o congestionamento?
- evento de perda estouro do temporizador ou 3
acks duplicados - transmissor TCP reduz a taxa (CongWin) após
evento de perda - três mecanismos
- AIMD
- partida lenta
- conservador após eventos de estouro de
temporização
41AIMD do TCP
- decrescimento multiplicativo corta CongWin pela
metade após evento de perda
crescimento aditivo incrementa CongWin de 1 MSS
a cada RTT na ausência de eventos de perda
sondagem
Conexão TCP de longa duração
42Partida Lenta do TCP
- No início da conexão, aumenta a taxa
exponencialmente até o primeiro evento de perda
- No início da conexão, CongWin 1 MSS
- Exemplo MSS 500 bytes RTT 200 mseg
- taxa inicial 20 kbps
- largura de banda disponível pode ser gtgt MSS/RTT
- é desejável um crescimento rápido até uma taxa
considerável
43TCP Partida lenta (mais)
Estação A
Estação B
- No início da conexão, aumenta a taxa
exponencialmente até o primeiro evento de perda - duplica CongWin a cada RTT
- através do incremento da CongWin para cada ACK
recebido - Resumo taxa inicial é baixa mas cresce
rapidamente de forma exponencial
um segmento
RTT
dois segmentos
quqtro segmentos
44Refinamento
Filosofia
- 3 ACKs duplicados indica que a rede é capaz de
entregar alguns segmentos - estouro de temporizador antes de 3 ACKs
duplicados é mais alarmante.
- Após 3 ACKs duplicados
- corta CongWin pela metade
- a janela depois cresce linearmente
- Mas após estouro de temporizador
- CongWin é reduzida a 1 MSS
- janela cresce exponencialmente
- até um limiar, depois cresce linearmente
45Refinamento (mais)
- P Quando o crescimento exponencial deve mudar
para linear? - R Quando CongWin atinge 1/2 do seu valor antes
do estouro do temporizador. -
- Implementação
- Limiar (Threshold) variável
- Com uma perda o limiar passa a ser 1/2 da CongWin
imediatamente anterior à perda.
46Resumo Controle de Congestionamento do TCP
- Quando a CongWin está abaixo do limiar,
transmissor está na fase de início lento, janela
cresce exponencialmente. - Quando a CongWin está acima do limiar,
transmissor está na fase de evitar
congestionamento, janela cresce linearmente. - Quando chegam ACKs triplicados, Limiar passa a
ser CongWin/2 e CongWin passa ao valor do Limiar. - Quando estoura o temporizador, Limiar passa a ser
CongWin/2 e CongWin passa a ser 1 MSS.
47Controle de congestionamento do transmissor TCP
Evento Estado Ação do Transmissor TCP Comentário
ACK recebido para dados ainda não reconhecidos Partida lenta CongWin CongWin MSS, If (CongWin gt Limiar) seta estado para Evitar congestionamento Resulta na duplicação da CongWin a cada RTT
ACK recebido para dados ainda não reconhecidos Evitar congestionamento CongWin CongWinMSS (MSS/CongWin) Incremento aditivo, resultando no incremento da CongWin de 1 MSS a cada RTT
Perda detectada por ACKs triplicados qualquer Limiar CongWin/2, CongWin Limiar, Seta estado para Evitar Congestionamento Recuperação rápida, implementa decrescimento multiplicativo. CongWin não cai abaixo de 1 MSS.
Estouro de temporizador qualquer Limiar CongWin/2, CongWin 1 MSS, Seta estado para Partida lenta Entra estado de partida lenta
ACK duplicado qualquer Incrementa contador de ACKs duplicados para o segmento que está sendo reconhecido CongWin e Threshold não se alteram