Camada de Transporte Teleprocessamento e Redes Instituto de

  • Slides: 43
Download presentation
Camada de Transporte Teleprocessamento e Redes Instituto de Informática – UFG Prof. Fábio M.

Camada de Transporte Teleprocessamento e Redes Instituto de Informática – UFG Prof. Fábio M. Costa (slides baseados em [Kurose&Ross 2003]) Cap. 3: Camada de Transporte

Capítulo 3: Camada de Transporte Objetivos do Capítulo: Resumo do Capítulo: q serviços da

Capítulo 3: Camada de Transporte Objetivos do Capítulo: Resumo do Capítulo: q serviços da camada de transporte q entender os princípios por trás dos serviços da camada de transporte: ü ü multiplexação/demultiplexação transferência de dados confiável controle de fluxo controle de congestionamento q instanciação e implementação destes princípios na Internet q multiplexação/demultiplexação q transporte sem conexão: UDP q princípios de transferência confiável de dados q transporte orientado a conexões: TCP ü transferência confiável ü controle de fluxo ü gerenciamento de conexão q princípios de controle de congestionamento q controle de congesetionamento do TCP Cap. 3: Camada de Transporte 2

Protocolos e Serviços de Transporte q Comunicação lógica entre eerede enlace física te or

Protocolos e Serviços de Transporte q Comunicação lógica entre eerede enlace física te or sp an tr rede enlace física co gi ló rede enlace física im -f -a m fi processos de aplicação em diferentes hosts q Os protocolos de transporte são executados nos sistemas finais da rede (hosts ou “end systems”) Serviço de Transporte versus Serviços de Rede: q camada de rede: transferência de dados entre computadores (end systems) q camada de transporte: transferência de dados entre processos ü utiliza e aprimora os serviços oferecidos pela camada de rede aplicação transporte rede enlace física Cap. 3: Camada de Transporte 3

Protocolos da Camada de Transporte rede enlace física -f -a im ü m fi

Protocolos da Camada de Transporte rede enlace física -f -a im ü m fi ü o ü rede enlace física ic effort”), não seqüencial, entrega unicast or multicast: UDP q serviços não disponíveis: rede enlace física g ló q Não-confiável (“best- rede enlace física e ü rede enlace física rt po ü congestionamento controle de fluxo orientado a conexões transporte s an ü application tr Serviços de Transporte da Internet: q confiável, seqüencial e unicast: TCP application transporte rede enlace física tempo-real garantia de banda multicast confiável Cap. 3: Camada de Transporte 4

Multiplexação / Demultiplexação Segmento - unidade de dados trocada entre entidades da camada de

Multiplexação / Demultiplexação Segmento - unidade de dados trocada entre entidades da camada de transporte ü TPDU: transport protocol data unit (unidade de dados do protocolo de transporte) dados da camada de aplicação P 1 cabeçalho do segmento Ht M M Hn segmento aplicação transporte rede P 3 Demultiplexação: entrega de segmentos recebidos aos processos de aplicação corretos receptor M M aplicação transporte rede P 4 M P 2 aplicação transporte rede Cap. 3: Camada de Transporte 5

Multiplexação / Demultiplexação Multiplexação: reunir dados de múltiplos processo de aplicação, juntar cabeçalhos com

Multiplexação / Demultiplexação Multiplexação: reunir dados de múltiplos processo de aplicação, juntar cabeçalhos com informações para demultiplexação Multiplexação/demultiplexação: q baseadas no número de porta do transmissor, número de porta do receptor e endereços IP ü números de porta origem e destino em cada segmento ü Lembre-se: portas com números bem-conhecidos são usadas para aplicações específicas 32 bits porta origem porta destino outros campos de cabeçalho dados de aplicação (mensagem) formato do segmento TCP/UDP (campos comuns) Cap. 3: Camada de Transporte 6

Multiplexação/Demultiplexação q Em Protocolos Sem Conexão (UDP) ü Baseado no socket UDP de destino

Multiplexação/Demultiplexação q Em Protocolos Sem Conexão (UDP) ü Baseado no socket UDP de destino ü Socket UDP = Endereço IP + Número da Porta q Em Protocolos Orientados a Conexão (TCP) ü Baseado no socket TCP de destino ü Socket TCP: • Endereço IP de Origem + Número da Porta de Origem • Endereço IP de Destino + Número da Porta de Dest. ü I. e. , a conexão é identificada pelos endereços dois processos conectados Cap. 3: Camada de Transporte 7

Multiplexação: Exemplo 1 host A porta origem: x porta dest. : 53 servidor B

Multiplexação: Exemplo 1 host A porta origem: x porta dest. : 53 servidor B porta origem: 53 port dest. : x Aplicação: DNS (sobre UDP) (Observe a inversão dos números de portas na mensagem de resposta) Cap. 3: Camada de Transporte 8

Multiplexação: Exemplo 2 Processo (ou thread) da Aplicação cliente Web host C Socket TCP

Multiplexação: Exemplo 2 Processo (ou thread) da Aplicação cliente Web host C Socket TCP Servidor Web host B Camada de Transporte (Demultiplex. ) IP Origem: C IP Dest: B porta origem: y porta dest. : 80 IP Origem: C IP Dest: B porta origem: x porta dest. : 80 IP Origem: A IP Dest: B porta origem : x porta dest. : 80 cliente Web host A Aplicação: servidor Web (sobre TCP) Cap. 3: Camada de Transporte 9

UDP: User Datagram Protocol [RFC 768] q Protocolo de transporte da Internet “sem gorduras”,

UDP: User Datagram Protocol [RFC 768] q Protocolo de transporte da Internet “sem gorduras”, “sem frescuras” q Serviço “best effort” , segmentos UDP podem ser: ü perdidos ü entregues fora de ordem para a aplicação q Sem conexão: ü não há apresentação (handshaking) entre o UDP transmissor e o receptor ü cada segmento UDP é tratado de forma independente dos outros Por que UDP? q não há estabelecimento de conexão (que pode redundar em atrasos) q simples: não há estado de conexão nem no transmissor, nem no receptor q cabeçalho de segmento reduzido: baixo overhead q não há controle de congestionamento: UDP pode enviar segmentos tão rápido quanto desejado (e possível) Cap. 3: Camada de Transporte 10

Mais sobre UDP q Muito usado por aplicações de mutimídia contínua (streaming) ü ü

Mais sobre UDP q Muito usado por aplicações de mutimídia contínua (streaming) ü ü tolerantes à perda sensíveis à taxa Tamanho, em bytes, do segmento UDP, incluíndo cabeçalho 32 bits porta origem porta destino tamanho checksum q Outros usos do UDP (por que? ): ü ü DNS SNMP q Transferência confiável sobre UDP: acrescentar confiabilidade na camada de aplicação ü recuperação de erro específica de cada aplicação Dados de Aplicação (mensagem) formato do segmento UDP Cap. 3: Camada de Transporte 11

UDP checksum Objetivo: detectar “erros” (ex. , bits trocados) no segmento transmitido Transmissor: q

UDP checksum Objetivo: detectar “erros” (ex. , bits trocados) no segmento transmitido Transmissor: q trata o conteúdo do segmento como seqüência de inteiros de 16 bits q checksum: complemento de 1 da soma do conteúdo do segmento ü de 16 em 16 bits q transmissor coloca o valor calculado no campo de checksum do cabeçalho UDP Receptor: q computa o checksum do segmento recebido q verifica se o checksum calculado é igual ao valor do campo checksum: ü NÃO - erro detectado ü SIM - não há erros. Mas, talvez haja erros apesar disto? Mais sobre isto depois …. Cap. 3: Camada de Transporte 12

Princípios de Transferência Confiável de Dados q Importante nas camadas de aplicação, transporte e

Princípios de Transferência Confiável de Dados q Importante nas camadas de aplicação, transporte e enlace network layer q top-10 na lista dos tópicos mais importantes de redes! q As caracteristicas do canal não confiável subjacente determinarão a complexidade de um protocolo confiável de transferência de dados (rdt) Cap. 3: Camada de Transporte 13

Transferência Confiável: Modelo Básico rdt_send(): chamada da camada superior, (ex. , pela aplicação). Passa

Transferência Confiável: Modelo Básico rdt_send(): chamada da camada superior, (ex. , pela aplicação). Passa dados para entregar à camada superior receptora lado transmissor udt_send(): chamada pela entidade de transporte, para transferir pacotes para o receptor através do canal não confiável deliver_data(): chamada pela entidade de transporte para entregar dados para camada superior lado receptor rdt_rcv(): chamada pela entidade da camada inferior quando o pacote chega ao lado receptor do canal Cap. 3: Camada de Transporte 14

Transferência confiável: O ponto de partida Etapas: q desenvolver incrementalmente o transmissor e o

Transferência confiável: O ponto de partida Etapas: q desenvolver incrementalmente o transmissor e o receptor de um protocolo confiável de transferência de dados (rdt) q considerar apenas transferências de dados unidirecionais ü mas informação de controle deve fluir em ambas as direções! q usar máquinas de estados finitos (FSM) para especificar o protocolo transmissor e o receptor evento causando transição de estados ações tomadas na transição de estado: quando neste “estado” o próximo estado fica unicamente determinado pelo próximo evento estado 1 evento ações estado 2 Cap. 3: Camada de Transporte 15

rdt 1. 0: Transferência confiável sobre canais confiáveis q canal de transmissão perfeitamente confiável

rdt 1. 0: Transferência confiável sobre canais confiáveis q canal de transmissão perfeitamente confiável ü não há erros de bits ü não há perdas de pacotes q FSMs separadas para transmissor e receptor: ü transmissor envia dados para o canal subjacente ü receptor lê os dados do canal subjacente Cap. 3: Camada de Transporte 16

rdt 2. 0: Canal com erros de bit q Canal subjacente pode trocar valores

rdt 2. 0: Canal com erros de bit q Canal subjacente pode trocar valores dos bits num pacote ü lembrete: checksum do UDP pode detectar erros de bits q A questão: Como recuperar-se desses erros? ü reconhecimentos (ACKs): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente ü reconhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tem erros ü transmissor reenvia o pacote quando da recepção de um NAK ü cenários humanos usando ACKs, NAKs? q Novos mecanismos no rdt 2. 0 (além do rdt 1. 0): ü deteção de erros ü retorno do receptor: mensagens de controle (ACK, NAK) receptor -> transmissor ü retransmissão de pacotes recebidos com erro Cap. 3: Camada de Transporte 17

rdt 2. 0: especificação da FSM do transmissor FSM do receptor Cap. 3: Camada

rdt 2. 0: especificação da FSM do transmissor FSM do receptor Cap. 3: Camada de Transporte 18

rdt 2. 0: em ação (ausência de erros) FSM do transmissor FSM do receptor

rdt 2. 0: em ação (ausência de erros) FSM do transmissor FSM do receptor Cap. 3: Camada de Transporte 19

rdt 2. 0: em ação (cenário com erros) FSM do transmissor FSM do receptor

rdt 2. 0: em ação (cenário com erros) FSM do transmissor FSM do receptor Cap. 3: Camada de Transporte 20

rdt 2. 0 tem um problema fatal! O que acontece se o ACK/NAK é

rdt 2. 0 tem um problema fatal! O que acontece se o ACK/NAK é corrompido? q transmissor não sabe o que aconteceu no receptor! q não pode apenas retransmitir: possível duplicata O que fazer? q Transmissor envia um ACK/NAK para reconhecer o ACK/NAK do receptor. Mas o que acontece se este ACK/NAK se perdem? q receptor retransmite o ACK/NAK. Mas isto poderia causar confusão ü ü p. ex. : a retransmissão de um pacote recebido corretamente! isto é, duplicatas q claramente, esta não parece ser uma solução satisfatória! Uma solução mais simples: Baseada na deteção de duplicatas pelo receptor Tratando duplicatas: q transmissor acrescenta número de seqüência em cada pacote q Transmissor reenvia o último pacote se ACK/NAK for perdido q receptor descarta (não passa para a aplicação) pacotes duplicados stop and wait Transmissor envia um pacote e então espera pela resposta do receptor Cap. 3: Camada de Transporte 21

rdt 2. 1: Transmissor, trata ACK/NAKs perdidos Cap. 3: Camada de Transporte 22

rdt 2. 1: Transmissor, trata ACK/NAKs perdidos Cap. 3: Camada de Transporte 22

rdt 2. 1: Receptor, trata ACK/NAKs perdidos Cap. 3: Camada de Transporte 23

rdt 2. 1: Receptor, trata ACK/NAKs perdidos Cap. 3: Camada de Transporte 23

rdt 2. 1: Receptor, trata ACK/NAKs perdidos: Operação sem erros Cap. 3: Camada de

rdt 2. 1: Receptor, trata ACK/NAKs perdidos: Operação sem erros Cap. 3: Camada de Transporte 24

rdt 2. 1: Discussão Transmissor: q adiciona número de seqüência ao pacote q Dois

rdt 2. 1: Discussão Transmissor: q adiciona número de seqüência ao pacote q Dois números (0 e 1) bastam. Porque? q deve verificar se os ACK/NAK recebidos estão corrompidos q duas vezes o número de estados ü Receptor: q deve verificar se o pacote recebido é duplicado ü estado indica se o pacote 0 ou 1 é esperado q nota: receptor pode não saber se seu último ACK/NAK foi recebido pelo transmissor o estado deve “lembrar” se o pacote “corrente” tem número de seqüência 0 ou 1 Cap. 3: Camada de Transporte 25

rdt 2. 2: um protocolo sem NAK q mesma funcionalidade do rdt 2. 1,

rdt 2. 2: um protocolo sem NAK q mesma funcionalidade do rdt 2. 1, usando somente ACKs q ao invés de enviar NAK, o receptor envia ACK para o último pacote recebido sem erro ü receptor deve incluir explicitamente o número de seqüência do pacote sendo reconhecido q ACKs duplicados no transmissor resultam na mesma ação do NAK: retransmição do pacote corrente ! FSM do transmissor Cap. 3: Camada de Transporte 26

rdt 3. 0: canais com erros e perdas Nova Hipótese: canal de transmissão pode

rdt 3. 0: canais com erros e perdas Nova Hipótese: canal de transmissão pode também perder pacotes (de dados ou ACKs) ü checksum, números de seqüência, ACKs, retransmissões serão de ajuda, mas não o bastante Q: como tratar com perdas? ü ü transmissor espera até que certos dados ou ACKs sejam perdidos, então retransmite problemas? Abordagem: transmissor espera um tempo “razoável” pelo ACK q retransmite se nenhum ACK for recebido neste tempo ü timeout q se o pacote (ou ACK) estiver apenas atrasado (não perdido): ü retransmissão será duplicata, mas os números de seqüência já tratam com isso ü receptor deve especificar o número de seqüência do pacote sendo reconhecido q exige um temporizador decrescente Cap. 3: Camada de Transporte 27

rdt 3. 0 sender Cap. 3: Camada de Transporte 28

rdt 3. 0 sender Cap. 3: Camada de Transporte 28

rdt 3. 0 em ação (a) operação sem perda (b) pacote perdido Cap. 3:

rdt 3. 0 em ação (a) operação sem perda (b) pacote perdido Cap. 3: Camada de Transporte 29

rdt 3. 0 em ação (c) ACK perdido (d) timeout prematuro Cap. 3: Camada

rdt 3. 0 em ação (c) ACK perdido (d) timeout prematuro Cap. 3: Camada de Transporte 30

Desempenho do rdt 3. 0 q rdt 3. 0 funciona, mas o desempenho é

Desempenho do rdt 3. 0 q rdt 3. 0 funciona, mas o desempenho é sofrível q exemplo: enlace de 1 Gbps, 15 ms de atraso de propagação, pacotes de 1 KB: 8 kb/pct = transmissão 10**9 b/seg = 8 ms fração do tempo Utilização = U = transmissor ocupado = ü ü 8 ms 30, 016 ms = 0. 00015 Um pacote de 1 KB cada 30 ms -> 33 k. B/seg de vazão sobre um canal de 1 Gbps o protocolo de rede limita o uso dos recursos físicos! Cap. 3: Camada de Transporte 31

Protocolos com Paralelismo (pipelining) Paralelismo: transmissor envia vários pacotes ao mesmo tempo, todos esperando

Protocolos com Paralelismo (pipelining) Paralelismo: transmissor envia vários pacotes ao mesmo tempo, todos esperando para serem reconhecidos ü ü faixa de números de seqüência deve ser aumentada armazenamento dos pacotes no transmissor e/ou no receptor (a) operação do protocolo stop-and-wait (a) operação do protocolo com paralelismo q Duas formas genéricas de protocolos com paralelismo: go-Back-N e retransmissão seletiva Cap. 3: Camada de Transporte 32

Go-Back-N Transmissor: q Número de seqüência com k bits no cabeçalho do pacote q

Go-Back-N Transmissor: q Número de seqüência com k bits no cabeçalho do pacote q “janela” de até N, pacotes não reconhecidos, consecutivos, são permitidos q ACK(n): reconhece todos os pacotes até o número de seqüência N (incluindo este limite). “ACK cumulativo” ü pode receber ACKs duplicados (veja receptor) q temporizador para o pacote mais antigo enviado e não confirmado q timeout: retransmite pacote mais antigo e todos os demais pacotes que estejam dentro da janela Cap. 3: Camada de Transporte 33

GBN: FSM estendida para o Transmissor Inicialização: base = 1 nextseqnum = 1 Dados

GBN: FSM estendida para o Transmissor Inicialização: base = 1 nextseqnum = 1 Dados a enviar Q: E se for um ACK atrasado (< base)? Avança a janela Ocorreu timeout Ok se janela avançou Recebeu ACK rdt_rcv(rcvpkt) && corrupt(rcvpkt) Λ Recebeu ACK com erro Cap. 3: Camada de Transporte 34

Possíveis respostas q Protocolo assume que a rede/camada subjacente jamais reordena pacotes! ü Neste

Possíveis respostas q Protocolo assume que a rede/camada subjacente jamais reordena pacotes! ü Neste caso específico, pacotes de ACK q Melhorar o tratamento do evento de recepção de ACKs para verificar se não é um ACK ultrapassado ü Suficiente para lidar com a possibilidade de reordenação de pacotes pela camada inferior? Cap. 3: Camada de Transporte 35

GBN: FSM estendida para o Receptor Qualquer outro evento Inicialização: expectedseqnum = 1 sndpkt

GBN: FSM estendida para o Receptor Qualquer outro evento Inicialização: expectedseqnum = 1 sndpkt = make_pkt(0, ACK, checksum) expectedseqnum++ receptor simples: q somente ACK: sempre envia ACK para pacotes corretamente recebidos com o mais alto número de seqüência em ordem ü ü pode gerar ACKs duplicados precisa lembrar apenas do número de seqüência esperado (expectedseqnum) q pacotes fora de ordem (pacote anterior foi perdido) -> default: ü descarte (não armazena) -> não há buffer de recepção! ü reconhece pacote com o mais alto número de seqüência em ordem Cap. 3: Camada de Transporte 36

Go-Back-N em ação (janela: 4 pacotes) Cap. 3: Camada de Transporte 37

Go-Back-N em ação (janela: 4 pacotes) Cap. 3: Camada de Transporte 37

Retransmissão Seletiva q Receptor reconhece individualmente todos os pacotes recebidos corretamente ü armazena pacotes,

Retransmissão Seletiva q Receptor reconhece individualmente todos os pacotes recebidos corretamente ü armazena pacotes, quando necessário, para eventual entrega em ordem para a camada superior q Transmissor somente reenvia os pacotes para os quais um ACK não foi recebido ü transmissor temporiza cada pacote não reconhecido q Janela de transmissão ü N números de seqüência consecutivos ü novamente limita a quantidade de pacotes enviados, mas não reconhecidos (i. e. , com ACK pendente) Cap. 3: Camada de Transporte 38

Retransmissão seletiva: janelas do transmissor e do receptor (a) visão dos números de seqüência

Retransmissão seletiva: janelas do transmissor e do receptor (a) visão dos números de seqüência pelo transmissor (b) visão dos números de seqüência pelo receptor Cap. 3: Camada de Transporte 39

Retransmissão seletiva transmissor dados da camada superior : q se o próximo número de

Retransmissão seletiva transmissor dados da camada superior : q se o próximo número de seqüência disponível está na janela, envia o pacote timeout(n): q reenvia pacote n, e redispara seu temporizador de timeout ACK(n) em [sendbase, sendbase+N]: marca pacote n como recebido q se n é o menor pacote não reconhecido, avança a base da janela para o próximo número de seqüência não reconhecido q receptor pacote n em [rcvbase, rcvbase+N-1] q envia ACK(n) q fora de ordem: armazena q em ordem: entrega para a camada superior, avança janela para o próximo pacote ainda não recebido pkt n em [rcvbase-N, rcvbase-1] q ACK(n) caso contrário: q ignora Cap. 3: Camada de Transporte 40

Retransmissão seletiva em ação Cap. 3: Camada de Transporte 41

Retransmissão seletiva em ação Cap. 3: Camada de Transporte 41

Retransmissão seletiva: dilema Exemplo: q núms. de seqüência: 0, . . , 3 q

Retransmissão seletiva: dilema Exemplo: q núms. de seqüência: 0, . . , 3 q tamanho da janela=3 q receptor não vê diferença nos dois cenários! q incorretamente passa dados duplicados como novos (figura a) Q: qual a relação entre o espaço de numeração seqüencial e o tamanho da janela? Cap. 3: Camada de Transporte 42

Exercícios q Problemas: 5, 6, 7, 10, 12, 16, 18, 19 ü 2 a.

Exercícios q Problemas: 5, 6, 7, 10, 12, 16, 18, 19 ü 2 a. Edição (na bibl. do INF ou no Xerox do CA) q Prático: ü Implementar incrementalmente os protocolos estudados na seção 3. 4 (em Java ou em C) ü Sobre UDP, como se fosse a camada de rede ü Analisar o desempenho dos protocolos em uma rede local • ênfase no throughput e eficiência de utilização ü Considerar a mesma análise em uma rede com latência maior • ex. : introduzindo um atraso artificial ü Lab. de Redes Cap. 3: Camada de Transporte 43