REDES DE COMPUTADORES 2.4 A CAMADA DE TRANSPORTE ! O nível de transporte é o coração da pilha de protocolos. Sua tarefa é prover transporte confiável e eficiente de dados de uma máquina origem para uma máquina destino, independente da (ou das) rede física existente. ! O hardware e software no nível de transporte que desempenha essa função é chamado de entidade de transporte, podendo se localizar no núcleo do sistema operacional, em um processo separado ou mesmo na placa de interface de rede. Máquina 1 Nível de Superior Entidade de Transporte Nível de Rede Máquina 2 Endereços de transporte TPDU Endereço de rede Nível de Superior Entidade de Transporte Nível de Rede Figura 1. Entidade de transporte © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 1 REDES DE COMPUTADORES ! O nível de transporte, de modo semelhante ao nível de rede, oferece o serviço com conexão e sem conexão. Por esse fato, levanta-se a questão: Por que existir o nível de transporte? ! A resposta é sutil, mas crucial. O nível de rede é parte da subrede de comunicação e é implementado (pelo menos em MANs e WANs) pelas operadoras de telecomunicação. O que ocorre se o nível de rede oferece serviço orientado à conexão, mas não confiável? Se ele perde pacotes com freqüência? Se os roteadores envolvidos entram em pane com alguma freqüência? ! Problemas ocorrem na subrede de comunicação, sobre a qual os usuários finais não têm controle total. A solução do problema é colocar mais um nível sobre o nível de rede (o nível de transporte!) para melhorar a qualidade do serviço (Quality of Service – QoS). ! QoS de transporte pode permitir ao usuário especificar valores desejáveis, aceitáveis e mínimos para vários parâmetros na hora da abertura de uma conexão (quando se usa o serviço com conexão). © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 2 REDES DE COMPUTADORES ! Os principais parâmetros de QoS são descritos na tabela a seguir. QoS Comentário Atraso no estabelecimento Quanto menor, melhor de conexão Probabilidade de falha no Quanto menor, melhor estabelecimento de conexão Taxa de transferência Quantidade de bytes transportados por segundo (nos dois sentidos) Atraso de trânsito Quanto tempo leva para chegar no nível de transporte da máquina destino (nos dois sentidos) Taxa de erro residual Relação da quantidade de dados perdidos pela quantidade de dados transportados. Em tese deveria ser zero, mas na prática pode ter algum valor pequeno Proteção Proteção contra interceptação e/ou adulteração dos dados transportados Flexibilidade (Elasticidade) Probabilidade do próprio nível de transporte encerrar uma conexão devido à problemas internos e/ou de congestionamento © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 3 REDES DE COMPUTADORES 2.4.1 Primitivas de Transporte ! Fundamentalmente, o nível de transporte (nas várias arquiteturas de rede) oferece as primitivas mostradas na tabela a seguir. Primitiva LISTEN TPDU Enviado (nenhum) CONNECT abertura de conexão dados (nenhum) SEND RECEIVE DISCONNECT fechamento de conexão Significado Bloqueia até algum usuário tentar uma conexão Usuário tentando estabelecer conexão envio de informação bloqueia até a chegada de um TPDU de dados Usuário encerrando conexão © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 4 REDES DE COMPUTADORES ! Para se ter uma idéia de funcionamento, considere uma aplicação de rede com um programa servidor e vários programas clientes (p.ex., o IRC). As primitivas usadas por cada elemento envolvido na comunicação seriam: ♦ De início, o servidor executa um LISTEN (chamando uma rotina de biblioteca que faz uma chamada ao sistema operacional que bloqueia o programa servidor) para ficar aguardando solicitações de abertura de conexão feitas por clientes; ♦ Um cliente, desejando "falar" com o servidor, executa um CONNECT, sendo bloqueado até obter uma resposta do servidor (ou até esgotar um temporizador); ♦ O servidor recebe o pedido de abertura de conexão, responde confirmando, e libera o fluxo de comunicação com o cliente; ♦ Cliente e servidor trocam dados entre si com chamadas a SEND e RECEIVE; ♦ O cliente encerra a conexão com DISCONNECT; ♦ O servidor aceita a desconexão e continua a aguardar pedidos de abertura de conexão. © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 5 REDES DE COMPUTADORES 2.4.2 Elementos de Protocolos de Transporte ! ! A camada de transporte guarda algumas semelhanças com a camada de enlace de dados: ♦ Controle de erro; ♦ Controle de sequenciamento; ♦ Controle de fluxo. Apresenta, porém, algumas diferenças importantes: ♦ Endereçamento de aplicação (processos) no receptor; emissor e ♦ Abertura/ Encerramento de conexão mais elaborado com tratamento de dados "em trânsito" na subrede; ♦ Armazenamento receptor; ♦ Grande quantidade de conexões simultâneas, necessitando de maior controle de fluxo. temporário de segmentos no emissor © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 6 e REDES DE COMPUTADORES Endereçamento de aplicação ao nível de transporte ! Como um programa cliente que deseja abrir uma conexão com um programa servidor identifica de forma única o servidor? Como o próprio cliente se identifica para o servidor? ! Normalmente são usados endereços de transporte, a partir dos quais os servidores ficam aguardando ("escutando") pedidos de abertura de conexão. São os chamados Pontos de Acesso do Serviço de Transport (Transporte Service Access Point – TSAP), que são análogos aos Pontos de Acesso do Serviço de Rede (Network Service Access Point – NSAP). ! Em muitas arquiteturas de rede, endereços de transporte são números inteiros (padronizados em uma dada arquitetura) que identificam programas servidores e programas clientes em máquinas da rede. ! A figura a transporte. seguir ilustra a utilização desses endereços de © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 7 REDES DE COMPUTADORES Máquina 1 Aplicação Cliente Máquina 2 Nível de Aplicação TSAP 6 Conexão de Nível de transporte começa Transporte aqui NSAP Conexão de rede começa aqui Nível de Rede Aplicação Servidor TSAP 122 NSAP Nível de Enlace Nível Físico Figura 2. Endereçamento de programas (TSAPs) e máquinas (NSAPs) © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 8 REDES DE COMPUTADORES Estabelecimento de Conexão ! Teoricamente simples: ♦ Origem envia solicitação (TPDU) de abertura de conexão (CONNECT REQUEST - CR) ♦ Destino recebe CR e envia resposta favorável (ACCEPT ACK) ou desfavorável (REJECT) ♦ Origem inicia transmissão se recebe ACCEPT ACK ! O problema é que solicitações ou respostas podem se perder (ou serem duplicadas) no caminho: ♦ Pode haver duplicação de solicitação quando uma confirmação demora muito a chegar ♦ A subrede pode reter um pacote por um tempo relativamente longo, gerando instabilidades ! Como resolver o problema? ♦ Usando um mecanismo Conhecido por Threeway Handshake (ou Aperto de mão em três vias) © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 9 REDES DE COMPUTADORES Receptor Emissor tempo CR(seq=X) ACK(seq=Y, ack=X) DATA(seq=X, ack=Y) Figura 3. Threeway handshake ! Theeway Handshake em situação normal ♦ Emissor envia CONNECT com número de sequência X ♦ Receptor envia ACK com sequência Y, e reconhecendo sequência X ♦ Emissor recebe ACK e inicia envio de dados (DATA) com sequência X, reconhecendo sequência Y © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 10 REDES DE COMPUTADORES Emissor CR duplicado Receptor CR(seq=X) tempo ACK(seq=Y, ack=X) REJECT( ack=Y) Figura 4. Threeway Handshake com duplicação de CR ! Threeway Handshake com duplicação de CR ♦ Receptor recebe CR duplicado, ignora a segunda ocorrência porque a conexão já foi aberta e reenvia ACK ♦ Emissor recebe ACK, ignora porque a conexão já foi aberta e envia REJECT ♦ Receptor recebe REJECT e fica sabendo que a conexão também já está aberta no emissor (cai na real, descobrindo que foi enganado por um CR duplo) © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 11 REDES DE COMPUTADORES Encerramento de Conexão ! ! Não é tão simples quanto possa parecer. Pode ser: ♦ Assimétrico, quando emissor ou receptor fecha a conexão e a comunicação física é interrompida (como no sistema telefônico) ♦ Simétrico, quando a comunicação é vista como duas conexões unidirecionais e o emissor e o receptor devem ser liberados separadamente. Problema dos dois exércitos ♦ Como sincronizar os ataques da tropa A com a tropa B, para vencer a tropa C, sendo que A e B juntas vencem a tropa C, mas A e B isoladas perdem da tropa C? © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 12 REDES DE COMPUTADORES Tropa A Tropa B Tropa C Figura 5. Problema dos dois exércitos Se cada tropa esperar a confirmação do parceiro, nunca se fará nada! ♦ Com rede é bem mais fácil, usando-se técnicas de retransmissão temporizada e desconexão temporizada, como mostrado nas figuras a seguir. ! © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 13 REDES DE COMPUTADORES Emissor Envia DR +liga relógio Receptor DR tempo DR Encerra conexão Envia ACK Envia DR +liga relógio ACK Encerra conexão Figura 6. Encerramento normal de conexão © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 14 REDES DE COMPUTADORES Emissor Envia DR +liga relógio Receptor DR tempo DR Encerra conexão Envia ACK ACK Envia DR +liga relógio . . . . . -relógio toca Encerra conexão Figura 7. Encerramento de conexão com perda de ACK © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 15 REDES DE COMPUTADORES Emissor tempo Envia DR +liga relógio . . -relógio toca Envia DR +liga relógio Encerra conexão Envia ACK Receptor DR DR Envia DR +liga relógio DR DR ACK Envia DR +liga relógio Encerra conexão Figura 8. Encerramento de conexão com perda de resposta © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 16 REDES DE COMPUTADORES Emissor Receptor Envia DR +liga relógio . . . . -relógio toca Encerra conexão DR DR N-ésima vez tempo -relógio toca Envia DR +liga relógio DR Envia DR +liga relógio . . . . . . -relógio toca Encerra conexão Figura 9. Encerramento de conexão com perda de resposta e DR seguintes © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 17 REDES DE COMPUTADORES Controle de Fluxo e Armazenamento Temporário ! Controle de fluxo é facilmente resolvido com o uso de protocolos de janela deslizante (slide window), como o visto na camada de enlace. ♦ Quando um emissor não pode (ou não quer) receber mais segmentos do receptor, envia para o mesmo uma mensagem definindo tamanho 0 (zero) para a janela deslizante de recepção ♦ Posteriormente, envia mensagem de controle indicando um novo N para o reinicio da transmissão emissor " receptor ♦ Basta ter bits para window size no TPDU © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 18 REDES DE COMPUTADORES ! Armazenamento temporário é necessário porque durante a transmissão de uma mensagem dividida em vários segmentos, a camada de transporte guardar os segmentos enviados e ainda não confirmados (ACK) pelo receptor, para poder fazer eventuais retransmissões. ! É preciso haver área de armazenamento temporários para diversos segmentos de diversas conexões em andamento. ! A gerência dessa área de armazenamento pode ser feita de várias formas, sendo bastante comum a utilização de listas encadeadas com elementos de tamanho fixo ou variável e listas circulares ! Esse armazenamento temporário é necessário para o emissor e para o receptor (que deve armazenar segmentos até poder recompor a mensagem original e entrega-lá para as camadas superiores). © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 19 REDES DE COMPUTADORES (a) Lista encadeada com blocos de tamanho fixo (b) Lista encadeada com blocos de tamanho variável (c) Lista encadeada circular com blocos de tamanho variável Espaço livre Figura 10. Gerência de armazenamento temporário © UFPB / CCT / DSC / PSN, 2001 * Parte 2: Arquitetura - Camada de Transporte * Pág. 20