540 likes | 673 Vues
REDES DE COMPUTADORES. Camada de Transporte Professor: M.Sc . Carlos Oberdan Rolim.
E N D
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 10.10.10.1 : 80 Comunicação envolve porta+endereço local e porta+endereço remoto Endereço local IP : Porta Endereço remoto IP : Porta
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 ThreewayHandshake(ou Aperto de mão em três vias)
Cliente Servidor Envia SYN (Seq x, ACK = 0) SYN, 100 SYN + ACK 101, 200 Envia SYN + ACK (ACK = x + 1, Seq y) Envia ACK (ACK = y + 1, Seq x + 1) ACK 101, 201 Theeway Handshake --- 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 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).
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
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? • 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
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