UNIVERSIDADE ESTADUAL DE MARINGÁ Centro de Tecnologia Departamento de Informática Redes de Computadores A CAMADA DE TRANSPORTE Prof.: Mauro Henrique Mulati
A CAMADA DE TRANSPORTE Roteiro Introdução O serviço de transporte Elementos de protocolos de transporte 2
A CAMADA DE TRANSPORTE Introdução Núcleo de toda a hierarquia de protocolos Sua função é promover uma transferência de dados: Confiável e econômica Entre a máquina de origem e a máquina de destino Independente das redes físicas em uso no momento 3
O SERVIÇO DE TRANSPORTE O serviço de transporte Serviços oferecidos às camadas superiores Primitivas de serviço de transporte 4
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores Principal objetivo: oferecer um serviço: Confiável; Eficiente; Econômico; Estável A seus usuários Processos presentes na camada de aplicação Para isso, utiliza vários serviços oferecidos pela camada de rede Hardware/software que executa o trabalho é chamado de entidade de transparte Núcleo do SO Em outro processo do usuário Um um pacote de biblioteca vinculado a aplicações de rede; ou Na placa de interface de rede 5
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores As camadas de rede, transporte e aplicação. 6
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores Dois tipos de serviço (assim como existem dois tipos de serviço de rede) Serviço de transporte orientado a conexões Semelhante ao serviço de rede orientado a conexões Conexões Estabelecimento Transferência de dados Encerramento Endereçamento Controle de fluxo Serviço de transporte sem conexões 7
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores Se são tão semelhantes, por que há duas camadas? O código de transporte funciona inteiramente na máquinas dos usuários Camada de rede funciona principalmente nos roteadores Operação é de responsabilidade da concessionária de comunicação Rede geograficamente distribuída O que acontererá se a camada de rede oferecer um serviço inadequado? Se perder pacotes com frequencia? Roteadores apresentarem falhas ocasionais 8
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores Usuários não têm nenhum controle real sobre a camada de rede, não podem resolver os problemas de um serviço ineficaz Usando roteadores melhores Aumentando o controle de erros na camada de enlace de dados 9
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores 10
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores A única possibilidade é colocar sobre a camada de rede uma outra camada que melhore a qualidade do serviço Se uma entidade de transporte for informada no meio de uma longa transmissão que sua conexão de rede foi encerrada de forma abrupta Pode gerar uma nova conexão de para para a entidade de transporte remota Poderá enviar uma consulta à entidade remota para saber quais dados chegaram e quais não, e depois retomar a transmissão a partir da interrupção A existência de uma camada de transporte torna o serviço de transporte mais confiável que o serviço de rede subjacente Pacotes perdidos e dados corrompidos pode ser percebida e compensada pela camada de transporte 11
O SERVIÇO DE TRANSPORTE Serviços oferecidos às camadas superiores Primitivas do serviço de transporte podem ser implementadas independentemente das do serviço de transporte Os programas aplicativos podem ser desenvolvidos utilizandose um conjunto de primitivas padrão Podem funcionar em uma ampla variedade de redes sem a preocupação de se lidar com interfaces de sub-redes diferentes Tornar as camadas superiores do projeto imunes à tecnologia e às imperfeições da sub-rede Camadas de 1 a 4: Provedor de serviçoes de transportes Camadas Superiores: Usuário de serviços de transporte Camada de transporte: principal fronteira entre: Provedor e Serviço de transmissão de dados confiável 12
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Camada de transportes deve oferecer operações a programas aplicativos Uma interface de serviço de transporte Cada serviço de transporte tem sua própria interface Serviço de transporte é semelhante ao serviço de rede com a diferença: Serviços de rede: representa o modelo oferecido pelas redes reais, com todos os atributos. Redes reais podem perder pacotes; serviço de rede em geral não é confiável Serviço de transporte (orientado a conexões) é confiável As redes não são infalíveis, mas essa é exatamente a função da camada de transporte oferecer um serviço confiável sobre uma rede não-confiável 13
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte O transporte orientado a conexões consiste em ocultar as imperfeições do serviço de rede De modo que os processos do usuário possam simplesmente supor a existência de um fluxo de bits livre de erros A camada de transporte também pode oferecer um serviço não-confiável (de datagramas) Computação cliente/servidor Multimídia de fluxo 14
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte TPDU: Transport Protocol Data Unit: Unidade de dados do protocolo de transporte Mensagens enviadas de uma entidade de transporte a outra entidade de transporte A aninhamento de TPDUs, pacotes e quadros. 15
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Serviço de rede: usado pelas entidades de transporte O destinatário do serviço de transporte: programas e programadores vêem as primitivas de transporte Serviço de transporte deve ser adequado e fácil de usar As primitivas para um serviço de transporte simples. Estabelecer, usar e encerrar uma conexão. 16
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Exemplo: Servidor e clientes remotos Servidor executa: LISTEN Bloquear até que algum cliente apareça Cliente executa: CONNECT TPDU CONNECTION REQUEST é enviada ao servidor TPDU CONNECTION REQUEST chega ao servidor Entidade de transporte verifica se o servidor está bloqueado (LISTEN) TPDU desbloqueia o servidor Servidor envia uma TPDU CONNECTION ACCEPTED De volta para o cliente Quando TPDU chega a seu destino, o cliente é desbloqueado e a conexão é estabelecida 17
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte A partir desse momento Possível intercambiar dados utilizando-se as primitivas SEND RECEIVE Qualquer uma das partes pode executar RECEIVE (bloqueio) Para aguardar que a outra execute uma primitiva SEND Quando a TPDU chega a seu destino, o receptor é desbloqueado Em seguida ele pode processar a TPDU e enviar uma resposta Sistema funciona desde que as partes controlem de quem é a vez de enviar dados 18
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Na camada de transporte, até mesmo uma troca de dados simples é mais complexa que na camada de rede Cada pacote de dados deve ser confirmado TPDUs de controle também são confirmados Entidades de transportes têm q lidar: Timers Restransmissão Mecanismo não é percebido pelos usuários de transporte Uma conexão é uma canal de bits confiável Ocultar complexidade 19
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Encerramento da conexão Liberar espaço de tabela dentro das duas entidades de transporte Pode ser: Simétrica Assimétrica Assimétrica Qualquer um dos usuários de transporte pode emitir uma primitiva DISCONNECT TPDU DISCONNECT é enviada Quando chega à entidade de transporte remota, a conexão é encerrada 20
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Simétrica Cada direção é encerrada separadamente e de forma independente uma da outra Uma das partes executa DISCONNECT Não há mais dados para enviar Ainda é possível receber Quando os dois lados executarem DISCONNECT, a conexão é encerrada 21
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Diagrama de estados Cada transição é acionada por algum evento Primitiva Pacote que chega Por simplicidade Cada TPDU é confirmada separadamente Modelo de desconexão simétrica está sendo usado Com o cliente dando início ao procedimento 22
O SERVIÇO DE TRANSPORTE Primitivas de serviço de transporte Um diagrama de estado para um esquema simples de gerenciamento de conexão. Transições etiquetadas em itálico são causadas pela chegada de pacotes. As linhas sólidas mostram a sequência de estados do cliente. As setas pontilhadas mostram a sequência de estados do servidor. 23
Elementos de protocolos de transporte Endereçamento Estabelecimento de conexão Encerramento da conexão Controle de fluxo e buffering * Multiplexação * Recuperação de falhas * 24
Elementos do protocolo de transporte Serviço de transporte implementado por um protocolo de transporte, usado entre duas entidades de transporte Lembram protocolos de estado de enlace Controle de erros Definição de sequências Controle de fluxo Diferenças: peculiaridades dos ambientes 25
Elementos do protocolo de transporte Enlace Dois roteadores se comunicam diretamente através do canal físico Não precisa especificar roteadores (linha de saída) Conexão: o outro lado está sempre presente Não há armazenamento: ou chega ou se perde Controle de buffers e fluxo: buffers de tamanho fixo Transporte sub-rede inteira Necessário endereço explícito de destino Estabelecimento da conexão Armazenamento da sub-rede Controle de buffers e de fluxo: buffers de tamanho variável 26
Elementos de protocolos de transporte (a) Ambiente da camada de enlace (b) Ambiente da camada de transporte 27
Endereçamento Processo quer estabelecer conexão com processo remoto Com qual processo se conectar? Definir os endereços de transporte que processos podem ouvir para receber solicitações de conexão Essas extremidades são chamadas de portas TSAP: Transport Service Access Point Ponto de acesso de serviço de transporte Na camada de rede (como o IP): NSAP Os processos de aplicações, cliente e servidores Podem se associar a um TSAP para estabelecer uma conexão com um TSAP remoto Funciona através dos NSAP 28
Endereçamento TSAPs, NSAPs e conexões de transporte 29
Endereçamento Possível cenário para conexão de transporte: Processo servidor de hora do dia no host 2 se associa ao TSAP 1522 (aguardar) Primitiva LISTEN Processo aplicação no host 1 deseja descobrir a hora do dia Primitiva CONNECT: TSAP 1208 origem e TSAP 1522 destino Estabelecimento de uma conexão de transporte entre Processo de aplicação do host 1 e o servidor 1 do host 2 Proc. Aplicação envia solicitação para saber a hora Proc. Servidor responde Conexão é encerrada (liberada) 30
Endereçamento Como o processo de usuário do host 1 sabe que o servidor da hora do dia está associado ao TSAP 1522? Estável Protocolo de conexão inicial Servidor de processos (proxy para servidores menos usados) Atende uma série de portas ao mesmo tempo CONNECT e porta: se nenhum servidor estiver aguardando, estabelece uma conexão com o servidor de processos Servidor de processos gera conexão para o servidor solicitado Servidor de nomes, servidor de diretórios Estabelece conexão com servidor de nomes (TSAP conhecido) Serviço: hora do dia; servidor retorno o TSAP Encerra conexão com o servidor, e estabele com o servidor de hora Quando serviço é criado, registrar seu nome de serviço 31
Endereçamento Como um processo do usuário no host 1 estabelece uma conexão com um servidor hora do dia no host 2 32
Estabelecimento de conexões Pode parecer que seja apenas: CONNECTION REQUEST CONNECTION ACCEPTED Porém: a rede pode perder, armazenar e duplicar pacotes Ex.: Sub-rede tão congestionada que as confirmações quase nunca chegam a tempo: Cada pacote sofre um timeout e é retransmitido duas ou três vezes Alguns pacotes podem ficar detidos na sub-rede e demorar muito para chegar Banco e duplicatas atrasadas Ponto crucial: duplicatas atrasadas 33
Estabelecimento de conexões Destruir pacotes desatualizados Restringir o projeto da sub-rede Evitar loops Limitar o retardo devido ao congestionamento Usar um contador de hops em cada pacote Utilizar um timbre de hora em cada pacote Teria de haver sincronização Garantir que o pacote e suas confirmações foram destruídos Valor T: algum múltiplo pequeno da duração máxima do pacote Múltiplo depende de um protocolo Tem o efeito de tornar T mais longo Se esperarmos um tempo T após um pacote ser enviado, poderemos ter certeza de que todos os seus traços desapareceram 34
Estabelecimento de conexões Limitando o tempo de vida dos pacotes, é possível imaginar uma forma infalível de estabelecer conexões com segurança P/ contornar perda de memória, host tem relógio (os relógios dos hosts não precisam estar sincronizados) Contador binário incrementado em intervalos regulares O n.º de bits no contador deve ser maior ou igual ao n.º de bits dos n.ºs de sequência O relógio deve continuar funcionando mesmo que o host saia do ar Idéia básica: TPDUs com n.ºs idênticos jamais fiquem pendentes ao mesmo tempo Quando conexão é estabelecida K bits de baixa ordem do relógio são usados como n.º de sequencia inicial (também k bits) Espaço de sequência deve ser tão extenso, que quando os n.ºs de sequencia comecarem a se repetir, as TPDUs antigas com o mesmo n.º de sequência já deverão ter sido destruídas há muito tempo 35
Estabelecimento de conexões Relacionamento linear entre o tempo e o n.º de sequência (a) TPDUs não podem entrar na região proibida (b) O problema da resincronização 36
Estabelecimento de conexões Entidades de transporte chegam a um acordo sobre o n.º de sequência inicial Qualquer protocolo de janela deslizante poderá ser usado para controle de fluxo dos dados Problema quando host sofre pane e retorna: Sua entidade de transporte não sabe onde ele estava no espaço de sequência Uma solução poderia ser ficar T s inativo, mas T pode ser grande Para evitar esperar após falha, nova restrição sobre n.ºs de sequencia Para entender a restrição, vamos analisar: 37
Estabelecimento de conexões Suponhamos T=60s (duração máx. de um pacote) Relógio pulse a intervalos de 1s Linha mais grossa mostra que: N.º de seq. inicial no momento x será x Suponhamos que: Momento t=30 s TPDU de dados com n.º seq. = 80 sendo enviado através da conexão 5 previamente estabelecida Vamos chamá-la de TPDU X Logo após ter enviado a TPDU X o host falha, mas volta a funcionar imediatamente 38
Estabelecimento de conexões Momento t=60 s Começa a reabrir conexões de 0 a 4 Momento t=70 s Reabre a conexão 5 utilizando o n.º de seq. Inicial 70, conf. solicitado Durante próxs. 15 s Envia as TPDUs 70 a 80 Quando t=85 s Nova TPDU com n.º de seq. 80 e de conexão 5 entra na sub-rede TPDU X ainda existe, e se ela chegar ao receptor antes da nova TPDU 80, a TPDU X será aceita e a TPDU 80 correta será rejeitada como uma duplicata 39
Estabelecimento de conexões Para evitar isso, tem-se que impedir que n.º de seq. sejam utilizados durante o período de tempo T Região proibida Antes de enviar uma TPDU em qualquer conexão, a entidade de transporte deve fazer a leitura do relógio e verificar se ele não está na região proibida 40
Estabelecimento de conexões O protocolo pode se complicar de duas maneiras Host transmitir dados demais a uma velocidade muito alta em uma conexão recém-estabelecida Verdadeira curva: n.º sequencia versus tempo Pode crescer mais rápido que N.º sequencia inicial versus tempo Taxa máx. de transferência de dados em qualquer conexão é de uma TPDU para cada pulso do relógio Ent. de transporte deve esperar até que o relógio pulse para estabelecer uma nova conexão depois de uma retomada de funcionamento do host (evitar mesmo n.º usado 2 vezes) Por isso relógio deve pulsar a intervalos bem pequenos (alguns ms ou menos 41
Estabelecimento de conexões Antes de enviar uma TPDU, a entidade de transporte deve ler o relógio e ver se ele não está na região proibida Retardar a TPDU por T segundos ou ressincronizar os n.ºs de seq. 42
Estabelecimento de conexões Problema para que ambos os lados concordem em relação ao n.º de sequencia inicial Host 1: TPDU CONNETION REQUEST N.º de sequencia inicial N.º de porta de destino Propostos ao host 2 Host 2: TPDU CONNECTION ACCEPTED Se a TPDU CONNECTION REQUEST se perder, mas uma duplicata atrasadada de CONNECTION REQUEST chegar de repente ao host 2, a conexão será estabelecida de forma incorreta 43
Estabelecimento de conexões Handshake de 3 vias Host 1 escolhe um n.º de sequência inicial x e envia uma TPDU CONNECTION REQUEST para o host 2 O host 2 responde com uma TPDU ACK que confirma x e anuncia seu próprio n.º de sequência inicial, y Host 1 confirma o n.º de sequência inicial escolhido pelo host 2 na primeira TPDU de dados que enviar 44
Estabelecimento de conexões Três cenários para o estabelecimento de conexão usando um handshake de trêsvias. CR denota CONNECTION REQUEST. (a) Operação normal (b) CONNECTION REQUEST antiga aparecendo de nenhum lugar (c) CONNECTION REQUEST duplicado e ACK duplicado 45
Estabelecimento de conexões Duplicata atrasada da primitiva CONNECTION REQUEST Chega ao host 2 sem conhecimento do host 1 Host 2 envia ACK ao host 1 Host 1 rejeita a tentativa Duplicata atrasada da primitiva ACK Y como n.º sequência inicial (do host 2 p/ host 1) Não existe qualquer TPDU que contenha o número de sequência y ou que ainda existam confirmações para y Quando a segunda TPDU atrasada chega ao host 2 O fato de z ter sido confirmado no lugar de y faz com que o host 2 também perceba que se trata de uma duplicata antiga Não existe combinação de TPDUs antigas que configuram uma conexão por acidente 46
Estabelecimento de conexões Existe alguma combinação de n.ºs de sequência antigas que faça com que uma conexão seja configurada por acidente? 47
Encerramento de conexões Tipos Assimétrico: quando um dos lados desconecta, a conexão é interrompida (analogia com sistema telefônico) Simétrico: trata a conexão como duas conexões unidirecionais isoladas e exige que cada uma seja encerrada separadamente Host continua a receber dados depois de enviar DISCONNECT Encerramento assimétrico: Desconexão abrupta com perda de dados. Encerramento assimétrico Não há entrega de dados após uma solicitação de desconexão 48
Encerramento de conexões Problema dos 2 exércitos O problema dos dois exércitos. 49
Encerramento de conexões Problema dos 2 exércitos Branco -> Vale Azul -> Duas colinas Branco maior que 1 azul 2 azuis juntos maiores que branco Se um dos azuis atacar sozinho, será derrotado pelo branco Se atacarem simultaneamente, os dois exércitos azuis serão vitoriosos Os exércitos azuis devem sincronizar seus ataques Só podem usar mensageiros que caminham pelo vale, onde podem ser capturados e a mensagem perdida Têm de usar um canal de comunicação não-confiável Existe algum protocolo que permita aos exércitos azuis vencerem? 50
Encerramento de conexões Problema dos 2 exércitos Azul 1 p/ azul 2: Proponho que nosso ataque seja ao amanhecer do dia 18 de setembro. Que tal? Suponhamos que a mensagem chegue ao seu destino, e azul 2 concorde, e que a mensagem chegue em segurança ao exército azul 1 O ataque acontecerá? 51
Encerramento de conexões Problema dos 2 exércitos Provavelmente não, pois o azul 2 não tem como saber se azul 1 recebeu sua resposta Caso não tenha recebido a resposta ele não vai atacar, portanto seria inútil o azul 2 começar o ataque sozinho 52
Encerramento de conexões Problema dos 2 exércitos Vamos melhorar o protocolo, e torná-lo um handshake de 3 vias O responsável pela proposta original deve confirmar a resposta fornecida Suponha que nenhuma mensagem se perca O exército azul 2 receberá a confirmação No entanto, o azul 1 não sabe se sua confirmação chegou ao azul 2, e assim o 2 não atacaria Nada verdadem pode-se provar que não existe um protocolo que funcione Substituir atacar por desconectar Na prática é mais fácil correr o risco 53
Encerramento de conexões Quatro cenários para liberação de conexão: (a) Caso normal de um handshake de três vias (b) Perda do ACK final 54
Encerramento de conexões (c) Perda da resposta (d) Perda da resposta e subsequente perda de DRs 55
Encerramento de conexões Situação (a): Um dos usuários envia DISCONNECTION REQUEST (DR) Quando chega, receptor também retorna uma DR Dispara um timer para o caso de a DR se perder DR chega, o transmissor envia TPDU ACK e encerra a conexão Quando o TPDU ACK chegar, o receptor também encerra a conexão Encerrar conexão significa: Entidade de transporte remove as informações sobre essa conexão de sua tabela de conexões atualmente abertas e envia algum tipo de sinal ao proprietário da conexão (o usuário de transporte) 56
Encerramento de conexões Situação (b): Se última ACK for perdida Quando timer expirar, a conexão será encerrada de qualquer forma Situação (c): Segunda DR se perde O usuário que der início à desconexão não receberá a resposta esperada, sofrerá um timeout e terá de começar tudo outra vez Situação (d): Todas as tentativas de retransmitir segunda DR também falham Após N tentativas o transmissor desiste e encerra a conexão O receptor sofre um timeout e também encerra 57
Encerramento de conexões Pode haver mais alguma possibilidade de falha? 58
Encerramento de conexões Apesar de em geral ser suficiente Na teoria pode falhar se a DR inicial e todas as N retransmissões se perderem O transmissor desistirá e encerrará a conexão O outro lado permacerá ativo Conexão semi-aberta Regra: se nenhuma TPDU chegar durante um determinado período de tempo, a conexão será encerrada automaticamente Timer interrompido e reiniciado a cada TPDU recebida Se timer expirar, TPDU fictícia será transmitida para evitar que o outro lado se desconecte As fictícias também podem se perder! 59