Upload
internet
View
103
Download
1
Embed Size (px)
Citation preview
3: Camada de Transporte 1
Metas do capítulo: • compreender os princípios atrás dos serviços da camada de
transporte:o entrega de segmentoso transferência confiável de dadoso controle de fluxoo controle de congestionamento
• implementação na Internet
Camada de Transporte
3: Camada de Transporte 2
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
o depende de, estende serviços da camada de rede
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
transporte lógico fim a fim
3: Camada de Transporte 3
Protocolos da camada de transporte
Serviços de transporte na Internet:
• entrega confiável, ordenada, ponto a ponto (TCP)
o congestionamentoo controle de fluxoo 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: o tempo realo garantias de bandao multiponto confiável
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
aplicaçãotransporte
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
redeenlacefísica
transporte lógico fim a fim
3: Camada de Transporte 4
aplicaçãotransporte
rede
MP2
aplicaçãotransporte
rede
Entrega de segmentos
Segmento - unidade de dados trocada entre entidades da camada de transporte
o = TPDU: transport protocol data unit
receptor
HtH n
Serviço: Entrega de segmentos recebidos para os processos da camada de apl corretos
segmento
segmento Maplicaçãotransporte
rede
P1M
M MP3 P4
cabeçalhode segmento
dados da camada de aplicação
3: Camada de Transporte 5
Entrega de segmentos
• Baseadas em número de porta e endereço IP do remetente e do receptor
o números de porta do remetente/receptor em cada segmento
o lembrete: número de porta bem conhecido para aplicações específicas
porta remetente porta receptor
32 bits
dados daaplicação
(mensagem)
outros campos do cabeçalho
formato de segmento TCP/UDP
3: Camada de Transporte 6
Entrega de segmentos: exemplos
estação A
servidor B
porta orig.: xporta dest: 23
porta orig:23porta dest: x
uso de portas: apl. simples de telnet
cliente WWWestação A
servidor WWW B
Web clienthost C
IP orig: CIP dest: B
porta orig: xporta dest: 80
IP orig : CIP dest: B
porta orig: yporta dest: 80
uso de portas : servidor WWW
IP orig: AIP dest: B
porta orig: xporta dest:
80
3: Camada de Transporte 7
UDP: User Datagram Protocol [RFC 768]
• Protocolo de transporte da Internet mínimo, “sem frescura”,
• Serviço “melhor esforço”, segmentos UDP podem ser:
o perdidoso entregues à aplicação
fora de ordem do remesso
• sem conexão:o não há “setup” UDP
entre remetente, receptor
o 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 8
Mais sobre UDP
• muito utilizado para apls. de meios contínuos (voz, vídeo)
o tolerantes de perdaso sensíveis à taxa de
transmissão
• outros usos de UDP:o DNS (nomes)o SNMP (gerenciamento)
• transferência confiável com UDP?
o é possível incluir confiabilidade na camada de aplicação
o recuperação de erro específica à aplicação!
porta origem porta dest.
32 bits
Dados de aplicação
(mensagem)
Formato do segmento UDP
comprimento checksum
Comprimento embytes do
segmento UDP,incluindo cabeçalho
3: Camada de Transporte 9
Checksum UDP
Remetente:• trata conteúdo do
segmento como seqüência de inteiros de 16-bits
• campo checksum zerado
• checksum: soma 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 é tudo 1:o NÃO - erro detectadoo SIM - nenhum erro
detectado. Mas ainda pode ter erros? Veja depois ….
Meta: detectar “erro” (e.g., bits invertidos) no segmento transmitido
3: Camada de Transporte 10
Binary Checksum Example001
00100010000 0000 001 0000 0000 00010000 0000 0000 10000 0000 0000 010000 0000 0000 001
0000 1000 1000 10011000 0000 0001 00011001 1111 0001 1111
0010 0111 1011 1001 1
0010 0111 1011 10101101 1000 0100 0101
Carry from 1st column
Carry from 2nd columnCarry from 3rd column
Carry from 4th columnCarry from 5th column
Carry from 13th columnCarry from 12th column
Carry from 16th column
3: Camada de Transporte 11
Checksum do UDP
• Pode ser redundante pois muitos protocolos de enlace já o fazem;
• Contudo, Camada de Transporte deve funcionar independente da tecnologia de enlace
• Apesar de detectar erro, UDP nada faz para corrigir (algumas implementações simplesmente descartam o segmento)
3: Camada de Transporte 12
Transferência confiável de dados
• 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 13
Transferência confiável de dados:Se o canal sujeito a erros de bits
canal subjacente pode inverter bits no pacoteo lembre-se: checksum UDP pode detectar erros de bits
• a questão: como recuperar dos erros?o reconhecimentos (ACKs): receptor avisa explicitamente ao
remetente que pacote chegou bemo reconhecimentos negativos (NAKs): receptor avisa
explicitamente ao remetente que pacote tinha erroso remetente retransmite pacote ao receber um NAKo cenários humanos usando ACKs, NAKs?
• novos mecanismos:o detecção de erroso realimentação pelo receptor: msgs de controle (ACK,NAK)
receptor->remetente
3: Camada de Transporte 14
Transferência confiável de dados:Se canal com erros e perdas
canal subjacente pode perder pacotes (dados ou ACKs)
o checksum, no. de seq., ACKs, retransmissões podem ajudar, mas não serão suficientes
P: como lidar com perdas?
o remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite
o eca!: desvantagens?
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):
o retransmissão será duplicada, mas uso de no. de seq. já cuida disto
o receptor deve especificar no. de seq do pacote sendo reconhecido
• requer temporizador
3: Camada de Transporte 15
Desempenho de protocolos pára-espera• Protocolos pára-espera só enviam um pacote após
receber reconhecimento do anterior• desempenho é muito ruim• exemplo: enlace de 1 Gbps, retardo fim a fim de
15 ms, pacote de 1KB:
Ttransmitir=8kb/pacote10**9 b/seg
= 8 microseg
Utilização = U = =8 microseg
30.016 msegfração do tempo
remetente ocupado = 0,00015
o pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num enlace de 1 Gbps
o protocolo limita uso dos recursos físicos!
3: Camada de Transporte 16
Protocolos “dutados” (pipelined)
Dutagem (pipelining): remetente admite múltiplos pacotes “em trânsito”, ainda não reconhecidos
o faixa de números de seqüência deve ser aumentada
o buffers no remetente e/ou no receptor
• Duas formas genéricas de protocolos dutados: volta-N, retransmissão seletiva
3: Camada de Transporte 17
Volta-N (Go-Back 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”
• temporizador para todos pacotes em trânsito• timeout(n): retransmite pacote n e todos os pacotes com no.
de seq maiores na janela
3: Camada de Transporte 18
Volta-N: remetente
3: Camada de Transporte 19
Volta-N: receptor
receptor simples:• usa apenas ACK: sempre envia ACK para
pacote recebido bem com o maior no. de seq. em-ordem
o pode gerar ACKs duplicadoso só precisa se lembrar do expectedseqnum
• pacote fora de ordem: o descarta (não armazena) -> receptor não usa
buffers!o manda ACK de pacote com maior no. de seq em-
ordem
expectedseqnum=expectedseqnum+1
3: Camada de Transporte 20
Volta-Nem açãojanela de 4
3: Camada de Transporte 21
Retransmissão seletiva
• receptor reconhece individualmente todos os pacotes recebidos corretamente
o 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
o temporizador de remetente para cada pacote sem ACK
• janela do remetenteo N nos. de seq consecutivos o outra vez limita nos. de seq de pacotes enviados,
mas ainda não reconhecidos
3: Camada de Transporte 22
Retransmissão seletiva:janelas de remetente, receptor
3: Camada de Transporte 23
Retransmissão seletiva
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
pacote n em [rcvbase, rcvbase+N-1]
• envia ACK(n)• fora de ordem: bufferiza• 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
receptorremetente
3: Camada de Transporte 24
Relação no. de seq.e tam. janela
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?
R. Tam. Jan. <= ½ no seq.
3: Camada de Transporte 25
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581
• transmissão full duplex:
o fluxo de dados bi-direcional na mesma conexão
o MSS: tamanho máximo de segmento
• orientado a conexão: o handshaking (troca de
msgs de controle) inicia estado de remetente, receptor antes de trocar dados
• fluxo controlado:o receptor não será
afogado
• ponto a ponto:o 1 remetente, 1 receptor
• fluxo de bytes, ordenados, confiável:
o não estruturado em msgs
• dutado:o tam. da janela ajustado por
controle de fluxo e congestionamento do TCP
• buffers de envio e recepção
socketdoor
T C Psend buffer
T C Preceive buffer
socketdoor
segm ent
applicationwrites data
applicationreads data
3: Camada de Transporte 26
TCP: estrutura do segmento
no. porta origemno. porta dest
32 bits
dados daaplicação
(tam. variável)
número de seqüêncianúmero de
reconhecimentojanela receptor
ptr dados urg.checksum
FSRPAUtam.cab.
semuso
Opções (tam. variável)
URG: dados urgentes (pouco usado)
ACK: no. ACKválido
PSH: envia dados já(usado no telnet)
RST, SYN, FIN:gestão de conexão
(comandos deestabelecimento,
liberação)
no. bytes rcpt queraceitar
contagem de dadospor bytes (não segmentos!)
checksum Internet
(como UDP)
3: Camada de Transporte 27
TCP: nos. de seq. e ACKsNos. de seq.:
o “número”dentro do fluxo de bytes do primeiro byte de dados do segmento
ACKs:o no. de seq do próx.
byte esperado do outro lado
o ACK cumulativoP: como receptor trata
segmentos fora da ordem?
o R: espec do TCP omissa - deixado ao implementador
Estação A Estação B
Seq=42, ACK=79, data = ‘C’
Seq=79, ACK=43, data = ‘C’
Seq=43, ACK=80
Usuáriotecla‘C’
A reconhecechegada
do ‘C’ecoado
B reconhecechegada de
‘C’, ecoa‘C’ de volta
tempocenário simples de telnet
3: Camada de Transporte 28
TCP: transferência confiável de dados
remetente simplificado, supondo:
waitfor
event
waitfor
event
event: data received from application above
event: timer timeout for segment with seq # y
event: ACK received,with ACK # y
create, send segment
retransmit segment
ACK processing
•fluxo de dados uni-direcional•sem controle de fluxo, congestionamento
3: Camada de Transporte 29
TCPtransfer. confiável de dados
00 sendbase = número de seqüência inicial01 nextseqnum = número de seqüência inicial0203 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima06 cria segmento TCP com número de seqüência nextseqnum 07 inicia temporizador para segmento nextseqnum 08 passa segmento para IP 09 nextseqnum = nextseqnum + comprimento(dados) 10 event: expirado temporizador de segmento c/ no. de seqüência y 11 retransmite segmento com número de seqüência y 12 calcula novo intervalo de temporização para segmento y 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor de campo ACK de y 15 se (y > sendbase) { /* ACK cumulativo de todos dados até y */ 16 cancela temporizadores p/ segmentos c/ nos. de seqüência < y 17 sendbase = y 18 } 19 senão { /* é ACK duplicado para segmento já reconhecido */ 20 incrementa número de ACKs duplicados recebidos para y 21 if (número de ACKs duplicados recebidos para y == 3) { 22 /* TCP: retransmissão rápida */ 23 reenvia segmento com número de seqüência y 24 reinicia temporizador para número de seqüência y 25 } 26 } /* fim de loop forever */
RemetenteTCPsimplificado
3: Camada de Transporte 30
TCP geração de ACKs [RFCs 1122, 2581]
Evento
chegada de segmento em ordemsem lacunas,anteriores já reconhecidos
chegada de segmento em ordemsem lacunas,um ACK retardado pendente
chegada de segmento fora de ordem, com no. de seq. maiorque esperado -> lacuna
chegada de segmento que preenche a lacuna parcial oucompletamente
Ação do receptor TCP
ACK retardado. Espera até 500msp/ próx. segmento. Se não chegarsegmento, envia ACK
envia imediatamente um únicoACK cumulativo
envia ACK duplicado, indicando no. de seq.do próximo byte esperado
ACK imediato se segmento noinício da lacuna
3: Camada de Transporte 31
TCP: cenários de retransmissão
Estação A
Seq=92, 8 bytes de dados
ACK=100
perda
tem
pori
zaçã
o
tempo cenário doACK perdido
Estação B
X
Seq=92, 8 bytes de dados
ACK=100
Host A
Seq=100, 20 bytes de dados
ACK=100
Tem
p.p
/ Seq=
92
temporização prematura,ACKs cumulativos
Host B
Seq=92, 8 bytes de dados
ACK=120
Seq=92, 8 bytes de dados
Tem
p.
p/
Seq=
100
ACK=120
tempo
3: Camada de Transporte 32
remetente não esgotaria buffers do receptor por
transmitir muito, ou muito rápidamente
controle de fluxo
TCP: Controle de Fluxo
receptor: explicitamente avisa o remetente da quantidade de espaço livre disponível (muda dinamicamente)
o campo RcvWindow no segmento TCP
remetente: mantém a quantidade de dados transmitidos, porém ainda não reconhecidos, menor que o valor mais recente de RcvWindowbuffering pelo receptor
RcvBuffer = tamanho do Buffer de recepção
RcvWindow = espaço vazio no Buffer
3: Camada de Transporte 33
TCP: Tempo de Resposta (RTT) e Temporização
P: como escolher valor do temporizador TCP?
• maior que o RTTo note: RTT pode
variar• muito curto:
temporização prematura
o 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
o ignora retransmissões, segmentos com ACKs cumulativos
• RTTamostra vai variar, queremos “amaciador” de RTT estimado
o usa várias medições recentes, não apenas o valor corrente (RTTamostra)
3: Camada de Transporte 34
TCP: Tempo de Resposta (RTT) e Temporização
RTT_estimado = (1-x)* RTT_estimado + x*RTT_amostra• média corrente exponencialmente ponderada• influência de cada amostra diminui
exponencialmente com o tempo• valor típico de x: 0.1
x = 1/8
3: Camada de Transporte 35
TCP: Tempo de Resposta (RTT) e Temporização
Escolhendo o intervalo de temporização• RTT_estimado mais uma “margem de segurança”• variação grande em RTT_estimado
-> margem de segurança maior
Temporização = RTT_estimado + 4*Desvio
Desvio = (1-x)* Desvio + x*|RTT_amostra - RTT_estimado|
3: Camada de Transporte 36
TCP: Gerenciamento de Conexões: Inicialização em 3 vias (3-way acknowledgement)
Lembrete: Remetente, receptor TCP estabelecem “conexão” antes de trocar segmentos de dados
• inicializam variáveis TCP:o nos. de seq.o buffers, info s/ controle
de fluxo (p.ex. RcvWindow)
• cliente: iniciador de conexão • servidor: contactado por
cliente
Passo 1: sistema cliente envia segmento de controle SYN do TCP ao servidor
o especifica no. inicial de seq
Passo 2: sistema servidor recebe SYN, responde com segmento de controle SYNACK
o reconhece SYN recebidoo aloca bufferso especifica no. inicial de seq.
servidor-> receptor
Passo 3: sistema cliente recebe SYNACK, e envia ACK para o servidor (controle SYN desligado pois conexão já foi estabelecida)
3: Camada de Transporte 37
TCP: Gerenciamento de ConexõesEncerrando uma conexão
cliente fecha soquete: clientSocket.close();
4 passos:
• Espera temporizada para tratar perdas de mensagens e outras anomalias.
cliente
FIN
servidor
ACK
ACK
FIN
fechar
fechando
fechada
esp
era
te
mpori
zada
fechada
3: Camada de Transporte 38
Princí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:
o perda de pacotes (esgotamento de buffers em roteadores)
o longos atrasos (enfileiramento nos buffers dos roteadores)
• um dos 10 problemas mais importantes em redes!
3: Camada de Transporte 39
Causas/custos de congestionamento:• Mesmo se roteadores com fila infinita:• grandes retardos qdo. congestionada• vazão máxima do enlace alcançável
• Um roteador, buffers finitos• pacotes são descartados qdo fila cheia• há retransmissões desnecessárias pelo remetente de pacote apenas
atrasados• essas retransmissões ajudam a congestionar a rede
Outro “custo” de congestionamento: • quando pacote é descartado, qq. capacidade de transmissão já
usada (antes do descarte) para esse pacote foi desperdiçada!
3: Camada de Transporte 40
Abordagens de controle de congestionamento
Controle de congestionamento fim a fim :
• não tem realimentação explícita pela rede
• congestionamento inferido das perdas, retardo observados pelo sistema terminal
• abordagem usada pelo TCP
Controle de congestionamento com apoio da rede:
• roteadores realimentam os sistemas terminais
o bit único indicando congestionamento (SNA, DECbit, ATM)
o taxa explícita p/ envio pelo remetente
Duas abordagens amplas para controle de congestionamento:
3: Camada de Transporte 41
TCP: Controle de Congestionamento
• controle fim a fim (sem apoio da rede)• taxa de transmissão limitada pela tamanho da janela de
congestionamento, Congwin:
• w segmentos, cada um c/ MSS bytes, enviados por RTT:
Vazão (throughput) = w * MSS
RTT Bytes/sec
Congwin
3: Camada de Transporte 42
TCP: Controle de Congestionamento
• duas “fases”o partida lentao evitar
congestionamento
• variáveis importantes:o Congwino threshold: define
limiar entre fases de partida lenta, controle de congestionamento
• “sondagem” para banda utilizável:
o idealmente: transmitir o mais rápido possível (Congwin o máximo possível) sem perder pacotes
o aumentar Congwin até perder pacotes (congestionamento)
o perdas: diminui Congwin, depois volta a à sondagem (aumento) novamente
3: Camada de Transporte 43
TCP: Partida lenta
• aumento exponencial (por RTT) no tamanho da janela (não muito lenta!)
• evento de perda: temporizador
inicializa: Congwin = 1for (cada segmento c/ ACK) Congwin++until (evento de perda OR CongWin > threshold)
Estação A
um segmento
RTT
Estação B
tempo
dois segmentos
quqtro segmentos
Algoritmo Partida Lenta
3: Camada de Transporte 44
TCP: Evitar Congestionamento
/* partida lenta acabou */ /* Congwin > threshold */Until (event de perda) { cada w segmentos reconhecidos: Congwin++ }threshold = Congwin/2Congwin = 1faça partida lenta
1
Evitar congestionamento
3: Camada de Transporte 45
Justiça do TCP
Meta: se N sessões TCP compartilham o mesmo enlace de gargalo, cada uma deve ganhar 1/N da capacidade do enlace
TCP evitando congestionamento:
• AADM: aumento aditivo, decremento multiplicativo
o aumenta janela em 1 por cada RTT
o diminui janela por fator de 2 num evento de perda
AADM (AIMD)
TCP conexão 1
Roteadorgargalo
capacidade R
TCP conexão 2