Você está na página 1de 10

12/5/2010

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

Protocolos e servios de transporte

Camada de transporte vs. camada de rede

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

Protocolos da camada de transporte da Internet

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

Demultiplexao no hospedeiro receptor:

Como funciona a demultiplexao

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

Socket a interface entre a camada de aplicao e a de transporte dentro de uma mquina.


3-7 3-8

Demultiplexao no orientada conexo

Demultiplexao no orientada conexo

DatagramSocket serverSocket = new DatagramSocket(6428);


Cria sockets com nmeros de porta: DatagramSocket mySocket1 = new DatagramSocket(99111); DatagramSocket mySocket2 = new DatagramSocket(99222); Socket UDP identificado por dois valores: (endereo IP de destino, nmero da porta de destino) Quando o hospedeiro recebe o segmento UDP: Verifica o nmero da porta de destino no segmento Direciona o segmento UDP para o socket com este nmero de porta Datagramas com IP de origem diferentes e/ou portas de origem diferentes so direcionados para o mesmo socket
SP: 6428 DP: 9157 SP: 9157 DP: 6428 SP: 6428 DP: 5775 SP: 5775 DP: 6428

P2

P3

P1 P1

cliente IP: A

servidor IP: C

cliente IP: B

SP fornece o endereo retorno 0


3-9 3 - 10

Demux orientada conexo

Demux orientada conexo

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

P6 SP: 5775 DP: 80 S-IP: B D-IP: C

P2

P1P3

cliente IP: A

SP: 9157 DP: 80 S-IP: A D-IP: C

servidor IP: C

SP: 9157 DP: 80 S-IP: B D-IP: C

cliente IP: B

3 - 11

3 - 12

12/5/2010

Camada de transporte

UDP: User Datagram Protocol [RFC 768]


Protocolo de transporte da Internet sem gorduras, sem frescuras Servio best effort, segmentos UDP podem ser: Perdidos Entregues fora de ordem para a aplicao Sem conexo: No h apresentao entre o UDP transmissor e o receptor Cada segmento UDP tratado de forma independente dos outros Por que existe um UDP? No h estabelecimento de conexo (que possa redundar em atrasos) Simples: no h estado de conexo nem no transmissor, nem no receptor Cabealho de segmento reduzido No h controle de congestionamento: UDP pode enviar segmentos to rpido quanto desejado (e possvel)

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

Mais sobre UDP

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

Princpios de transferncia confivel de dados

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: canais com erros e perdas

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

Protocolos com paralelismo (pipelining)


Paralelismo: transmissor envia vrios pacotes ao mesmo tempo, todos esperando para serem reconhecidos Faixa de nmeros de seqncia deve ser aumentada Armazenamento no transmissor e/ou no receptor

(a) operao do protocolo pare e espere

(a) operao do protocolo com paralelismo

Duas formas genricas de protocolos com paralelismo: go-Back-N, retransmisso seletiva


3 - 21 3 - 22

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

Retransmisso seletiva: janelas do transmissor e do receptor

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

Estrutura do segmento TCP


contagem por bytes de dados (no segmentos!)

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)

nmero de bytes receptor est pronto para aceitar

3 - 28

Nmero de seqncia e ACKs do TCP

TCP Round Trip Time e temporizao

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

TCP Round Trip Time e temporizao

Exemplos de estimativa do RTT

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

TCP: transferncia de dados confivel

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

TCP: cenrios de retransmisso

TCP: cenrios de retransmisso

Cenrio com perda do ACK


3 - 35

Temporizao prematura, ACKs cumulativos

Cenrio de ACK cumulativo


3 - 36

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

TCP: controle de fluxo


Lado receptor da conexo TCP possui um buffer de recepo: Controle de fluxo Transmissor no deve esgotar os buffers de recepo enviando dados rpido demais

Servio de speed-matching:
encontra a taxa de envio adequada taxa de vazo da aplicao receptora

Processos de aplicao podem ser


lentos para ler o buffer

3 - 37

3 - 38

Controle de fluxo TCP: como funciona


Receptor informa a rea disponvel incluindo valor RcvWindow nos segmentos Transmissor limita os dados no confinados ao RcvWindow Garantia contra overflow no buffer do receptor (suponha que o receptor TCP descarte segmentos fora de ordem)

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

Espao disponvel no buffer


= RcvWindow = RcvBuffer-[LastByteRcvd - LastByteRead]

3 - 39

3 - 40

Gerenciamento de conexo TCP

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

Gerenciamento de conexo TCP

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

Gerenciamento de conexo TCP

Gerenciamento de conexo TCP

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

Princpios de controle de congestionamento

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

Abordagens do produto de controle de congestionamento

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: controle de congestionamento


Controle fim-a-fim (sem assistncia da rede) Transmissor limita a transmisso: LastByteSent-LastByteAcked CongWin Aproximadamente, CongWin Bytes/sec RTT CongWin dinmico, funo de congestionamento das redes detectadas Como o transmissor detecta o congestionamento? Evento de perda = tempo de confirmao ou 3 ACKs duplicados Transmissor TCP reduz a taxa (CongWin) aps o evento de perda rate = Trs mecanismos: AIMD Partida lenta Reao a eventos de esgotamento de temporizao

TCP AIMD

Reduo multiplicativa: diminui o CongWin pela metade aps o evento de perda

conexo TCP de longa-vida


3 - 49 3 - 50

TCP Partida lenta

TCP Partida lenta


Hospedeiro A Hospedeiro B

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

Resumo: controle de congestionamento TCP

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