A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

3: Nível de Transporte3a-1 Direita ou esquerda ???

Apresentações semelhantes


Apresentação em tema: "3: Nível de Transporte3a-1 Direita ou esquerda ???"— Transcrição da apresentação:

1

2 3: Nível de Transporte3a-1 Direita ou esquerda ???

3 3: Nível de Transporte3a-2 Capítulo 3: Nível de transporte Objectivos do capítulo: r Entender os princípios subjacentes ao serviço de nível de transporte: m Multiplexagem/desmulti plexagem m Transferência de dados fiável m Controlo de fluxo m Controlo de congestão r Instanciação e implementação na Internet Sumário do capítulo: r Serviços de nível de transporte r Multiplexagem/Desmultiplexag em r Transporte sem ligação: UDP r Princípios da transmissão fiável r Transporte orientado à ligação: TCP m Transferência fiável m Controlo de fluxo m Gestão de ligação r Princípios de controlo de congestão r Controlo de congestão em TCP

4 3: Nível de Transporte3a-3 Serviços de Transporte e Protocolos r Ex: cartas entre primos amarelos e azuis !!! Sistemas Terminais = casas Processos = primos Mensagens de aplicação = cartas nos envelopes Protocolo de transporte = amarelo e azul Protocolo de rede = serviço postal r Sistemas Terminais ? r Processos ? r Mensagens de aplicação ? r Protocolo de transporte ? r Protocolo de rede ?

5 3: Nível de Transporte3a-4 Serviços de Transporte e Protocolos r Fornece comunicação lógica entre processos de aplicação a funcionar em Sistemas Terminais diferentes r Os Protocolos de Transporte são executados nos Sistemas Terminais r Serviços de Transporte vs. Serviços de Rede: r Nível de Rede: Transferência de dados entre Sistemas Terminais r Nível de Transporte: Transferência de dados entre processos m Confia e melhora, os serviços do Nível de Rede Aplicação Transporte Rede Lig. Lógica Físico Aplicação Transporte Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Transporte lógico extremo-a-extremo

6 3: Nível de Transporte3a-5 Protocolos de Nível de Transporte Serviços de Transporte Internet: r fiável, entrega ordenada uni-cast (TCP) m congestão m Controlo de fluxo m Estabelecimento da ligação r Não fiável (best-effort), entrega não ordenada uni- cast ou multi-cast: UDP r Serviços não disponíveis: m Tempo real m Garantias de largura de banda m Multicast fiável Aplicação Transporte Rede Lig. Lógica Físico Aplicação Transporte Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Rede Lig. Lógica Físico Transporte lógico extremo-a-extremo

7 3: Nível de Transporte3a-6 Aplicação Transporte Rede M P2 Aplicação Transporte Rede Multiplexagem/Desmultiplexagem Relembrar: segmento – unidade de dados transferido entre entidades de nível de transporte m aka TPDU: Unidade de Dados do Protocolo de Transporte (transport protocol data unit) Receptor H t H n Desmultiplexagem: entrega dos segmentos recebidos para o processo de aplicação correcto segment segmento M Aplicação Transporte Rede P1 MMM P3 P4 Cabeçalho do segmento Dados do nível de aplicação

8 3: Nível de Transporte3a-7 multiplexagem/desmultiplexagem: r Baseado no emissor/receptor: nº do porto, endereço IP m Nº do porto de origem/ destino para cada segmento m Relembrar: nº dos portos é bem conhecido para aplicações específicas Recolher dados de diferentes processos de aplicação, delimitar dados com cabeçalho (mais tarde usado para desmultiplexar) Dados da aplicação (messagem) Outros campos do cabeçalho Formato do segmento TCP/UDP Multiplexagem: Multiplexagem/Desmultiplexagem # porto origem # porto destino 32 bits

9 3: Nível de Transporte3a-8 Multiplexagem/desmultiplexagem: exemplos Sistema Terminal A Servidor B source port: x dest. port: 23 source port:23 dest. port: x Utilização do porto: simples aplicação de telnet ! Cliente Web Sistema Terminal A Web server B Cliente Web Sistema Terminal C Source IP: C Dest IP: B source port: x dest. port: 80 Source IP: C Dest IP: B source port: y dest. port: 80 Utilização do porto: Servidor Web Source IP: A Dest IP: B source port: x dest. port: 80

10 3: Nível de Transporte3a-9 UDP: User Datagram Protocol [RFC 768] r Protocolo de transporte da Internet r Serviço best effort r Segmentos UDP podem ser: m perdidos m Entregues fora de ordem à aplicação r Sem ligação m Sem handshaking entre o emissor e o receptor UDP m Cada segmento UDP é processado independentemente dos demais Porquê UDP ? r Sem estabelecimento de ligação (que adiciona atraso) r simples: não há estado da ligação no emissor, receptor r Cabeçalho pequeno do segmento r Não há controlo de congestão: UDP pode estoirar tão depressa quanto se queira !!

11 3: Nível de Transporte3a-10 UDP: mais r Usualmente utilizado para aplicações de streaming (multimédia) m Tolerante a perdas m Sensível ao ritmo r Outras utilizações do UDP (Porquê ?): m DNS m SNMP r Transferência fiável sobre UDP: adiciona a fiabilidade ao nível da aplicação m Recuperação de erros específica da aplicação! source port #dest port # 32 bits Dados da aplicação (message) Formato do segmento UDP length checksum Dimensão, em bytes do segmento UDP, incluindo Cabeçalho

12 3: Nível de Transporte3a-11 checksum UDP Emissor: r Trata o conteúdo do segmento como uma sequência de inteiros de 16 bits r checksum: adiciona ao conteúdo do segmento (complemento para 1 da soma) r Emissor coloca o valor do checksum no campo de checksum do segmento UDP Receptor: r Calcula o checksum dos segmentos recebidos r Verifica se o checksum calculado é igual ao do campo de checksum m NÃO – erro detectado m SIM – não houve erro detectado m Mas podem haver erros ? Mais tarde ….. Objectivo: detectar erros (e.g., bits trocados) no segmento transmitido

13 3: Nível de Transporte3a-12 Princípios da transmissão fiável r Importante nas aplicações, transporte, ligação lógica r Faz parte da lista top-10 de assuntos de rede! r As características do canal não fiável determinam a complexidade do protocolo de transferência de dados fiável.

14 3: Nível de Transporte3a-13 Transferência de dados fiável: início Lado do Emissor Lado do Receptor rdt_send(): chamado do nível de cima, (e.g., aplicação.). Envia dados para entrega no nível superior do receptor udt_send(): chamado por rdt, para transferir pacotes para o receptor através dum canal não fiável rdt_rcv(): chamada quando os pacotes chegam ao canal no lado de receptor rcv-side deliver_data(): chamado por rdt para entregar dados ao nível superior

15 3: Nível de Transporte3a-14 Então: r Desenvolvimento do emissor incremental, r Lado do receptor do protocolo de transferência de dados fiável (rdt) r Considerar apenas transferência de dados uni-direccional m Mas a informação de controlo flui nas duas direcções r Uso de máquinas de estado finitas (FSM) para especificar o emissor e o receptor estado 1 estado 2 Evento que causa a transição de estado Acções a tomar na transição de estado estado: quando neste estado, o próximo estado é unicamente determinado pelo próximo evento eventos acções Transferência de dados fiável: início

16 3: Nível de Transporte3a-15 Rdt1.0: transferência de dados fiável sobre um canal fiável r Canal que está por baixo é perfeitamente fiável m Não há erros nos bits m Não há perda de pacotes r FSM separadas para o emissor e o receptor m Emissor envia dados para o canal m Receptor lê dados do canal

17 3: Nível de Transporte3a-16 rdt2.0: canal introduz erros nos bits r Canal que está por baixo pode trocar bits nos pacotes m Relembrar: o checksum UDP checksum detecta erros em bits r Questão: como recuperar dos erros ? m acknowledgements (ACKs): receptor diz, explicitamente, ao emissor que recebeu um pacote sem erros. m negative acknowledgements (NAKs): receptor diz, explicitamente, ao emissor que recebeu um pacote com erros emissor retransmite o pacote quando recebe o NAK m Exemplos humanos de utilização de ACKs e NAKs? Novos mecanismos em r dt2.0 (para além de rdt1.0 ): m detecção de erros m resposta (feed-back) do receptor: m mensagens de controlo (ACK,NAK) receptor emissor

18 3: Nível de Transporte3a-17 rdt2.0: Especificação FSM Emissor FSMReceptor FSM

19 3: Nível de Transporte3a-18 rdt2.0: em acção (sem erros) Emissor FSMReceptor FSM

20 3: Nível de Transporte3a-19 rdt2.0: em acção (com erros) Emissor FSMReceptor FSM

21 3: Nível de Transporte3a-20 rdt2.0 tem uma deficiência fatal! O que acontece se os ACKs e os NAKs se corromperem? r O emissor não sabe o que acontece ao receptor! r Retransmissões pode ocasionar pacotes duplicados O que fazer? r Emissor envia ACKs/NAKs referentes aos ACK/NAK do receptor ? m O que acontece se os ACKs/NAKs do emissor se perderem ? r Retransmite-se! m Podem ser retransmitidos pacotes correctamente recebidos Tratamento de duplicações: r Emissor acrescenta número de sequência a cada pacote r Emissor retransmite pacote corrente se o ACK/NAK se corromper r Receptor descarta pacotes duplicados (não os entrega aos níveis superiores). Emissor envia um pacote e espera pela resposta do receptor stop and wait

22 3: Nível de Transporte3a-21 rdt2.1: emissor, trata ACK/NAKs corrompidos

23 3: Nível de Transporte3a-22 rdt2.1: receiver, handles garbled ACK/NAKs

24 3: Nível de Transporte3a-23 rdt2.1 : discussão Emissor: r Nº de sequência adicionado a cada pacote r Dois nºs de sequência (0,1) são suficientes m Porquê ? r Tem de verificar se os ACKs/NAKs recebidos estão corrompidos r O dobro do nº de estados m O estado tem de se lembrar se o pacote corrente tem o nº de sequência 0 ou 1. Receptor: r Tem de verificar se recebeu pacotes duplicados m o estado indicad sed se espera um pacote com o nº de sequência 0 ou 1. r nota: receptor não pode saber se o último ACK/NAK chegou correctamente ao emissor

25 3: Nível de Transporte3a-24 rdt2.2: um protocol livre de NAKs r a mesma funcionalidade de rdt2.1, usando ACKs apenas r em vez de NAK, receptor envia ACK referente ao último pacote correctamente recebido r receptor tem de incluir, explicitamente, o nº de sequência do pacote a ser confirmado, isto é, ACKed r ACKs duplicados no emissor resultam na mesma acção que um NAK: retransmissão do pacote corrente Emissor FSM !

26 3: Nível de Transporte3a-25 rdt3.0: canais com erros e perdas Novos pressupostos: canal que está por baixo também pode perder pacotes (dados ou ACKs) m checksum, nºseq., ACKs, retransmissões ajudam, mas não são suficientes Q: como lidar com as perdas? m Emissor espera até que certos dados ou ACKs se percam, depois retransmite m desvantagens? Aproximação: emissor espera uma quantidade de tempo razoável por um ACK r retransmite se o ACK não for recebido nesse tempo r Se o pacote de dados (ou o ACK) se tiver atrasado (mas não perdido): m Retransmissão será duplicada, mas a utilização de nº de seq. trata disso m Receptor tem de especificar o nº de seq. do pacote que está a ser confirmado (ACKed) r Necessário um temporizador descendente (countdown timer)

27 3: Nível de Transporte3a-26 rdt3.0: emissor

28 3: Nível de Transporte3a-27 rdt3.0: em acção

29 3: Nível de Transporte3a-28 rdt3.0: em acção

30 3: Nível de Transporte3a-29 Desempenho de rdt3.0 r rdt3.0 funciona, mas o desempenho…. r exemplo: m Ligação = 1 Gbps m Tempo de propagação extremo-a-extremo = 15 ms m Pacote = 1KB T transmissão = 8Kb/pkt 10**9 b/sec = 8 seg Utilização = U = = 8 seg mseg Fracção de tempo que o emissor está ocupado a enviar = m 1KB pkt cada 30 mseg -> débito de 33KB/seg numa ligação 1 Gbps m Protocolos de rede limitam o uso dos recursos físicos

31 3: Nível de Transporte3a-30 Protocolos em pipeline Pipeline: o emissor permite múltiplos, pacotes ainda não confirmados a-caminho m Intervalo dos números de sequência tem de aumentar m Armazenamento no emissor e/ou receptor r Duas formas genéricas de protocolos em pipeline: m go-Back-N, m selective repeat

32 3: Nível de Transporte3a-31 Go-Back-N Emissor: r Cabeçalho do pacote com k bits para o nº de seq. r janela de até N, pacotes consecutivos ainda não confirmados. r ACK(n): ACKs todos os pacotes até o nº de seq. n m ACK acumulativo m podem ser recebidos ACKs duplicados (ver receptor) r temporizador para cada pacote a caminho r timeout(n): retransmite pacote n e todos os pacotes de nº de seq. superior na janela.

33 3: Nível de Transporte3a-32 GBN: emissor ampliado FSM Acho esta máquina de estados errada

34 3: Nível de Transporte3a-33 GBN: receptor ampliado FSM Receptor simples: r ACK: envia sempre ACK dos pacotes correcta e ordenamente recebidos com o nº de sequência superior m Pode gerar ACKs duplicados Só tem de recordar o nº de seq. esperado expectedseqnum r Pacotes fora de ordem: m descartar (não armazenadr) -> não há armazenamento no receptor! m ACK dos pacotes com o nº de seq. superior

35 3: Nível de Transporte3a-34 GBN em acção

36 3: Nível de Transporte3a-35 Repetição selectiva r Receptor faz o ACK individual de todos os pacotes correctamente recebidos m armazena pacotes, quando necessário, para os poder entregar por ordem aos níveis superiores r Emissor apenas re-envia pacotes para os quais o ACK não tenha sido recebido. m Temporizador no emissor para cada pacote não confirmado (unACKed) r Janela do emissor m N nº de seq. consecutivos m Novamente há limite para o nº de pacotes com novo nº de seq. a serem enviados, em função dos pacotes não confirmados

37 3: Nível de Transporte3a-36 Repetição selectiva: janela do emissor e receptor

38 3: Nível de Transporte3a-37 Repetição selectiva Dados para enviar : r Se a janela tiver um º de seq. disponível, envia o pacote Temporizador expirou(n): m Re-envia pacote N, re- inícia o temporizador ACK(n) em [sendbase,sendbase+N]: r Marca pacote n como recebido r Se n é menor do que o nº dum pacote unACKed, avança a base da janela para o próximo nº de seq. unACKed Emissor Pacote n em [rcvbase,rcvbase+N-1] r envia ACK(n) r fora de ordem: armazena r Por ordem: m entrega (também entrega por ordem os pacotes armazenados) m avança a janela para o próximo pacote ainda não recebido pkt n em [rcvbase-N,rcvbase-1] r ACK(n) Doutro modo: r ignora Receptor

39 3: Nível de Transporte3a-38 Repetição selectiva : em acção

40 3: Nível de Transporte3a-39 Repetição selectiva : dilema Exemplo: r Nºs seq : 0, 1, 2, 3 r Dimensão da janela =3 r o receptor vê diferenças nos dois cenários! r Dados duplicados são passados incorrectamente como novos em (a) Q: qual a relação entre o nº de seq. e a dimensão da janela ?

41 3: Nível de Transporte3a-40 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 r Transmissão de dados bi- direccional: m Transmissão de dados bi- direccional na mesma ligação m MSS: maximum segment size r Orientado-à-ligação: m handshaking (transferência de mensagens de controlo) Inicia o estado do emissor e do receptor antes de transferir os dados r Fluxo controlado: m Emissor não sobrecarrega o receptor r Ponto-a-ponto : m Um emissor, um receptor r Cadeia de bytes ordenada e fiável : m Não há fronteiras nas mensagens r pipelined : m TCP dimensão das janelas de controlo de congestão e de fluxo ajustável r Buffers no emissor e receptor socket door TCP Buffer de envio TCP Buffer de recepção socket door Aplicação Escrita de dados Aplicação Leitura de dados segmento

42 3: Nível de Transporte3a-41 TCP: estrutura do segmento # porto origem # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F SR PAU head len not used Opções (dimensão variável)

43 3: Nível de Transporte3a-42 TCP: estrutura do segmento # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F SR PAU head len not used Opções (dimensão variável) # porto origem r Nº de sequência e Nº de ACKS: m Contagem por bytes de dados m Não segmentos ! r Head Length em palavras de 32 b m Dimensão sem extensões 20 B r RCVR Window Size : m Nº de Bytes que o receptor espera receber r Opções : m Negociação de parâmetros MSS (usual 1500; 536; 512 B) Factor de escala p/ janela em ligações de alto débito

44 3: Nível de Transporte3a-43 TCP: estrutura do segmento # porto destino 32 bits application data (variable length) Número sequência Número acknowledgment rcvr window size ptr urgent data checksum F SR PAU head len not used Opções (dimensão variável) # porto origem r Flags de sinalização de informação urgente: m U – URG: dados que o nível superior do emissor sinalizou como urgentes m P – PSH: O receptor deve passar os dados para o nível superior imediata/ r Flags de controlo m A – ACK: valor válido no campo ACK m R- RST; S- SYN; F – FIN: estabelecimento e terminação da ligação r Ptr Urgent data m Apontador para o último byte de dados que contém dados urgentes

45 3: Nível de Transporte3a-44 TCP nº de sequência e ACK Seq. #s: m Nº da cadeia de bytes do primeiro byte do segmento de dados ACKs: m Nº de seq. do próximo byte esperado do outro lado m ACK acumulativo Q: Como é que o receptor processa segmentos for a de ordem ? m A: A especificação TCP não é clara, deixando esta questão para a implementação Host A Host B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 Utilizador digita C Sistema Terminal confirma (ACK) e ecoa o C Sistema Terminal recebe C e e ecoa de volta o C tempo Cenário simples de Telnet

46 3: Nível de Transporte3a-45 TCP: transferência de dados fiável Emissor simplificado, assume: wait for event wait for event evento: dados recebidos das aplicações dos níveis superiores evento: temporizador expira para o segmento com o nº de seq. y evento: ACK recebido com ACK y criação, envio do segmento Retransmisssão do segmento y ACK processado Transferência de dados uni-direcccional Sem controlo de fluxo Sem controlo de congestão

47 3: Nível de Transporte3a-46 TCP: transferência de dados fiável 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number loop (forever) { 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compute new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y > sendbase) { /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers < y 17 sendbase = y 18 } 19 else { /* a duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */ Emissor TCP simplificado

48 3: Nível de Transporte3a-47 TCP geração de ACKs [RFC 1122, RFC 2581] Evento Chegada ordenada de segmentos, Sem buracos, tudo o mais já ACKed Chegada ordenada de segmentos, Sem buracos, Um ACK pendente por atraso Chegada de segmentos desordenada Nº de seq. superior ao esperado Buraco(s) detectados Chegada de segmento que preenche completa ou incompletamente o buraco TCP Acção no receptor ACK atrasado. Espera máxima de 500 ms pelo próximo segmento. Se não chega segmento, envia ACK Envia imediatamente um único ACK Acumulativo, referente a todos os segmentos que chegaram ordenadamente Envia ACK duplicado, indicando o nº de seq. do próximo byte esperado ACK imediato se o segmento começa no limite inferior do buraco

49 3: Nível de Transporte3a-48 TCP: cenários de retransmissão Host A Seq=92, 8 bytes data ACK=100 loss timeout tempo Perda de ACK Host B X Seq=92, 8 bytes data ACK=100 Host A Seq=100, 20 bytes data ACK=100 Seq=92 timeout tempo Timeout antecipado, ACKs acumulativo Host B Seq=92, 8 bytes data ACK=120 Seq=92, 8 bytes data Seq=100 timeout ACK=120


Carregar ppt "3: Nível de Transporte3a-1 Direita ou esquerda ???"

Apresentações semelhantes


Anúncios Google