Páginas

sexta-feira, 14 de novembro de 2014

Modelo OSI - Camada 4

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