Arquivo para setembro, 2008

A camada de aplicação

Posted in Uncategorized on setembro 14, 2008 by overmindbr

As camadas inferiores têm a função de transmitir os dados enviados pela camada de aplicação de maneira confiável, mas não fornecem serviços diretos ao usuários. Já a camada de aplicação, fornece diretamente estes serviços, sendo assim, “a razão de ser de uma rede de computadores” (Kuroise).

Antes de citar os protocolos, veremos 2 arquiteturas de aplicação bastante utilizadas. A primeira é a Cliente-Servidor, onde um servidor fornece um serviço e os clientes se conectam ao servidor e utilizam este serviço. Um exemplo é quando abrimos um cliente FTP e nos conectamos a um servidor: ao conectarmos podemos listar os arquivos no servidor e assim copiarmos para nosso computador. Este trabalho de receber uma mensagem, arquivo, ou até vídeo e transmitir a outro cliente é realizado pelo servidor (ou servidores).

Outra arquitetura de aplicação é o P2P (peer-to-peer), onde nem sempre há servidores funcionando mediando a comunicação entre os clientes. Assim temos sempre pares de clientes que se comunicam entre si, gerando uma comunicação par-a-par (peer-to-peer). O principal exemplo desta arquitetura é o de transferência de arquivos utilizada, por exemplo, pelo Gnutella e afins.

Outra arquitetura utilizada seria uma híbrida cliente/servidor-P2P. Esta arquitetura utiliza, por exemplo, para transferência de arquivos o P2P e a arquitetura cliente/servidor para pesquisar quais peers contêm o arquivo desejado.

Como disse anteriormente, a principal arma do modelo TCP/IP é a implementação dos protocolos. Então não poderia deixar de fora alguns deles, que funcionam na camada de Aplicação:

  • DNS – Serviço de resolução de nomes. Serviço responsável por traduzir um nome em um IP. O contrário também acontece, dado um IP é possível traduzir um nome (apesar de que não é obrigatório um servidor fazer o DNS reverso).
  • HTTP – Protocolo de transferência de hipertexto. É o responsável por você estar vendo esta página. Ele recebe/trata das requisições de páginas aos servidores e envia ao cliente (navegador WEB).
  • FTP – Protocolo de transferência de arquivos implementado utilizando TCP.
  • TFTP – Protocolo de transferência de arquivos triviais que é implementado utilizando UDP.
  • POP3/IMAP/SMTP – Protocolos que cuidam de correio eletrônico. São responsáveis por enviar e receber e-mails.

A Camada de Rede, o Protocolo IP e a Internet

Posted in Uncategorized on setembro 3, 2008 by overmindbr

Como disse no post anterior, o IP é o protocolo que mantém a Internet unida. O objetivo do protocolo, desde o início, era fornecer uma maneira de transportar os datagramas da origem para o destino, independente da rede.

O datagrama IP é formado pelo cabeçalho  e por uma parte de dados. O cabeçalho consiste em no mínimo 20 bytes e uma parte opcional de tamanho variável. Ele é enviado do último byte para o primeiro, do bit mais significante para o menos significante.  Isso o torna Big Endian, enquanto que os processadores da intel são Little Endian. Isso torna a implementação de soquetes de rede diferentes para cada arquitetura, pois numa arquitetura Intel, o software terá que realizar shift dos bytes.

O formato do datagrama IP é:

 

 

Veja que este cabeçalho é gerado por software ao se enviar um pacote pela rede. Logo, os campos do cabeçalho podem ser forjados de maneira maliciosa…

A Internet e seus Protocolos

Posted in Uncategorized on setembro 2, 2008 by overmindbr

Posso ouvir o Tanenbaum dizendo “A internet não é de forma alguma uma rede”. Isso acontece porque a Internet é um conjunto de várias redes interligadas, que se comunicam através de protocolos bem definidos e assim oferecem serviços comuns aos internautas.

Tradicionalmente, dizemos que um computador está conectado a Internet quando executa a pilha de protocolos TCP/IP (Tanenbaum et. al., 2003). Essa pilha está encapsulada em quatro camadas:

 

 

 

Na camada superior, a Aplicação,  funcionam os protocolos que estão disponíveis ao usuário da Internet, como HTTP (servidor web), DNS (servidor de nomes),  FTP (servidor de transferência de arquivos), IRC (internet relay chat) e outros.

Na camada de Transporte os principais protocolos usados são TCP e UDP. O primeiro é orientado a conexão, isto é, um host (cliente) se conecta a um outro host (servidor) de maneira que os pacotes existe a certeza de que os pacotes enviados de um para o outro serão recebidos no destino.  Já o protocolo UDP, não é orientado a conexão, assim não se há a garantia de que os pacotes serão recebidos pelo destino, tornando os dados inseguros. Você, se for como eu, estaria se perguntando: Para quê eu usaria um protocolo de transporte que não me garante a entrega dos pacotes?
A resposta é simples: velocidade. O protocolo UDP, por não precisar de confirmação no recebimento dos dados, é um protocolo mais rápido do que o TCP. Isso torna as aplicações, onde não é necessário se ter a certeza de recebimento do pacote, mais rápidas. Isso é útil, por exemplo, em transmissões de Streams, como vídeo e áudio, onde a perda de pacotes não interfere na execução de vídeo, mas a velocidade de transmissão é crucial.

O camada que mantém a Internet interligada é a camada de Redes, especificamente, o protocolo IP. Com ele, temos a certeza de que nosso pacote poderá ser entregue ao nosso computador de destino e também que este computador terá a possibilidade de nos responder. Dizemos então que ele é roteável.

A camada inferior da pilha TCP/IP é a camada Física, que determina fisicamente (ao contrário das outras que são lógicas) como os pacotes serão recebidos e enviados. Um exemplo, mais comum, é o Ethernet.