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.
Download

Controle de fluxo - URI