Você está na página 1de 7

Prof.

Alex Dias


1
AULA 01 - Aplicao cliente / servidor
Introduo
Quando vinculamos o contexto de redes de computadores aos servios
disponveis na internet estamos associando as nossas necessidades de comunicao a
um processo que envolve sempre um pedido, normalmente realizado por ns
usurios, e uma resposta, advinda de um servidor na internet. Ao procurar
informaes sobre uma cidade, por exemplo, recorremos ao google solicitando que ele
nos apresente algo para saciar nossa busca pelo conhecimento. Da mesma forma,
solicitamos a um site que exiba o contedo de uma pgina web que pretendemos
visitar, tambm pedimos ao provedor a visualizao de nossos e-mails, algumas vezes
recorremos ao repositrio de arquivos para que ele nos facilite o download de uma
msica, enfim, so tantos exemplos envolvendo solicitaes (pedidos) e respostas
(atendimentos) que vale a pena olhar mais de perto como tudo isso acontece, este
um dos principais objetivos desta disciplina.
Processos que envolvem solicitaes e respostas aplicadas s necessidades dos
usurios so conhecidos por aplicaes cliente/servidor. O cliente sempre o
solicitante de um servio e o servidor quem atende s solicitaes dos clientes.
este conceito que ser trabalhado na aula de hoje.

Modelo cliente/servidor
No modelo de servios que utilizam o conceito de cliente/servidor, alguns
componentes so presena confirmada independente do tipo de aplicao envolvida.
A figura 1 ilustra a ideia por trs deste conceito.
Solicitao
Resposta
CLIENTE
SERVIDOR
Endereo IP (cliente)
Porta Lgica (cliente)
Aplicativo (cliente)
Endereo IP (servidor)
Porta Lgica (servidor)
Aplicativo (servidor)
Configurao
DAEMON
socket
internet
Modo de
escuta

Figura 1: Componentes do modelo de aplicao cliente/servidor
Prof. Alex Dias


2
Componentes do modelo cliente/servidor
Endereo IP: identifica a localizao tanto do cliente quanto do servidor, esta
localizao imprescindvel para que a troca de informaes ocorra de forma correta
entre os elementos envolvidos.
Porta lgica: os sistemas operacionais de redes so multitarefa, o que faz com que um
servidor possa comportar mais de um servio, da mesma forma, os clientes podem
acessar mais de um servio simultaneamente ( p.ex.: possvel acessar o servidor de e-
mails enquanto se aguarda o trmino de um download de arquivos). Para identificar
diferentes tipos de servios utiliza-se um nmero chamado de porta lgica. As
aplicaes mais importantes recebem nmeros padronizados e so descritas em
documentos chamados de RFCs (request for comments) que esto disponveis na
internet para quem tiver interesse. Por exemplo, o envio de e-mails considerado uma
aplicao importante, alm de ser documentado por uma RFC, recebe um nmero
especfico de porta lgica (porta 25), por outro lado, se inventarmos uma aplicao
simples, com funes limitadas, sem oferecer grande importncia para a humanidade,
embora esta aplicao tambm precise ser identificada por uma porta lgica,
dificilmente ela ser documentada atravs de uma RFC. As aplicaes reconhecidas
por uma RFC recebem nmeros de portas lgicas menores que 1024, sendo que o
maior valor possvel o nmero 65535 (tente descobrir o porqu).
Ex.:
- HTTP (HyperText Transfer Protocol) porta 80
- FTP (File Transfer Protocol) portas 20 e 21 (veremos porque mais tarde)
- DNS (Domain Name System) porta 53
- SMTP (Simple Mail Transfer Protocol) porta 25
- POP (Post Office Protocol) porta 110

Aplicativo: o aplicativo cliente um software utilizado para que o usurio tenha acesso
ao servio desejado disponvel na internet, o browser ou navegador um dos
melhores exemplos deste tipo de aplicativo. J o aplicativo servidor um software
instalado num servidor localizado na internet e que ser acessado pelo cliente. Este
tipo de aplicativo ser o principal objeto de estudo nesta disciplina. O aplicativo
servidor composto, de forma simples, por um arquivo executvel (DAEMON),
utilizado para ativar ou desativar um servio, e por um arquivo de configuraes, que
contm os parmetros de configurao do servio que podem ser ajustados pelo
administrador da rede. Ao ativar um servio, o servidor entra em modo de escuta e
fica aguardando pelas solicitaes dos clientes.
Prof. Alex Dias


3
Socket: na internet a conexo entre o cliente e o servidor no feita de forma simples
como acontece numa rede local, no h um nico meio fsico ou algum tipo de cabo
que permita esta conexo. Os dados que trafegam entre o cliente e o servidor passam
por diversos caminhos e diferentes tipos de meios fsicos dentro da nuvem da internet,
desta forma o tracejado utilizado na figura 1 representa uma conexo lgica entre o
cliente e o servidor, esta conexo s reconhecida por estes dois elementos, nenhum
dos elementos que compem a conexo intermediria da rede (roteadores, switches,
etc) tm conhecimento que tal ligao existe. O socket ou conexo lgica
estabelecido no momento em que o cliente decide se conectar a um servidor,
dependendo do tipo de servio existem dois tipos de sistemas de conexo possveis:
- Sistema orientado a conexo: o cliente faz um pedido formal de conexo ao
servidor, esta formalidade d certa garantia e maior confiabilidade para a aplicao
(Ex.: HTTP, FTP, SMTP, etc).
- Sistema no orientado a conexo: o cliente no faz nenhum tipo de pedido
formal para conectar-se ao servidor. O servidor mantm os dados disponveis para
quem quiser peg-los, os clientes simplesmente se conectam a porta lgica do servidor
sem que nenhum pedido seja feito. Este tipo de conexo usado para aplicaes que
exigem maior rapidez e que podem se dar ao luxo de deixar de lado as questes de
confiabilidade (Ex.: Transmisso de vdeo pela internet ou streams de udio).

Referncia ao modelo de camadas
O modelo de camadas apresentado na disciplina Introduo a Redes de Computadores
possui uma associao de funcionalidade para cada um dos elementos apresentados
no conceito de cliente/servidor.
Endereo IP est associado as funes da camada de rede do modelo OSI, ou inter-
rede na arquitetura internet.
Porta lgica tem relao com a camada de transporte que na internet fazem
referncia aos protocolos TCP (mais confivel orientado a conexo) e UDP (maior
rapidez no orientado a conexo). Os sockets tambm so criados por esta camada e
so programas executados tanto no cliente quanto no servidor.
Aplicativo refere-se a todos os aplicativos descritos na camada de aplicaes do
modelo hierrquico de camadas.

Prof. Alex Dias


4
Handshake de 3 vias (Three way handshake)
Como foi dito anteriormente sistemas orientados a conexo so mais confiveis,
grande parte desta confiabilidade se deve ao fato das inmeras verificaes que so
feitas nos pacotes de dados transmitidos pela rede. Antes que um cliente conecte-se
ao servidor necessrio que seja enviado um pedido de conexo que feito em 3 vias:
1 ) O cliente envia um pedido para conectar-se ao servidor;
2) O servidor confirma o pedido do cliente e pede a ele que confirme tambm;
3) O cliente envia a confirmao solicitada pelo servidor.
Os trs passos acima descritos ocorrem em todas as aplicaes que utilizam um
sistema orientado a conexo para transporte dos dados, este processo conhecido
por handshake de 3 vias e ocorre sempre no incio e no encerramento de uma
conexo. Embora seja um procedimento constante realizado tanto pelo cliente quanto
pelo servidor, os usurios no precisam digitar nenhum comando especfico para que o
handshake acontea, esta funo est embutida nas atividades que o aplicativo
executa normalmente de forma transparente para o usurio, ou seja, sem que este
tenha que se preocupar com isso. A figura 2 mostra um exemplo de aplicao
cliente/servidor, ilustrando a ocorrncia do handshake de 3 vias, para este exemplo foi
escolhido uma aplicao web cujo protocolo o HTTP, na prxima aula analisaremos
este protocolo mais de perto.
Solicita encerramento da conexo
Confirma solicitao do servidor
Cliente solicita dados http://www.iftm.edu.br
Servidor responde enviando dados
Trocas de dados entre
cliente e servidor
Servidor encerra a conexo
Solicita conexo com o servidor
Servidor confirma solicitao do cliente
Cliente confirma solicitao do servidor
Handshake de 3 vias
(Conexo)
Handshake de 3 vias
(Desconexo)
Tempo gasto para
processer um pedido

Figura 2: Exemplo de aplicao cliente/servidor com handshake de 3 vias (HTTP).
Prof. Alex Dias


5
HTTP Hyper Text Transfer Protocol
O protocolo HTTP faz referncia a uma aplicao que uma das mais usadas na
internet: o acesso a pginas web. Independente do navegador de sua preferncia, voc
j deve ter observado que, ao digitar o endereo de um site, a sequncia http://
esperada no campo da URL (Uniform Resource Locator), antecedendo o famoso
www.qualquercoisa.br digitado pelo usurio.
Por se tratar de uma aplicao reconhecida e utilizada mundialmente, o IETF
(Internet Engineering Task Force) possui documentos com a descrio completa do
protocolo HTTP, usando como referncia inicial a RFC 2616.
O principal objetivo desta semana aprender a instalar e configurar um
servidor de pginas web, para isso ser utilizado o aplicativo mais utilizado no mundo:
Apache Server. O sistema operacional linux servir como suporte para instalao e
configurao deste servidor.
Caractersticas do protocolo HTTP
O protocolo HTTP exige que o transporte de dados seja confivel sendo assim,
um sistema orientado a conexo, fornecido pelo TCP, utilizado. Embora seja possvel
o usurio enviar dados para o servidor, o recebimento de informaes partindo do
servidor para o cliente mais comum. O uso deste protocolo feito por intermdio de
um software, onde tanto cliente quanto servidor trocam informaes usando
comandos que utilizam palavras reservadas para cada ao executada.
Por exemplo, quando o cliente quer acessar o contedo de uma pgina na
internet, o navegador (software) executa um comando GET seguido pelo nome do
arquivo que ele deseja acessar, por outro lado, quando o usurio quer enviar dados
preenchidos em um formulrio, por exemplo, o navegador executa um comando POST,
o uso destes comandos pode ser visualizado na figura 3 que segue. Os comandos POST
e GET so executados de forma transparente para o usurio, ou seja, sem que ele
perceba (quem realizou as atividades propostas no encontro presencial da aula
passada deve se lembrar de ter feito algo semelhante usando o aplicativo telnet).
GET index.html
POST dados_formulrio
cliente
servidor
(solicita dados)
(envia dados)

Figura 3 Exemplo de uso dos comandos GET e POST numa aplicao http.
Prof. Alex Dias


6
Ao solicitar uma pgina na internet, o usurio deseja receber todos os seus
objetos (links, banners, imagens, textos, contadores, etc) e, dependendo do tipo de
pgina, podem existir muitos destes objetos para serem transferidos do servidor para
o cliente. Uma vez transferidos, os objetos ficam armazenados no computador do
usurio, num ambiente que chamamos de cache, no windows so os chamados
arquivos temporrios.
Ao contrrio do que muitos pensam, no protocolo http a conexo no
permanente, ou seja, ao trmino do envio de dados o servidor solicita, imediatamente,
o encerramento da conexo. Por outro lado, na verso atual do protocolo, o http
mantm conexes persistentes que ficam ativas enquanto houver dados sendo
trocados entre o cliente e o servidor. Nas verses mais antigas do protocolo, para cada
objeto da pgina, o cliente tinha que solicitar uma nova conexo, imagine o quanto de
trfego de dados desnecessrios ocorria nesta situao.
Ainda com relao conexo, o http no mantm informaes de estado
(stateless) de forma que, mesmo que o cliente tenha acabado de encerrar a conexo e
deseje estabelecer uma nova, o servidor desconhece esta informao e trata este
cliente como se nunca o tivesse visto. Como alternativa para que o cliente leve
consigo algumas informaes importantes ao conectar-se com o servidor, foram
criados os chamados cookies que so arquivos no formato texto, armazenados
temporariamente nos computadores dos clientes e que contm algumas informaes
sobre conexes realizadas anteriormente. Muito embora os cookies facilitem novas
conexes, tornando-as mais rpidas, algumas destas informaes podem conter dados
considerados sigilosos pelos clientes e que podem estar vulnerveis a acessos
indesejados de terceiros.
O cabealho do protocolo http contm todas as informaes importantes para
realizao de servios: data de criao do arquivo, tipo de dados, verso do protocolo
e at o idioma preferencial a ser utilizado. Cada dado transmitido pela internet carrega
o cabealho com as informaes que devem ser tratadas tanto pelo cliente, quanto
pelo servidor.
Um servidor http possui um arquivo de configuraes que permite ao
administrador da rede selecionar os parmetros de funcionamento que ele deseja.
Dentre os inmeros parmetros de configurao pode-se definir, por exemplo, qual o
tempo mximo que uma conexo se mantm ativa no caso do usurio desistir de
acessar o restante do contedo enquanto a pgina carregada, pode-se escolher em
qual diretrio do servidor ficaro os arquivos para serem acessados via web, tambm
possvel definir questes de segurana de acesso e vrias outras funcionalidades.
Prof. Alex Dias


7
Servidor Apache
O servidor web Apache foi criado em 1995 e hoje representa a maioria dos
servidores ativos no mundo. Outro servidor, tambm muito utilizado, o IIS que
nativo dos sistemas Windows Server e s pode ser instalado neste sistema
operacional, ao contrrio do Apache que apresenta verses que podem ser usadas
tanto nos sistemas operacionais linux quanto no windows.
O apache um software gratuito e de configurao relativamente fcil. Aps
sua instalao, necessrio configurar alguns parmetros nos arquivos de
configurao, faremos isso durante o encontro presencial desta semana, por enquanto
vamos apenas relacionar os principais arquivos de configurao que so inseridos no
servidor, automaticamente, aps a instalao do apache. Vamos considerar aqui o
servidor instalado usando o sistema operacional Linux Ubuntu e o Apache 2, neste
caso os arquivos de configurao esto dispostos em vrios diretrios (na verso 1 do
Apache e nas verses para windows usado apenas um nico arquivo de configurao
chamado httpd.conf).
No linux o diretrio de configurao do Apache o /etc/apache2, neste
diretrio encontramos:
apache.conf arquivo que contm as principais diretivas de configurao do
apache
ports.conf configuraes da porta lgica utilizada
/sites-available configuraes de hosts virtuais dos clientes
/sites-available hosts virtuais em atividade no servidor
Hosts virtuais so os diversos clientes que um servidor Apache pode abrigar,
imagine que um provedor de internet, por exemplo, possua vrios clientes que
hospedam suas pginas no mesmo servidor, porm em diretrios diferentes, cada
cliente possui um host virtual para ser acessado por qualquer pessoa na internet, o
qual atualizado pelo cliente sempre que este assim desejar.
Durante as atividades da aula presencial voc ter oportunidade de configurar
um servidor Apache e hospedar uma pgina pessoal para acesso dos clientes. Existem
inmeros roteiros disponveis na internet para este fim, apesar disso, um documento
passo-a-passo foi criado e estar disponvel para que voc obtenha sucesso no
experimento.

Você também pode gostar