REDES DE COMPUTADORES Camada de Transporte Professor: M.Sc. Carlos Oberdan Rolim.
Transcript of REDES DE COMPUTADORES Camada de Transporte Professor: M.Sc. Carlos Oberdan Rolim.
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 Threeway Handshake (ou Aperto de
mão em três vias)
Theeway Handshake
URI - Santo Ângelo - DECC
Cliente Servidor
SYN + ACK 101, 200
Envia SYN (Seq x, ACK = 0)
Envia SYN + ACK (ACK = x + 1, Seq y)
SYN, 100
Envia ACK (ACK = y + 1, Seq x + 1)
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).
ACK 101, 201
--- Conexão estabelecida ---
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?
• 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.
Problema dos dois exércitos
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ávelA 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 TCPProtocolo TCP
• Principal protocolo de transporte da arquitetura TCP/IP
• Existem outros como o UDP, RTP e RTCP
Protocolo TCPProtocolo 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 TCPProtocolo 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 TCPFormato do segmento TCP– TCP usa o termo segmento para fazer referência a uma
mensagem
Serviços que o TCP provê para as aplicaçõesServiç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çõesServiç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çõesServiç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çõesServiç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çõesServiç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 datagramasServiç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 datagramasServiç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 datagramasServiço fim-a-afim e datagramas
Dois cenários que afetam a confiabilidadeDois 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 confiabilidadeDois 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 confiabilidadeDois 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?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?
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?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 adaptativaRetransmissão adaptativa
• Protocolos de transporte anteriores ao TCP usavam um valor fixo de espera de confirmação para efeito de retransmissão
Retransmissão adaptativaRetransmissã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 adaptativaRetransmissão adaptativa
Controle de FluxoControle 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 FluxoControle 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 Controle de FluxoFluxo
Tamanho máximo do segmento para o exemplo: 1000 bytes
Gerenciamento de conexõesGerenciamento 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 congestionamentoControle 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 congestionamentoControle 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 congestionamentoControle de congestionamento
UDPUDP• UDP: User Data Protocol
– Protocolo de transporte não confiável (não há estabelecimento de conexão)
UDPUDP
• 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.