Quando realizamos uma compra com cartão de crédito ou débito em um estabelecimento comercial, é fundamental a existência de uma rede de comunicação, já que ela será o alicerce para execução da operação.
Ao inseri-lo na máquina de cartão, precisamos colocar uma senha para confirmar a operação.
Tal dado é inserido no sistema por meio de um software executado nessa máquina. Nesse caso, o software é executado na camada de aplicação.
Portanto, sempre que houver um serviço na rede, virá à mente a interface com ele.
Ressaltamos que a camada de aplicação é aquela de mais alto nível do modelo OSI, fazendo a interface com os usuários do sistema e realizando as tarefas que eles desejam.
Arquitetura cliente-servidor
Nesta arquitetura, há pelo menos duas entidades: um cliente e um servidor.
O servidor executa operações continuamente aguardando por requisições do(s) cliente(s). O mais comum, é que hajam diversos clientes e um único servidor.
Quando um dos clientes precisa que o trabalho seja realizado pelo servidor, ele monta uma mensagem, especificando o que deve ser realizado.
Quando a mensagem está montada, é enviada ao servidor por intermédio de algum sistema de comunicação (internet).
Este recebe a mensagem, processa seu conteúdo e envia a resposta ao cliente.
O servidor comporta-se passivamente, normalmente limita-se a aguardar solicitações, e quando estas chegam, processa as mensagens com os dados necessários e enviar o resultado do processamento de volta a seus clientes.
Servidor
Quando chega uma solicitação, o servidor pode:
- Atender imediatamente caso esteja ocioso
- Gerar um processo-filho para o atendimento da solicitação
- Enfileirar a solicitação para ser atendida mais tarde
- Criar uma thread para esse atendimento.
Independentemente do momento em que uma solicitação é processada, o servidor, no final, envia ao cliente uma mensagem contendo o resultado do processamento.
O que determina se uma entidade é cliente ou servidor é a função desempenhada pelo software, e não o tipo de equipamento.
Além disso, um processo pode atuar simultaneamente como cliente e servidor.
Arquitetura peer-to-peer
Enquanto existe uma distinção bem clara entre os processos que trocam informações na arquitetura cliente-servidor, na peer-to-peer – também conhecida como arquitetura P2P –, todos os processos envolvidos desempenham funções similares.
Em geral, nesses sistemas, os processos não são uma propriedade de corporações.
Quase todos os participantes (senão todos) são provenientes de usuários comuns executando seus programas em desktops e notebooks.
Tanto o processamento quanto o armazenamento das informações são distribuídos entre os hospedeiros. Isso lhes confere maior escalabilidade em comparação à arquitetura cliente-servidor.
Protocolos da camada de aplicação
Enquanto o algoritmo da camada de aplicação determina seu funcionamento no ambiente local, o protocolo dela estipula tudo que é necessário para que aplicações em diferentes hospedeiros possam trocar mensagens de maneira estruturada.
Serviços da camada de aplicação
Descreveremos a seguir o funcionamento de três importantes aplicações das camadas de aplicação na internet.
- Serviço web / protocolo HTTP — Implementado pelo protocolo HTTP, que muita gente confunde com a própria internet.
- Serviço de Correio / protocolos SMTP, IMAP e POP — Serviço do correio eletrônico.
- Serviço de nomes / DNS — Sistema de resolução de nomes DNS.
HTTP / Serviço web / Protocolo HTTP
Esse protocolo é constituído de duas etapas:
-
Uma página web típica é um documento em formato HTML que pode conter imagens e outros tipos de objetos, como vídeos, texto, som, etc.
Para exibir determinada página web, o usuário digita no browser o endereço no qual ela se encontra, indicando o local em que deve ser buscada.
Para que uma página seja transferida do servidor até o browser, um padrão deve ser seguido pelos softwares.
Ele especifica como o cliente solicita a página, e o servidor a transfere para o cliente.
-
Esse padrão é o protocolo HTTP. A mensagem HTTP, por sua vez, é carregada pelo outro protocolo: TCP.
Uma interação entre cliente e servidor se inicia quando o cliente envia uma requisição a um servidor. A solicitação mais comum consiste em:
- Enviar um texto em formato ASCII.
- Iniciar com a palavra GET.
- Inserir página solicitada, protocolo utilizado na transferência e servidor a ser contatado.
Correio eletrônico (email)
A arquitetura do sistema de correio eletrônico é construída com base em dois agentes:
- Do usuário
- De transferência de mensagens
O agente do usuário é o programa que faz a interface do usuário com o sistema de correio eletrônico.É por meio dele que o usuário:
- Faz o envio e o download de mensagens e anexos.
- Lê as mensagens.
- Realiza a pesquisa, o arquivamento e o descarte de mensagens.
- Escreve suas mensagens.
- Anexa arquivos.
Já os agentes de transferência de mensagens são os responsáveis por fazer com que elas cheguem até o destino.
Eles são mais conhecidos como servidores de correio eletrônico.
Funcionamento do correio eletrônico
Para concluirmos esse estudo, analisaremos importantes características dos protocolos apresentados:
SMTP
O protocolo responsável pela transferência da mensagem até seu destino é o SMTP. O servidor SMTP aguarda por conexões de seus clientes.
Quando uma conexão é estabelecida, o servidor inicia a conversação enviando uma linha de texto na qual se identifica e informa se está pronto (ou não) para receber mensagens.
Se ele não estiver, o cliente deverá encerrar a conexão e tentar novamente mais tarde.
Caso o servidor esteja acessível, o cliente precisa informar aos usuários a origem e o destino da mensagem.
Se o servidor considerar que se trata de uma transferência válida, sinalizará para que ele a envie.
Após o envio, o servidor confirma sua recepção e a conexão é encerrada.
POP3
A RFC 1939 estipula que o POP3 tem a finalidade de fazer o download das mensagens que se encontram no mailbox do usuário para o sistema local.
Caso estejam neste sistema, ele pode utilizá-las em qualquer momento, mesmo sem ter conexão com a internet.
O POP3 é implementado na maioria dos agentes de usuário.
IMAP
Assim como o POP3, o IMAP permite que um usuário tenha acesso às mensagens armazenadas em sua caixa.
Porém, enquanto o POP3 é baseado na transferência delas para o sistema local a fim de serem lidas, o IMAP consegue permitir sua leitura diretamente no servidor, dispensando, portanto, a transferência para o sistema local.
Isso será particularmente útil para usuários que não utilizarem sempre o mesmo computador, pois permite que suas mensagens sejam acessadas a partir de qualquer sistema.
DNS
A comunicação entre hospedeiros na internet ocorre por meio de endereços binários de rede.
Entretanto, é bem mais fácil trabalhar com nomes de hospedeiros do que com seus endereços de rede.
Além de ser muito difícil conhecer todos os endereços dos hospedeiros com os quais precisamos trabalhar, precisaríamos ser notificados toda vez que algum deles mudasse de endereço.
Para resolver esse problema, foi desenvolvido o Domain Name System (DNS).
Sua finalidade é a criação de um sistema de nomes de forma hierárquica e baseada em domínios.
Para acessar um hospedeiro, portanto, basta conhecer seu nome de domínio e fazer uma consulta ao servidor DNS, que é responsável por descobrir seu endereço.
Espaços de nomes
O espaço de nomes do DNS é dividido em domínios estruturados em níveis. Confira a organização do primeiro nível:
Domínios genéricos
Informam o tipo de organização ao qual o domínio está vinculado. Alguns exemplos são:
- .com — comercial
- .edu — instituições educacionais
- .int — algumas organizações internacionais
- .org — organizações sem fins lucrativos
Domínios de países
Cada domínio controla como são criados seus subdomínios. Para a criação de um novo domínio, é necessária apenas a permissão daquele no qual será incluído.
Não há qualquer restrição sobre a quantidade de subdomínios que podem ser criados dentro de um domínio.
Os nomes de domínio não fazem distinção entre letras maiúsculas e minúsculas. EDU e edu, por exemplo, são o mesmo.
O DNS é implementado sobre o protocolo UDP. Trata-se de um protocolo do nível de transporte que não garante a entrega dos dados no destino.
Dessa forma, cabe ao software DNS garantir uma comunicação confiável.
Resolução de nomes
O espaço de nomes do DNS é dividido em zonas. Independentes, elas possuem um servidor de nomes principal e pelo menos um de nomes secundário:
- Servidor de nomes principal — Configurado com as informações das zonas sob sua responsabilidade, ele faz o repasse delas para os servidores de nomes secundários.
- Servidor de nomes secundário — Responde pelas zonas caso haja uma falha do servidor de nomes principal.
As zonas do DNS definem o que um servidor deve resolver. Se ele for o responsável pela zona pesquisada (servidor autoritativo), deverá fazer a resolução solicitada.
Três principais componentes do DNS
- Registros de recursos armazenados em um banco de dados distribuído.
- Servidores de nomes DNS responsáveis pela manutenção de zonas específicas.
- Solucionadores DNS em execução nos clientes.
Solucionador x servidor DNS
Quando um solucionador solicita a resolução de um nome para o servidor DNS, pode acontecer o seguinte:
- O servidor DNS é o responsável pela zona: O servidor resolve o nome solicitado e o devolve ao solucionador.
- O servidor DNS não é o responsável pela zona, mas possui a resolução em cache: O servidor envia a resolução ao solucionador.
- O servidor DNS não é o responsável pela zona nem possui a resolução em cache: O servidor precisa realizar uma busca para resolver o nome.
Ok, falamos bastante da camada de aplicação, agora é hora de falar sobre a camada de transporte.
Mas para que serve a camada de transporte?
Executadas na camada de aplicação, as aplicações precisam de um modelo de rede no qual haja a entrega de uma mensagem tanto em um ponto de rede quanto em sua aplicação par no hospedeiro destino.
O objetivo da camada de transporte é, independentemente das redes físicas em uso, promover a confiabilidade na transferência de dados entre os hospedeiros origem e destino.
Aspectos fundamentais da camada de transporte
Em uma arquitetura de camadas, podemos afirmar que o objetivo geral de uma camada é oferecer serviços àquela imediatamente superior.
No caso da camada de transporte, sua pretensão é oferecê-los à de aplicação.
Como um dos principais objetivos da camada de transporte é ofertar um serviço confiável e eficiente a seus usuários, ela precisa oferecer, no mínimo, um serviço orientado à conexão e outro sem conexão.
Para atingir esse objetivo, a camada de transporte utiliza os serviços oferecidos pela de rede.
No serviço de transporte orientado à conexão, existem três fases:
- Estabelecimento da conexão
- Transferência de dados
- Encerramento da conexão
Por meio de um controle apurado da conexão, esse serviço de transporte consegue verificar quais pacotes chegaram com erro ao destino e até mesmo aqueles que não foram enviados, sendo capaz de retransmiti-los até que os dados estejam corretos.
Já no serviço de transporte sem conexão, não existe nenhum controle sobre os pacotes enviados.
Se um deles se perder ou chegar ao destino com erro, nada será feito para obter a sua recuperação.
Se a rede oferece um serviço com que garanta uma entrega sem erros, por que uma aplicação optaria por um serviço sem essa garantia?
A resposta é simples: por questões de desempenho.
Pelo fato de ser preciso cuidar de cada pacote no serviço orientado à conexão, verificando-os e retransmitindo-os em caso de necessidade, esse controle gera um overhead.
Aplicações como transferência de arquivos e e-mail exigem que seus dados cheguem ao destino livres de erros. Dessa forma, elas utilizam um serviço orientado à conexão.
Ainda assim, em certas aplicações, o mais importante é a chegada a tempo de uma informação, mesmo que ela contenha erros ou que a mensagem anterior tenha se perdido.
Endereçamento (camada de transporte)
Quando seu programa solicita algo a um servidor, o sistema envia uma mensagem para ser entregue à aplicação que executa em um hospedeiro remoto.
Mas podem existir várias aplicações nele.
Como identificamos uma aplicação específica?
Surge neste momento o endereçamento no nível de transporte. Sua função é identificar em qual aplicação determinada mensagem deve ser entregue.
Afinal, toda mensagem do protocolo de transporte carrega o endereço da aplicação.
Verificaremos agora a importância do endereçamento no nível de transporte.
Afinal, é necessário indicar em qual aplicação os dados devem ser entregues por meio de seu endereço (de transporte).
Assim, o hospedeiro destino consegue saber o destino deles.
Estudaremos mais adiante TCP e UDP, dois protocolos da camada de transporte da arquitetura TCP/IP.
Neles, o endereço de transporte é conhecido como porta.
Multiplexação e demultiplexação
A multiplexação e a demultiplexação fornecem um serviço de entrega, processo a processo para aplicações executadas nos hospedeiros.
No hospedeiro destino, a camada de transporte recebe segmentos de dados da camada de rede, tendo a responsabilidade de entregá-los ao processo de aplicação correto.
Um processo pode ter um ou mais endereços de transporte (conhecidos como portas na arquitetura TCP/IP) pelos quais dados passam da rede para o processo – e vice-versa.
Como o hospedeiro destino direciona à porta correta um segmento que chega?
Para essa finalidade, cada segmento da camada de transporte tem um conjunto de campos de endereçamento no cabeçalho.
No receptor, a camada de transporte examina esses campos para identificar a porta receptora e direcionar o segmento a ela.
A tarefa de entregar os dados contidos em um segmento para a porta correta é denominada demultiplexação.
Já a multiplexação consiste no trabalho de, no hospedeiro origem:
- Reunir porções de dados provenientes de diferentes portas.
- Encapsular cada porção de dados com as informações de cabeçalho (as quais, mais tarde, serão usadas na demultiplexação) para criar segmentos.
- Passar os segmentos para a camada de rede.
Vejamos um exemplo, vamos pensar no computador que Eduardo utiliza em suas atividades.
- Navegando na web, ele acessa seu e-mail e faz o download de arquivos usando um programa específico para isso. De fato, o objetivo da multiplexação é possibilitar ****uma melhor utilização ****do meio de comunicação ****ao permitir que ele seja compartilhado pelos diversos programas utilizados.
- Eduardo utiliza a Internet, cujo protocolo de transporte é o TCP.
- Todos os programas operados por ele (browser web, cliente de e-mail e programa de transferência de arquivos) utilizam o TCP, que fará a transferência da informação até o destino.
A multiplexação, portanto, permite que vários programas possam utilizar o TCP ao mesmo tempo, fazendo, assim, com que Eduardo possa ter tantos programas quanto queira ao acessar a rede.
Como o TCP sabe quem é quem?
Para fazer uso dele, um processo deve se registrar em uma porta (endereço de transporte) do protocolo TCP.
Servidores possuem portas conhecidas, mas programas clientes se registram nas aleatórias.
Vamos supor que os programas de Eduardo se registraram nas seguintes portas:
- Browser web — 11278
- Cliente de email — 25786
- Transferência de arquivos — 3709
Dessa maneira, o TCP pode identificar cada uma.
Quando o browser envia uma solicitação a um servidor web, o TCP coloca na informação enviada o número de porta 11278.
O servidor, portanto, já sabe que deve responder-lhe enviando a resposta para essa porta.
Top comments (0)