Camada de Transporte e TCP/IP
Introdução
Funções
Conexão/desconexão
QoS
Endereçamento
Multiplexação
TCP/IP
Os tópicos a serem examinados
podem ser encontrados nos seguintes capítulos de livros:
Computer
Networks, Tanenbaum, cap. 6
Redes de
Computadores, Soares et alii, cap. 12
Outros bons livros de redes de
computadores, nos capítulos sobre camada de transporte
do protocolo OSI e sobre TCP/IP
1. Introdução
A camada de transporte do protocolo OSI
é a primeira em que apenas as duas entidades que querem se
comunicar tomam parte. É por isso que uma de suas funções
é o estabelecimento de um padrão de qualidade de
serviço (QoS) sobre o qual a comunicação deve ocorrer.
Além do estabelecimento da
qualidade de serviço, cabe ainda à camada de transporte
a definição de como uma conexão deve ser
estabelecida, mantida e encerrada. Também é na camada
de transporte (em conjunto com a de rede) que se materializa o
protocolo TCP/IP, que é, sem sombra de dúvida, o padrão
dominante na Internet.
2. Funções
A camada de transporte trata,
fundamentalmente, do processo de conexão entre duas entidades
que irão se comunicar. Nesse processo, as principais funções
por ela oferecidas às camadas superiores são:
Definição
da Qualidade de Serviço (QoS)
Definição
do processo de conexão e desconexão de uma sessão
Definição de
endereçamento dos processos comunicantes associado ao protocolo TCP/IP
3. Protocolos de Conexão e
desconexão
Como a camada de transporte é a
primeira em que os pacotes transferidos entre as duas entidades que
se comunicam só circulam nas máquinas em que estão
executando, cabe a ela fazer o controle da conexão e
desconexão entre essas máquinas. Por apenas envolver as
máquinas origem e destino, os protocolos dessa camada são
chamados de protocolos ponto-a-ponto.
Dentro desse cenário a operação
do protocolo de conexão é bastante simples, requerendo
apenas que se enviem mensagens solicitando a conexão,
aceitando o pedido e confirmando o estabelecimento da conexão
após acordos sobre o padrão de QoS a ser admitido. Todo
esse processo é bastante bem definido através de
primitivas chamadas TPDUs (Transport Protocol Data Unit),
que possuem sintaxe e relações de dependência
delimitadas.
Os problemas surgem, de fato, no momento
da desconexão entre as duas máquinas, o que deve
ocorrer de modo a evitar que uma delas permaneça acreditando
que a conexão ainda está em atividade. Isso ocorre pela
falta de capacidade de se identificar que o parceiro da comunicação
está pronto para se desconectar sem que ele lhe envie uma
mensagem sobre isso. Ao receber tal mensagem, é o seu parceiro
que ficará na dúvida sobre se você recebeu, ou
não, a última mensagem enviada. Esse processo de
dúvidas prossegue ad infinitum caso um dos dois
parceiros não admita, sem necessidade de uma mensagem, que o
outro está pronto para a desconexão.
A esse problema se aplicam soluções
de concordância (Agreement), em que o protocolo
de desconexão deve ser feito de modo que, num dado ponto, um dos
parceiros admita que o outro iniciou a desconexão real caso
não receba mensagem indicando o contrário.
4. QoS
Durante o processo de estabelecimento de
uma conexão devem ser definidos alguns detalhes sobre como a
mesma transcorrerá. Um desses detalhes é a definição
da qualidade de serviço (QoS), a qual, na prática,
define os limites mínimos aceitáveis para certos
parâmetros de desempenho para que a conexão seja
mantida. Os valores estabelecidos de QoS durante a fase de conexão
são, portanto, pisos de desempenho para a conexão.
Dentro do protocolo OSI se definem diversas classes de QoS, segundo
patamares de erros e perdas de pacotes. A classe de uma rede (do
ponto de vista de qualidade) é definido pela classificação
ISO.
Além dos tipos de classe do
protocolo OSI ainda se definem, durante o estabelecimento da conexão,
parâmetros de qualidade como:
Atraso
de estabelecimento de conexão
Probabilidade
de falha de estabelecimento de conexão
Vazão
(velocidade) da rede
Atraso
de trânsito
Prioridade
Resiliência
Taxa de erros residuais
5. Endereçamento
O problema de endereçamento
consiste em permitir que várias conexões sejam
estabelecidas, por uma mesma máquina, com uma ou mais máquinas
simultaneamente. Isso implica em que cada conexão deverá
ter endereços específicos, que permitam à camada
de transporte diferenciar entre uma conexão e outra. Isso é
feito através de endereços de portas de serviço,
conhecidas por TSAP (Transport Service Access Point).
As entidades que querem trocar informações devem,
então, especificar endereços TSAP em que efetivarão
tais trocas. No caso particular do TCP/IP as TSAPs são implementadas
através de sockets para identificar os pontos (portas) de acesso.
Em situações específicas, como acesso a serviços considerados padrões na internet (acesso a um sistema de arquivos, por ex.), esse processo de endereçamento faz uso de portas (TSAPs) pré-definidas para a conexão, que depois são redirecionadas para portas gerais. No protocolo TCP essas portas pré-definidas estão abaixo da porta 49151, como por exemplo o serviço de telnet na porta 23, ssh na porta 22 e http na porta 80.
6. Multiplexação
Como a camada de aplicação trata de multiplas conexões simultâneas e as camadas abaixo dela podem tratar apenas de uma informação por vez, é necessário definir como isso pode ser acomodado. A técnica usada é a de multiplexação das conexões, ficando a camada de aplicação responsável por definir qual porta (TSAP) acessará a camada de rede por vez.
7. TCP/IP
Finalmente, para concluir o estudo da camada de transporte falta examinar o funcionamento do protocolo TCP/IP. Na realidade, esse protocolo trabalha em cinco camadas, que são as camadas física, de enlace, de rede, de transporte e de aplicação. Dessas camadas todas é nas camadas de rede e de transporte que aparecem as diferenças significativas entre TCP/IP e OSI. Em específico, é na camada de rede que está regulado o protocolo IP, enquanto o TCP funciona na camada de transporte para trocas de dados que demandem o estabelecimento de conexão. Além do TCP existe também na camada de transporte o protocolo UDP, usado quando não existe necessidade de conexão.
IP:
O protocolo IP é encarregado de
definir endereços das máquinas que participarão
integralmente do processo de comunicação. Para essa
tarefa se define um cabeçalho (o IP header) contendo
informações tais como endereços internet da
fonte e do destino do pacote, tamanho do pacote, identificação,
opções de serviço (como restrições
de roteamento, nível de segurança, etc.), entre outros
dados, que podem ser vistos com detalhes na maioria dos livros de
redes de computadores.
Os endereços IP são
endereços de 32 bits (no caso do IPv4), divididos em classes
de redes, que especificam o número máximo de máquinas
em uma rede específica. A classificação de
endereços IP também pode ser vista em livros da área,
assim como um detalhamento das especificações do IPv6
(nele os endereços são de 128 bits). Vale observar que o protocolo IPv4 vem sendo substituído pelo IPv6, com endereços de 128 bits e uma gama bastante maior de serviços oferecidos ao processo de roteamento e identificação de endereços.
Como endereços IP na realidade
são obtidos a partir de nomes, através de um serviço
de nomes de domínio, eles identificam uma máquina de
forma lógica. A localização física de
uma máquina, ou o mapeamento entre endereço lógico
e físico, é distinto do endereço IP. Na prática
cada máquina possui uma placa de rede que possui um endereço
Ethernet (48 bits, único para cada placa existente no mundo).
Então é preciso que se transforme endereços IP
para endereços Ethernet e vice-versa. Isso é feito por
um par de protocolos definidos na camada de rede, chamados ARP
(Address Resolution Protocol) e RARP (Reverse
Address Resolution Protocol), que fazem, respectivamente, o
mapeamento entre um endereço IP para um Ethernet e entre um
endereço Ethernet para um IP.
TCP:
O protocolo TCP faz a definição
dos serviços listados aqui para a camada de transporte, em
especial os serviços de QoS e de endereçamento, além
de prover primitivas de controle de conexão (TPDUs para
estabelecer, manter e fechar uma conexão).
Parte desse serviço é
definido através de um cabeçalho (TCP header,
que define os sockets envolvidos na comunicação, padrões
de qualidade para o serviço, etc. (mais uma vez, a descrição
completa do cabeçalho pode ser vista nos bons livros da
área).
Uma observação importante
a fazer nesse ponto é que a camada de transporte deve
fornecer serviços equivalentes para uma comunicação
quer seja ela orientada a conexão quer não seja. Em
específico, dentro do TCP/IP, o serviço orientado a
conexão é provido pelo protocolo TCP, enquanto que o
não orientado a conexão (connectionless) é
provido pelo protocolo UDP.
UDP:
O protocolo UDP é utilizado para
trocas de mensagens em que não se necessite do estabelecimento
prévio de conexão entre as máquinas comunicantes. Existem várias
aplicações em que isso é interessante e até mesmo necessário,
devendo ficar claro que quando a transmissão ocorre por UDP não
existe a garantia de que a mensagem foi entregue com sucesso.
Endereços UDP são os mesmos do TCP, sendo a diferença apenas
a necessidade de conexão prévia. O cabeçalho UDP também é
descrito nos bons livros de redes de computadores, não sendo
detalhado aqui.
|