Camada de Transporte (4) – Transport
Layer
Funções
- Responsável
por todas transferências dos dados das aplicações que ocorrem entre 2 estações
(estabelece uma comunicação confiável entre 2 nós [end to end, nó-a-nó]).
- Permite
que o mesmo dispositivo consiga transmitir dados de diferentes aplicações na
mesma rede em simultâneo (através de circuitos virtuais).
- Possui
mecanismos para criar, manter e finalizar circuitos virtuais. (Os circuitos virtuais
são utilizados antes de ser estabelecida a comunicação entre 2 nós. Permitem à
camada de transporte receber dados de diferentes aplicações de camadas
superiores (camada 7 p.e.), sem que os dados colidam uns com os outros, ou seja,
cada aplicação da camada superior têm um circuito virtual próprio que “liga” à
camada de rede). Manterá a consistência desse túnel virtual.
- Efectua
o controlo de fluxo de informação:
-Segmentos transmitidos são confirmados ao
serem recebidos;
-Qualquer segmento não confirmado é
retransmitido;
-Reconstrução dos segmentos na sua sequência
original (uma vez recebidos pelo computador destinatário).
-Mantém um fluxo de dados gerível (a fim de
evitar congestionamento, sobrecarga e perca de dados)
Protocolos
-> TCP (Transmission Control Protocol) –
Reliable (Confiável)
Utilizado
por aplicações que necessitam que os dados sejam enviados e recebidos sem erros
e sem estarem em falta, e por isso toleram algum atraso na comunicação para se
certificarem de que tudo se mantém correcto.
Exemplo:
Web; E-mail (SMTP, IMAP/POP).
-> UDP (User Datagram Protocol) – Fast
(Rapidez)
Utilizado
por aplicações que têm como prioridade a rapidez no envio e recepção de dados,
não havendo por isso qualquer tolerância a atrasos na comunicação. No entanto,
existem algumas aplicações que aceitam erros ou falhas ocasionais durante a
transmissão dos dados.
Exemplo:
Streaming de Video ;VoIP; Torrents.
O processo de comunicação utilizado pelo protocolo TCP
denomina-se Three-way Handshake.
Durante a transmissão de
dados, ambos os dispositivos controlam periodicamente a ligação estabelecida
para assegurarem que os dados estão a ser correctamente enviados e recebidos.
Um congestionamento de dados pode ocorrer quando os computadores geram os dados
mais rapidamente do que a capacidade máxima suportada pela infra-estrutura de
rede consegue transmitir (ou quando existem inúmeros computadores a transmitir
datagramas para um único gateway ou destino). Para
evitar a perda de datagramas, existem essencialmente três métodos de controlo
de fluxo:
-> Buffering
Quando
uma máquina recebe um fluxo de datagramas maior do que ela pode processar,
armazena-os numa memória chamada buffer. Este processo de “bufferização”
resolve o problema apenas se os datagramas fizerem parte de uma pequena
“rajada”. Se o fluxo for contínuo, a memória buffer irá esgotar-se (perda de
capacidade de recepção) e a partir daí os datagramas que continuarem a ser
enviados serão perdidos. Para gerir esta “inundação de dados” e evitar a perda
de datagramas, a camada de transporte irá enviar um sinal de “not ready” ao
transmissor (fazendo com que o mesmo aguarde antes de enviar mais dados).
Quando os datagramas armazenados na buffer da máquina destinatária tiverem sido
todos processados, é enviado um sinal de transporte “ready” (a memória buffer
da máquina destinatária está pronta para receber mais dados) e a máquina
transmissora (ao receber esse sinal) retoma a transmissão onde havia parado
anteriormente. Numa comunicação confiável (orientada para a conexão) tantos os
datagramas devem ser entregues no seu destino na exacta ordem em que são
transmitidos como também os segmentos não podem ser perdidos, duplicados ou
corrompidos. A mais pequena falha em alguns destes pontos irá gerar erros de
comunicação e transmissão. Daí a necessidade da máquina destinatária confirmar
um a um tanto os datagramas como os segmentos.
-> Windowing
Esperar
pela confirmação (por parte da máquina transmissora) antes de transmitir cada
segmento iria tornar a taxa de transmissão de dados extremamente baixa. Assim
sendo, em vez de se esperar antes de transmitir cada segmento, existe uma
“janela de tempo” durante a qual a máquina transmissora envia os segmentos sem
haver confirmação da recepção dos segmentos anteriores. É a essa quantidade de
dados que uma máquina transmissora é capaz de enviar sem antes receber a
confirmação do(s) segmento(s) enviado(s) anteriormente que se denomina
“window”. O processo de “windowing” controla a quantidade de informação
transferida entre as máquinas participantes, sendo esta quantificação feita
através da contagem do número de bytes.
Exemplo:
->
Confirmação (Positive Acknowledgement with Retransmition)
Esta técnica é a única que garante que
os dados transmitidos entre dois nós não são perdidos ou duplicados e que
mantém a sua integridade intacta. Neste método, a máquina destinatária
transmite uma mensagem de confirmação de retorno para a máquina transmissora
quando a recepção dos dados é efectuada com sucesso.
Tanto o TCP
como o UDP utilizam port numbers como forma de completar o socket
(conjunto formado pelo endereço IP e o port
number), para saber que serviço específico está a ser requisitado à máquina.
É através destes port numbers que se
consegue identificar o protocolo das aplicações.
Cada vez que um computador-cliente tenta aceder a um
servidor, este utiliza uma porta (gerada aleatoriamente) para comunicar com o
servidor. Existem intervalos de portas exclusivos para finalidades específicas:
Protocolos (Well Known Ports), processos específicos de algumas aplicações
(Registered Ports) e pelas aplicações client
(Dynamic/Private/Ephemeral Ports). Tudo isto é gerido pela Internet Assigned
Numbers Authority (IANA).
Mesmo
que no servidor existam clients com o
mesmo número de porta atribuído, o servidor sabe que são computadores
diferentes a aceder (sabe pelo seu endereço IP, e no caso de estarem no mesmo
domínio, diferem pelo nº da porta local.
Para
saber estas informações no sistema operativo Windows, basta correr o comando netstat na linha de comandos (Command
Prompt).
Sem comentários:
Enviar um comentário