Professional Documents
Culture Documents
Camada de transporte
Objetivos do captulo: Entender os princpios por trs dos servios da camada de transporte: Multiplexao/demultiplexao Transferncia de dados confivel Controle de fluxo Controle de congestionamento Aprender sobre os protocolos de transporte na Internet: UDP: transporte no orientado conexo TCP: transporte orientado conexo Controle de congestionamento do TCP
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
3-1
3-2
Fornecem comunicao lgica entre processos de aplicao em diferentes hospedeiros Os protocolos de transporte so executados nos sistemas finais Lado emissor: quebra as mensagens da aplicao em segmentos e envia para a camada de rede Lado receptor: remonta os segmentos em mensagens e passa para a camada de aplicao H mais de um protocolo de transporte disponvel para as aplicaes Internet: TCP e UDP
3-3
Camada de rede: comunicao lgica entre os hospedeiros Camada de transporte: comunicao lgica entre os processos Depende dos servios da camada de rede Analogia com uma casa familiar: 12 crianas enviam cartas para 12 crianas Processos = crianas Mensagens da aplicao = cartas nos envelopes Hospedeiros = casas Protocolo de transporte = Anna e Bill Protocolo da camada de rede = servio postal
3-4
Camada de transporte
Confivel, garante ordem de entrega (TCP) Controle de congestionamento Controle de fluxo Orientado conexo No confivel, sem ordem de entrega: UDP Extenso do melhor esforo do IP Servios no disponveis: Garantia a atrasos Garantia de banda
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
3-5
3-6
12/5/2010
Multiplexao/demultiplexao
Multiplexao no hospedeiro emissor: coleta dados de mltiplos sockets, envelopa os dados com cabealho (usado depois para demultiplexao) entrega os segmentos recebidos ao socket correto
Computador recebe datagramas IP Cada datagrama possui endereo IP de origem e IP de destino Cada datagrama carrega 1 segmento da camada de transporte Cada segmento possui nmeros de porta de origem e destino (lembre-se: nmeros de porta bem conhecidos para aplicaes especficas) O hospedeiro usa endereos IP e nmeros de porta para direcionar o segmento ao socket apropriado
P2
P3
P1 P1
cliente IP: A
servidor IP: C
cliente IP: B
Socket TCP identificado por 4 valores: Endereo IP de origem End. porta de origem Endereo IP de destino End. porta de destino Hospedeiro receptor usa os quatro valores para direcionar o segmento ao socket apropriado Hospedeiro servidor pode suportar vrios sockets TCP simultneos: Cada socket identificado pelos seus prprios 4 valores Servidores Web possuem sockets diferentes para cada cliente conectado
P1
P4
P5
P2
P1P3
cliente IP: A
servidor IP: C
cliente IP: B
3 - 11
3 - 12
12/5/2010
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
3 - 13
3 - 14
UDP checksum
Muito usado por aplicaes de multimdia contnua (streaming) Tolerantes perda Sensveis taxa Outros usos do UDP (por qu?): DNS SNMP Transferncia confivel sobre UDP: acrescentar confiabilidade na camada de aplicao Recuperao de erro especfica de cada aplicao
Objetivo: detectar erros (ex.: bits trocados) no segmento transmitido Transmissor: Trata o contedo do segmento como seqncia de inteiros de 16 bits Checksum: soma (complemento de 1 da soma) do contedo do segmento Transmissor coloca o valor do checksum no campo de checksum do UDP Receptor: Computa o checksum do segmento recebido Verifica se o checksum calculado igual ao valor do campo checksum: NO - erro detectado SIM - no h erros. Mas talvez haja erros apesar disso? Mas depois
3 - 15
3 - 16
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP Importante nas camadas de aplicao, transporte e enlace Top 10 na lista dos tpicos mais importantes de redes! Caractersticas dos canais no confiveis determinaro a complexidade dos protocolos confiveis de transferncia de dados (rdt)
3 - 17
3 - 18
12/5/2010
rdt3.0 em ao
Hiptese: canal de transmisso pode tambm perder pacotes (devido aos ACKs) Checksum, nmeros de seqncia, ACKs, retransmisses sero de ajuda, mas no o bastante Abordagem: transmissor espera um tempo razovel pelo ACK Retransmite se nenhum ACK for recebido nesse tempo Se o pacote (ou ACK) estiver apenas atrasado (no perdido): Retransmisso ser duplicada, mas os nmeros de seqncia j tratam com isso Receptor deve especificar o nmero de seqncia do pacote sendo reconhecido Exige um temporizador decrescente
3 - 19
3 - 20
rdt3.0 em ao
Go-Back-N
Transmissor: Nmero de seqncia com k bits no cabealho do pacote janela de at N pacotes no reconhecidos, consecutivos, so permitidos
Retransmisso seletiva
ACK(n): reconhece todos os pacotes at o nmero de seqncia N (incluindo este limite). ACK cumulativo Pode receber ACKs duplicados (veja receptor) Temporizador para cada pacote enviado e no confirmado Tempo de confirmao (n): retransmite pacote n e todos os pacotes com nmero de seqncia maior que estejam dentro da janela
3 - 23
Receptor reconhece individualmente todos os pacotes recebidos corretamente Armazena pacotes, quando necessrio, para eventual entrega em ordem para a camada superior Transmissor somente reenvia os pacotes para os quais um ACK no foi recebido Transmissor temporiza cada pacote no reconhecido Janela de transmisso N nmeros de seqncia consecutivos Novamente limita a quantidade de pacotes enviados, mas no reconhecidos
3 - 24
12/5/2010
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no-orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
3 - 25
3 - 26
TCP: overview
RFCs: 793, 1122, 1323, 2018, 2581
Ponto-a-ponto: Um transmissor, um receptor Confivel, seqencial byte stream: No h contornos de mensagens Pipelined: (transmisso de vrios pacotes sem confirmao) Controle de congesto e de fluxo definem tamanho da janela Buffers de transmisso e de recepo Dados full-duplex: Transmisso bidirecional na mesma conexo MSS: maximum segment size Orientado conexo: Apresentao (troca de mensagens de controle) inicia o estado do transmissor e do receptor antes da troca de dados Controle de fluxo: Transmissor no esgota a capacidade do receptor
3 - 27
URG: dados urgentes (pouco usados) ACK: campo de ACK vlido PSH: produz envio de dados (pouco usado) RST, SYN, FIN: estabelec. de conexo (comandos de criao e trmino) Internet checksum (como no UDP)
3 - 28
Nmeros de seqncia: Nmero do primeiro byte nos segmentos de dados ACKs: Nmero do prximo byte esperado do outro lado ACK cumulativo P.: Como o receptor trata segmentos fora de ordem? A especificao do TCP no define, fica a critrio do implementador
P.: como escolher o valor da temporizao do TCP? Maior que o RTT Nota: RTT varia Muito curto: temporizao prematura Retransmisses desnecessrias Muito longo: a reao perda de segmento fica lenta P.: Como estimar o RTT? SampleRTT: tempo medido da transmisso de um segmento at a respectiva confirmao Ignora retransmisses e segmentos reconhecidos de forma cumulativa SampleRTT varia de forma rpida, desejvel um amortecedor para a estimativa do RTT Usar vrias medidas recentes, no apenas o ltimo SampleRTT obtido
3 - 29
3 - 30
12/5/2010
EstimatedRTT = (1-)*EstimatedRTT + *SampleRTT Mdia mvel com peso exponencial Influncia de uma dada amostra decresce de forma exponencial Valor tpico: = 0,125
3 - 31
3 - 32
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no-orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP TCP cria servios de rdt em cima do servio no-confivel do IP Pipelined segments ACKs cumulativos TCP usa tempo de retransmisso simples Retransmisses so disparadas por: Eventos de tempo de confirmao ACKs duplicados Inicialmente, considere um transmissor TCP simplificado: Ignore ACKs duplicados Ignore controle de fluxo, controle de congestionamento
3 - 33
3 - 34
12/5/2010
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
Servio de speed-matching:
encontra a taxa de envio adequada taxa de vazo da aplicao receptora
3 - 37
3 - 38
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
3 - 39
3 - 40
TCP transmissor estabelece conexo com o receptor antes de trocar segmentos de dados Inicializar variveis: Nmeros de seqncia Buffers, controle de fluxo (ex.: RcvWindow) Cliente: iniciador da conexo Socket clientSocket = new Socket(hostname","port number"); Servidor: chamado pelo cliente Socket connectionSocket = welcomeSocket.accept(); Three way handshake: Passo 1: sistema final cliente envia TCP SYN ao servidor Especifica nmero de seqncia inicial Passo 2: sistema final servidor que recebe o SYN, responde com segmento SYNACK Reconhece o SYN recebido Aloca buffers Especifica o nmero de seqncia inicial do servidor Passo 3: sistema final cliente reconhece o SYNACK
Fechando uma conexo: cliente fecha o socket: clientSocket.close(); Passo 1: o cliente envia o segmento TCP FIN ao servidor Passo 2: servidor recebe FIN, responde com ACK. Fecha a conexo, envia FIN
3 - 41
3 - 42
12/5/2010
Passo 3: cliente recebe FIN, responde com ACK Entra espera temporizada vai responder com ACK a FINs recebidos Passo 4: servidor, recebe ACK Conexo fechada Estados do cliente Estados do servidor
3 - 43
3 - 44
Camada de transporte
4.1 Servios da camada de transporte 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP Congestionamento: Informalmente: muitas fontes enviando dados acima da capacidade da rede de trat-los Diferente de controle de fluxo! Sintomas: Perda de pacotes (saturao de buffer nos roteadores) Atrasos grandes (filas nos buffers dos roteadores) Um dos 10 problemas mais importantes na Internet!
3 - 45
3 - 46
Camada de transporte
4.1 Servios da camada de transporte Existem duas abordagens gerais para o problema de controle de congestionamento: Controle de congestionamento fim-a-fim: No usa realimentao explcita da rede Congestionamento inferido a partir das perdas e dos atrasos observados nos sistemas finais Abordagem usada pelo TCP Controle de congestionamento assistido pela rede: Roteadores enviam informaes para os sistemas finais Bit nico indicando o congestionamento (SNA, DECbit, TCP/IP ECN, ATM) Taxa explcita do transmissor poderia ser enviada 4.2 Multiplexao e demultiplexao 4.3 Transporte no orientado conexo: UDP 4.4 Princpios de transferncia confivel de dados 4.5 Transporte orientado conexo: TCP Estrutura do segmento Transferncia confivel de dados Controle de fluxo Gerenciamento de conexo 4.6 Princpios de controle de congestionamento 4.7 Controle de congestionamento do TCP
3 - 47
3 - 48
12/5/2010
TCP AIMD
Quando a conexo comea, CongWin = 1 MSS (Tamanho mximo de segmento) Exemplo: MSS = 500 bytes e RTT = 200 milissegundos Taxa inicial = 20 kbps Largura de banda disponvel pode ser >> MSS/RTT Desejvel aumentar rapidamente at a taxa respeitvel Quando a conexo comea, a taxa aumenta rapidamente de modo exponencial at a ocorrncia do primeiro evento de perda
Quando a conexo comea, a taxa aumenta rapidamente de modo exponencial at a ocorrncia do primeiro evento de perda : Dobra o CongWin a cada RTT Faz-se incrementando o CongWin para cada ACK recebido Sumrio: taxa inicial lenta mas aumenta de modo exponencialmente rpido
RTT
tempo
3 - 51
3 - 52
Refinamento
P.: Quando o aumento exponencial deve tornar-se linear? R.: Quando CongWin obtiver 1/2 do seu valor antes do tempo de confirmao. Implementao: Limite varivel No evento de perda, o limiar ajustado para 1/2 do CongWin logo antes do evento de perda
Quando CongWin est abaixo do limite (Threshold), o transmissor em fase de slow-start, a janela cresce exponencialmente. Quando CongWin est acima do limite (Threshold, o transmissor em fase de congestion-avoidance, a janela cresce linearmente. Quando ocorrem trs ACK duplicados, o limiar (Threshold) ajustado em CongWin/2 e CongWin ajustado para Threshold. Quando ocorre tempo de confirmao, o Threshold ajustado para CongWin/2 e o CongWin ajustado para 1 MSS.
3 - 53
3 - 54
12/5/2010
Eqidade do TCP
Eqidade
Objetivo de eqidade: se K sesses TCP compartilham o mesmo enlace do gargalo com largura de banda R, cada uma deve ter taxa mdia de R/K
Eqidade e UDP Aplicaes multimdia normalmente no usam TCP No querem a taxa estrangulada pelo controle de congestionamento Em vez disso, usam UDP: Trafega udio/vdeo a taxas constantes, toleram perda de pacotes rea de pesquisa: TCP amigvel Eqidade e conexes TCP paralelas Nada previne as aplicaes de abrirem conexes paralelas entre 2 hospedeiros Web browsers fazem isso Exemplo: enlace de taxa R suportando 9 conexes; Novas aplicaes pedem 1 TCP, obtm taxa de R/10 Novas aplicaes pedem 11 TCPs, obtm R/2!
3 - 55
3 - 56
10