490 likes | 598 Views
Comparação entre as camadas. Camada de Transporte repousa exatamente a camada de rede. Protocolo da camada de transporte fornece comunicação lógica entre processos , rodando em hosts diferentes. Protocolo da camada de rede fornece comunicação lógica entre hosts .
E N D
Comparação entre as camadas • Camada de Transporte repousa exatamente a camada de rede. • Protocolo da camada de transporte fornece comunicação lógica entre processos, rodando em hosts diferentes. • Protocolo da camada de rede fornece comunicação lógica entre hosts. Esta distinção é sutil, mas MUITO importante!!! 3: Camada de Transporte
Camada de Transporte X Camada de Rede • Considere 12 irmãos numa casa em São Paulo. • E outros 12 irmãos em outra casa em Boa Vista no Acre. • Os de SP São primos daqueles em Boa Vista, e escrevem uns para os outros semanalmente. • Em SP, João recolhe as cartas dos irmãos e as entrega ao correio. • No Acre, Maria recolhe as cartas dos irmãos, e as entrega ao correio. • Ambos também fazem a distribuição local do que chega. 3: Camada de Transporte
Camada de Transporte X Camada de Rede (2) • Hosts (end systems) = Casas. • Processos = os primos que trocam mensagens. • Mensagens da Aplicação = cartas em envelopes. • Protocolo da camada de rede = serviço postal (correio). • Protocolo da camada de transporte = João e Maria. 3: Camada de Transporte
Metas do capítulo: compreender os princípios atrás dos serviços da camada de transporte: multiplexação/demultiplexação transferência confiável de dados controle de fluxo controle de congestionamento instanciação e implementação na Internet Resumo do Capítulo: serviços da camada de transporte multiplexação/demultiplexação transporte sem conexão: UDP princípios de transferência confiável de dados transporte orientado a conexão: TCP transferência confiável controle de fluxo gerenciamento de conexões princípios de controle de congestionamento controle de congestionamento em TCP Capítulo 3: Camada de Transporte 3: Camada 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 depende de, estende serviços da camada de rede aplicação transporte rede enlace física aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física transporte lógico fim a fim Serviços e protocolos de transporte 3: Camada de Transporte
Serviços e protocolos de transporte (2) • Do ponto de vista da APLICAÇÃO a camada de transporte permite enxergar os sistemas como se eles estivessem fisicamente conectados. Mesmo que existam vários roteadores, links e outros equipamentos no caminho. • A camada de Aplicação não tem que se preocupar com os detalhes físicos da infra-estrutura de interligação, usada para carregar as mensagens. 3: Camada de Transporte
aplicação transporte rede enlace física aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física transporte lógico fim a fim Serviços e protocolos de transporte • Como já foi dito: • Protocolos de transporte são implementados nos sistemas de extremidade (end systems) e não nos roteadores intermediários. • TRANSPORTE: Camada 4, superior à camada de rede 3: Camada de Transporte
Serviços de transporte na Internet: entrega confiável, ordenada, ponto a ponto (TCP) congestionamento controle de fluxo 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: tempo-real garantias de banda multiponto confiável aplicação transporte rede enlace física aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física transporte lógico fim a fim Protocolos da camada de transporte 3: Camada de Transporte
Lembrança: segmento unidade de dados trocada entre entidades da camada de transporte = TPDU: transport protocol data unit P3 M M M M P4 dados da camada de aplicação aplicação transporte rede aplicação transporte rede aplicação transporte rede H n cabeçalho de segmento P1 P2 segmento H t M segmento Multiplexação/demultiplexação Demultiplexação: entrega de segmentos recebidos para os processos da camada de aplicação corretos receptor 3: Camada de Transporte
multiplexação/demultiplexação: baseadas em números de porta e endereços IP de remetente e receptor números de porta de remetente/receptor em cada segmento lembrete: número de porta bem conhecido para aplicações específicas 32 bits porta remetente porta receptor outros campos do cabeçalho dados da aplicação (mensagem) Multiplexação: Multiplexação/demultiplexação juntar dados de múltiplos processos de apl, envelopando dados com cabeçalho (usado depois para demultiplexação) formato de segmento TCP/UDP 3: Camada de Transporte
IP orig: C IP dest: B porta orig: x porta dest: 80 IP orig : C IP dest: B porta orig: y porta dest: 80 IP orig: A IP dest: B porta orig: x porta dest: 80 porta orig.: x porta dest: 23 porta orig:23 porta dest: x Multiplexação/demultiplexação: exemplos servidor B Web client host C estação A uso de portas: apl. simples de telnet servidor WWW B cliente WWW estação A uso de portas : servidor WWW 3: Camada de Transporte
Protocolo de transporte da Internet mínimo, “sem frescura”, Serviço “melhor esforço”, segmentos UDP podem ser: perdidos entregues à aplicação fora de ordem do remesso sem conexão: não há “setup” UDP entre remetente, receptor 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 UDP: User Datagram Protocol [RFC 768] 3: Camada de Transporte
muito utilizado para apls. de meios contínuos (voz, vídeo) tolerantes de perdas sensíveis à taxa de transmissão outros usos de UDP (por quê?): DNS (nomes) SNMP (gerenciamento) transferência confiável com UDP: incluir confiabilidade na camada de aplicação recuperação de erro específica à apl.! Mais sobre UDP Comprimento em bytes do segmento UDP, incluindo cabeçalho 32 bits porta origem porta dest. checksum comprimento Dados de aplicação (mensagem) UDP segment format 3: Camada de Transporte
Remetente: trata conteúdo do segmento como seqüência de inteiros de 16-bits campo checksum zerado checksum: soma (adição usando complemento de 1) 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 é zero: NÃO - erro detectado SIM - nenhum erro detectado. Mas ainda pode ter erros? Veja depois …. Checksum UDP Meta:detecta “erro” (e.g., bits invertidos) no segmento transmitido 3: Camada de Transporte
Exemplo de cálculo do checksum (1) Considere 3 palavras de 16 bits sendo transmitidas: 0110011001100110 0101010101010101 0000111100001111 A soma das duas primeiras palavras é: 0110011001100110 0101010101010101 10 1110111011 1011 Adicionando a terceira palavra, a soma acima fica: 10 111011101 11011 0000111100001111 1100101011001010 • Os complementos de 1 são obtidos convertendo todos os 0’s para 1’s, e todos os 1’s para 0’s. 3: Camada de Transporte
Exemplo de cálculo do Checksum (2) Assim o complemento de 1’s da soma 1100101011001010 é 0011010100110101 • Este valor se torna o checksum • No receptor, todas as palavras de 16 bits são somadas, incluindo o checksum. • Se não foram introduzidos erros no pacote, a soma no receptor certamente deverá resultar em 1111111111111111. • Se um dos bits for zero, então algum erro foi introduzido no pacote. Pergunta para casa: Por que o UDP usa o checksum, se a maioria dos protocolos data-link(inferiores), incluindo o popular Ethernet, também fornece verificação de erro? 3: Camada de Transporte
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) Princípios de Transferência confiável de dados (rdt) 3: Camada de Transporte
rdt_send():chamada de cima, (p.ex.,pela apl.). Dados recebidos p/ entregar à camada sup. do receptor deliver_data():chamada por rdt p/ entregar dados p/ camada superior udt_send():chamada por rdt, p/ transferir pacote pelo canal ñ confiável ao receptor rdt_rcv():chamada quando pacote chega chega no lado receptor do canal Transferência confiável de dados (rdt): como começar send side receive side 3: Camada de Transporte
Iremos: desenvolver incrementalmente os lados remetente, receptor do protocolo RDT considerar apenas fluxo unidirecional de dados mas info de controle flui em ambos os sentidos! Usar máquinas de estados finitos (FSM) p/ especificar remetente, receptor event state 1 state 2 actions Transferência confiável de dados (rdt): como começar event causing state transition actions taken on state transition estado: neste “estado” o próximo estado é determinado unicamente pelo próximo evento 3: Camada de Transporte
canal subjacente perfeitamente confiável não tem erros de bits não tem perda de pacotes FSMs separadas para remetente, receptor: remetente envia dados pelo canal subjacente receptor recebe dados do canal subjacente Rdt1.0: transferência confiável usando um canal confiável 3: Camada de Transporte
Mensagem de Controle: • Permitem o receptor informar ao emissor o que foi recebido corretamente e o que foi recebido com erro, exigindo repetição. • Em redes de computadores, protocolo RDT baseados em retransmissão são chamados de Protocolos ARQ (Automatic Repeat reQuest). 3: Camada de Transporte
canal subjacente pode inverter bits no pacote lembre-se: checksum UDP pode detectar erros de bits a questão: como recuperar dos erros? reconhecimentos (ACKs): receptor avisa explicitamente ao remetente que pacote chegou bem reconhecimentos negativos (NAKs): receptor avisa explicitamente ao remetente que pacote tinha erros remetente retransmite pacote ao receber um NAK cenários humanos usando ACKs, NAKs? novos mecanismos em rdt2.0 (em relação ao rdt1.0): deteção de erros realimentação pelo receptor: msgs de controle (ACK,NAK) receptor->remetente Rdt2.0: canal com erros de bits 3: Camada de Transporte
Novas capacidades em RDT 2.0 3 (três) capacidades adicionais são exigidas em protocolos ARQ para lidar com a presença de erros de bits: • Detecção de erros: mecanismo para permitir que o receptor identifique quando os erros de bits ocorreram. • Realimentação (feedback) pelo receptor: mensagens de controle (ACK, NAK) trocadas entre receptor → remetente. • Retransmissão: para corrigir os erros detectados. Estes novos mecanismos estão presentes em RDT 2.0 (além do RDT 1.0) 3: Camada de Transporte
rdt2.0: especificação da FSM FSM do remetente FSM do receptor 3: Camada de Transporte
rdt2.0: especificação da FSM - Emissor Possui 2 estados: Em um estado aguarda dados da camada superior. Em outro estado, aguarda ACK ou NAK do receptor. Aguarda dados da aplicação Aguarda ACK ou NAK do receptor Recebe um NAK , reenvia o último pacote atual, e retorna a aguardar um ACK ou NAK.Não pode aceitar dados da da camada superior (stop-and-wait). Se receber um ACK confirmando que um dado atual foi recebido, retorna ao estado de aguardar um pacote da camada superior 3: Camada de Transporte
Rdt 2.0 – Especificações da FSM - Receptor Possui 1 estado: ao receber um pacote, responde com ACK ou NAK, dependendo se o pacote está ou não corrompido. Pacote recebido apresenta erro. Emite um NAK, e retorna ao estado de aguardar. Pacote recebido está íntegro. Emite um ACK, confirmando e retorna ao estado de aguardar. 3: Camada de Transporte
rdt2.0: em ação (sem erros) FSM do remetente FSM do receptor 3: Camada de Transporte
rdt2.0: em ação (cenário de erro) FSM do remetente FSM do receptor 3: Camada de Transporte
O que acontece se ACK/NAK com erro? Remetente não sabe o que passou no receptor! não se pode apenas retransmitir: possibilidade de pacotes duplicados O que fazer? remetente usa ACKs/NAKs p/ ACK/NAK do receptor? E se perder ACK/NAK do remetente? retransmitir, mas pode causar retransmissão de pacote recebido certo! Lidando c/ duplicação: remetente inclui número de seqüência p/ cada pacote remetente retransmite pacote atual se ACK/NAK recebido com erro receptor descarta (não entrega) pacote duplicado para e espera rdt2.0 tem uma falha fatal! Remetente envia um pacote, e então aguarda resposta do receptor 3: Camada de Transporte
rdt2.1: remetente, trata ACK/NAKs c/ erro Insere um nº de seqüência no pacote Deve verificar se ACK/NAK recebido tinha erro 3: Camada de Transporte
rdt2.1: receptor, trata ACK/NAKs com erro Deve checar se pacote recebido é duplicado. Estado indica se nº de seqüência esperado é 0 ou 1. 3: Camada de Transporte
Remetente: no. de seq no pacote bastam dois nos. de seq. (0,1). Por quê? deve checar se ACK/NAK recebido tinha erro duplicou o no. de estados estado deve “lembrar” se pacote “corrente” tem no. de seq. 0 ou 1 Receptor: deve checar se pacote recebido é duplicado estado indica se no. de seq. esperado é 0 ou 1 note: receptor não tem como saber se último ACK/NAK foi recebido bem pelo remetente rdt2.1: discussão 3: Camada de Transporte
mesma funcionalidade que rdt2.1, só com ACKs ao invés de NAK, receptor envia ACK p/ último pacote recebido bem receptor deve incluir explicitamente no. de seq do pacote reconhecido ACK duplicado no remetente resulta na mesma ação que o NAK: retransmite pacote atual rdt2.2: um protocolo sem NAKs FSM do remetente ! 3: Camada de Transporte
Nova suposição: canal subjacente também pode perder pacotes (dados ou ACKs) checksum, no. de seq., ACKs, retransmissões podem ajudar, mas não serão suficientes P: como lidar com perdas? remetente espera até ter certeza que se perdeu pacote ou ACK, e então retransmite 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): retransmissão será duplicada, mas uso de no. de seq. já cuida disto receptor deve especificar no. de seq do pacote sendo reconhecido requer temporizador rdt3.0: canais com erros e perdas 3: Camada de Transporte
rdt3.0: remetente 3: Camada de Transporte
rdt3.0 em ação 3: Camada de Transporte
rdt3.0 em ação 3: Camada de Transporte
rdt3.0 funciona, porém seu desempenho é muito ruim exemplo: enlace de 1 Gbps, retardo fim a fim de 15 ms, pacote de 1KB: fração do tempo remetente ocupado = = 0,00015 Utilização = U = 8kb/pacote T = 8 microseg = 8 microseg transmitir 10**9 b/seg 30.016 mseg Desempenho de rdt3.0 • pac. de 1KB a cada 30 mseg -> vazão de 33kB/seg num enlace de 1 Gbps • protocolo limita uso dos recursos físicos! 3: Camada de Transporte
Dutagem (pipelining): remetente admite múltiplos pacotes “em trânsito”, ainda não reconhecidos faixa de números de seqüência deve ser aumentada buffers no remetente e/ou no receptor Duas formas genéricas de protocolos dutados: volta-N, retransmissão seletiva Protocolos “dutados” (pipelined) 3: Camada de Transporte
Remetente: no. de seq. de k-bits no cabeçalho do pacote admite “janela” de até N pacotes consecutivos não reconhecidos Volta-N • ACK(n): reconhece todos pacotes, até e inclusive no. de seq n - “ACK cumulativo” • pode receber ACKs duplicados (veja receptor) • temporizador para cada pacote em trânsito • timeout(n): retransmite pacote n e todos os pacotes com no. de seq maiores na janela 3: Camada de Transporte
Volta-N: FSM estendida do remetente Camada superior: verifica se a janela está cheia. Se não está, forma o pacote e envia. Se está cheia, recusa. Recibo de um pacote. ACK(n): confirma que todos os pacotes, até – e inclusive – o nº de seqüência n foram recebidos no receptor:”ACK acumulativo” pode receber ACK’s duplicados. Existe um temporizador para cada pacote em trânsito. Timeout(n): retransmite pacote n e todos os pacotes com nº de seqüências maiores na janela 3: Camada de Transporte
receptor simples: usa apenas ACK: sempre envia ACK para pacote recebido bem com o maior no. de seq. em-ordem pode gerar ACKs duplicados só precisa se lembrar do expectedseqnum pacote fora de ordem: descarta (não armazena) -> receptor não usa buffers! manda ACK de pacote com maior no. de seq em-ordem Volta-N: FSM estendida do receptor 3: Camada de Transporte
Volta-Nem ação Janela = 4. Envia de 0 a 3 e o 2 se perde Pacote 2 se perdeu. Descarta o 3 e pede o 2 (confirma o 1). Descarta o 4 e o 5, e continua pedindo o 2. Timeout do ACK de 2. Retransmite o 2. 3: Camada de Transporte
receptor reconhece individualmente todos os pacotes recebidos corretamente 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 temporizador de remetente para cada pacote sem ACK janela do remetente N nos. de seq consecutivos outra vez limita nos. de seq de pacotes enviados, mas ainda não reconhecidos Retransmissão seletiva 3: Camada de Transporte
Retransmissão seletiva: janelas de remetente, receptor 3: Camada de Transporte
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 receptor remetente Retransmissão seletiva pacote n em [rcvbase, rcvbase+N-1] • envia ACK(n) • fora de ordem: buffer • 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 3: Camada de Transporte
Retransmissão seletiva em ação Quando um pacote com um nº de seqüência de rcv_base=2 é recebido, então ele e os pacotes rcv_base+1 e rcv_base+2 podem ser entregues à camada superior. 3: Camada de Transporte
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? Retransmissão seletiva: dilema 3: Camada de Transporte