REDES DE COMPUTADORES Camada de Transporte Professor: M.Sc. Carlos Oberdan Rolim • 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. • Torna a complexidade dos níveis mais baixos transparente para os processos – Comunicação fim-a-fim • 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. • 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). Primitivas de Transporte • Fundamentalmente, o nível de transporte (nas várias arquiteturasde rede) oferece as primitivas mostradas na tabela a seguir. • 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. 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 emissor e receptor; – Abertura/ Encerramento de conexão mais elaborado com tratamento de dados "em trânsito" na subrede; – Armazenamento temporário de segmentos no emissor e receptor; – Grande quantidade de conexões simultâneas, necessitando de maior controle de fluxo. 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. • Esses endereços são chamados de portas • As portas são números inteiros (padronizados em uma dada arquitetura) que identificam programas servidores e programas clientes em máquinas da rede. Endereçamento de aplicação ao nível de transporte • De modo menos informal um endereço é definido como uma dupla composta por um endereço do nível de rede (endereço IP por exemplo) e uma porta 10.10.10.200:45000 Endereço local IP : Porta 10.10.10.1 : 80 Endereço remoto IP : Porta Comunicação envolve porta+endereço local e porta+endereço remoto Endereçamento de aplicação ao nível de transporte • Números de portas abaixo de 1024 são chamadas de portas “bem-conhecidas” precisam de permissão de super usuário – – – – – 21: ftp 23: telnet 25: smtp 80: http 443 : https – Outros: RFC 1700 • Acima de 1024 qualquer processo pode abrir uma porta Broadcast, multicast, unicast • Ao endereçar uma comunicação cliente tem opção de fazer broadcast, multicast, unicast Unicast Broadcast Multicast Estabelecimento de Conexão • Teoricamente simples: – Origem envia solicitação 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) Theeway Handshake Cliente Envia SYN (Seq x, ACK = 0) Servidor SYN, 100 SYN + ACK 101, 200 Envia ACK (ACK = y + 1, Seq x + 1) Envia SYN + ACK (ACK = x + 1, Seq y) ACK 101, 201 --- Conexão estabelecida --- 1.Cliente: Servidor, estou enviando a mensagem 100 (Número de sequência do cliente). Dá pra sincronizar (SYN)? 2. Servidor: Claro, sincroniza a mensagem 200 (Número de sequência do servidor) que estou enviando (SYN). Prossiga com a mensagem 101 (ACK). 3. Cliente: Ok, estou enviando a mensagem 101. Prossiga com a mensagem 201 (ACK). URI - Santo Ângelo - DECC 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? 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. Encerramento normal de conexão Encerramento de conexão com perda de ACK Encerramento de conexão com perda de resposta Encerramento de conexão com perda de resposta e DR seguintes Controle de Fluxo e Armazenamento Temporário • Controle de fluxo é facilmente resolvido com o uso de protocolos de janela deslizante (slide window), como 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 • Armazenamento temporário é necessário porque durante a transmissão de uma mensagem dividida em vários segmentos, a camada de transporte guarda 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). Gerência de armazenamento temporário A necessidade por um serviço de transporte confiável • Aplicações em qualquer sistema de computação assumem que a transferência de dados é confiável, ou seja, o sistema garante que os dados não serão: – perdidos, – duplicados, e – entregues fora de ordem • Uma internet deve prover um serviço idêntico a um sistema convencional Protocolo TCP • Principal protocolo de transporte da arquitetura TCP/IP • Existem outros como o UDP, RTP e RTCP Protocolo TCP • Provê um serviço (missão) impossível? – Usa um serviço datagrama não confiável para prover um serviço de entrega de dados confiável para as aplicações – Deve ser capaz de compensar perdas e atrasos na sub-rede de comunicação de tal forma a prover o transporte de dados fim-a-fim de forma eficiente – Deve ser capaz de executar essas tarefas sem sobrecarregar a sub-rede de comunicação e os roteadores Protocolo TCP • De todos os protocolos de transporte propostos talvez o TCP seja o protocolo que executa essas funções da melhor forma possível – Certamente existem outras propostas melhores quando outros ambientes são considerados, como redes de alta velocidade • Atualmente, a maior parte das aplicações na Internet são baseadas no TCP Formato do segmento TCP – TCP usa o termo segmento para fazer referência a uma mensagem Serviços que o TCP provê para as aplicações • Conexão – Serviço baseado em três fases: • Estabelecimento da conexão • Transferência de dados • Término da conexão Serviços que o TCP provê para as aplicações • Comunicação ponto-a-ponto – Cada conexão TCP tem dois endpoints • Confiabilidade – TCP garante que os dados serão entregues da forma que foram enviados Serviços que o TCP provê para as aplicações • Comunicação full-duplex – TCP permite que dados sejam enviados em qualquer instante e em qualquer direção – TCP pode armazenar dados de entrada e saída – Libera a aplicação para continuar processando Serviços que o TCP provê para as aplicações • Interface do serviço é uma seqüência de bytes – TCP não identifica estruturas lógicas nos dados transmitidos – Dados transmitidos são vistos como uma seqüência de bytes Serviços que o TCP provê para as aplicações • Inicialização confiável da conexão – TCP requer que as aplicações reconheçam uma nova conexão toda vez que uma for criada – Pacotes de conexões anteriores não podem aparecer como válidos • Término correto da conexão – TCP garante a entrega de todos os dados antes de fechar uma conexão a pedido de uma aplicação Serviço fim-a-afim e datagramas • Protocolos de transporte são chamados de protocolos fim-a-fim – Provêem uma conexão entre duas aplicações em computadores distintos • Conexões são virtuais – Implementadas de software já que o sub-sistema de comunicação não provê nenhuma facilidade Serviço fim-a-afim e datagramas • Mensagens TCP são encapsuladas em datagramas (pacotes) IPs • Pacotes são encapsulados em quadros • Quadros são transmitidos como uma sequência de bits Serviço fim-a-afim e datagramas Dois cenários que afetam a confiabilidade • Serviço não confiável do sub-sistema de comunicação – No sub-sistema de comunicação, mensagens de uma conexão podem ser: • Perdidas • Duplicadas • Atrasadas • Entregues fora de ordem e aparecerem em outra conexão Dois cenários que afetam a confiabilidade • Conexões devem ser identificadas de forma única • Solução: um número de 32 bits é gerado por cada entidade toda vez que uma conexão é criada Dois cenários que afetam a confiabilidade • Reinicialização de um computador após uma conexão ter sido estabelecida – Computador que não reinicializou não sabe do problema e considera a conexão válida – Computador que reinicializou não sabe da existência da conexão e deve rejeitar esses pacotes • Problema que não é simples de ser resolvido Como alcançar a confiabilidade? • Através de uma série de técnicas que tratam partes do problema • Princípio básico para cada mensagem: – – – – Transmissão Temporização ou confirmação (positiva ou negativa) Retransmissão, se for o caso Repetição do processo um número finito de vezes Como alcançar a confiabilidade? Como alcançar a confiabilidade? • Problema decorrente: – Como configurar temporizadores para comunicações em LANs e WANs? • LANs: deve-se esperar pouco • WANs: deve-se esperar mais Como alcançar a confiabilidade? • Problema relacionado com a eficiência: – Rajadas de datagramas podem causar congestionamento – Tempo para enviar, receber e confirmar uma mensagem pode variar uma ordem de magnitude em poucos ms – TCP deve adaptar-se a diferentes condições de tráfego que podem causar diferentes atrasos num pequeno intervalo de tempo Retransmissão adaptativa • Protocolos de transporte anteriores ao TCP usavam um valor fixo de espera de confirmação para efeito de retransmissão Retransmissão adaptativa • No TCP esse tempo é variável – TCP monitora o atraso em cada conexão e modifica o temporizador de retransmissão para acompanhar mudanças – Mudança é feita em função de uma análise estatística das mensagens transmitidas • Na prática, retransmissão adaptativa funciona bem Retransmissão adaptativa Controle de Fluxo • Baseado em um mecanismo de janela • No momento do estabelecimento da conexão, um buffer de recepção é alocado e seu tamanho é informado para a entidade par Controle de Fluxo • Em toda confirmação é enviado o espaço disponível nesse buffer – Esse espaço é chamado de janela • A notificação que contém o valor desse espaço é chamado de anúncio da janela (window advertisement) Controle de Fluxo Tamanho máximo do segmento para o exemplo: 1000 bytes Gerenciamento de conexões • É feito usando 3-way handshake (três mensagens são trocadas) • TCP usa os campos: – – – – Campo de sincronização (SYN) Campo de término (FIN) Campo de reset ( RST) Campo de reconhecimento (ACK) todos pacotes após estabelecimento de conexão precisam estar com ele setado – Combinação entre eles: ACK/FIN Controle de congestionamento • Congestionamento da rede pode ser piorado se a camada de transporte retransmite pacotes que não foram perdidos – Esse problema pode causar até um colapso da rede Controle de congestionamento • TCP usa a quantidade de pacotes perdidos como uma medida de congestionamento – Reduz a taxa de retransmissão a medida que esse valor aumenta • A transmissão de mensagens é feita de forma exponencial até atingir um dado valor, quando passa a aumentar mais lentamente Controle de congestionamento UDP • UDP: User Data Protocol – Protocolo de transporte não confiável (não há estabelecimento de conexão) UDP • Onde é usado: – Aplicações cliente-servidor onde existe apenas uma requisição e uma resposta – O custo para estabelecer uma conexão é alto quando comparado com a transferência de dados Políticas de prevenção de congestionamento • A tabela a seguir resume as políticas adotadas em diversas camadas de uma pilha de protocolos que afetam o congestionamento.