Professional Documents
Culture Documents
Heitor Soares Ramos Filho Colaboracao: Bruno Lopes Vieira 3 de dezembro de 2007
Sum rio a
1 Princpios de aplicacoes de rede 1.1 Arquitetura cliente-servidor . . . . . . . . . . . . . . . . 1.2 Arquitetura peer to peer pura . . . . . . . . . . . . . . . 1.3 Arquitetura hbrida (cliente/servidor peer to peer) . . 2 Comunicacao na rede 3 Enderecamento 4 Servicos de transporte 5 Servico de resolucao de nomes DNS 2 2 3 3 4 5 6 8
6 A Web e o protocolo HTTP 10 6.1 O HTML e o protocolo HTTP . . . . . . . . . . . . . . . . . 10 6.2 Os Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6.3 Servidor Proxy . . . . . . . . . . . . . . . . . . . . . . . . 13 7 O protocolo FTP 8 Servico de correio eletr nico o 16 17
No captulo anterior discutiu-se o que s o redes de computa a dores e como elas funcionam. Entendendo de uma forma geral seu funcionamento, foi apresentada a Internet como uma rede de redes; a grande rede mundial que reune diversas redes em uma so. Faz-se agora necessario compreender a Internet mais a fundo. A partir daqui inicia-se a discuss o sobre os servicos disponveis na a Internet.
seja, todo o trafego seria primeiro deslocado a um agente interme diador que seria responsavel por envia-lo ao interlocutor. Em se tratando de mensagens de texto, o atraso n o seria muito grande, a apesar do trafego na rede ser duas vezes o necessario e o servidor pode car sobrecarregado caso haja muito cliente utilizando esse servico. Mas se estivermos utilizando chamadas de voz, al m do e trafego ser muito maior, a possibilidade dos atrasos atrapalharem a comunicacao aumentam muito. Ao se passar para aplicacoes de videoconfer ncia, o atraso seria inevitavel, haja vista que o trafego e para transmiss o de vdeo e extremamente maior. a
host a host. O servidor apenas manteria o controle dos arquivos fornecidos por cada estacao facilitando o sistema de busca (em vez de solicitar a cada host que informe seus arquivos disponveis, cada um o faria ao servidor apos a conex o e a busca seria diretamente a no servidor, que encaminharia o usuario ao host que possui o ar quivo de interesse do solicitante) e a ger ncia efetiva da rede. Isso e pode ser observado nas redes Napster, KaZaA e EDonkey. A escrita de aplicacoes que se comunicam em rede e realizada denindo protocolos em camada de aplicacao ou utilizando as de nicoes ja feitas. Por exemplo, para escrever um navegador Web n o se faz necessario denir novos protocolos de comunicacao dado a que o HTTP ja esta bem denido e documentado. Basta seguir a RFC-2616 e implementar o navegador Web. Caso deseje-se escrever um servico que ainda n o esta especicado, deve-se especicar a um novo protocolo de camada de aplicacao e apenas escolher qual servico e mais apropriado, o servico orientado a conex o ou o servico a n o-orientado a conex o. N o se faz necessario que o desenvolvea a a dor da aplicacao conheca, com detalhes, toda a infra-estrutura da rede, como por exemplo, como os dados ser o roteados entre os a hosts. Essa estrutura e possvel por causa da divis o em camadas a e o acoplamento entre essas camadas. Em qualquer uma dessas arquiteturas apresentadas anteriormente, as aplicacoes precisam se comunicar. Detalhes dessa co municacao esta descrito na proxima secao.
2 Comunicacao na rede
Para que uma aplicacao possa interagir com outras e necessario que estas troquem informacoes. Antes de prosseguir, dena-se um processo como um programa qualquer que esta sendo executado num sistema hospedeiro. Se essa comunicacao for efetuada no mesmo host, a troca de mensagens e estabelecida pelo Sistema Operacional numa comuni cacao interprocessos. No caso dos hosts serem sistemas diferentes, essa comunicacao e efetuada atrav s da troca de mensagens. Assim e sendo, ter-se-a dois tipos de processos: Processo cliente: processo que inicia a comunicacao; Processo servidor: processo que aguarda ser contactado (o processo ca em espera at que receba alguma mensagem). e Observa-se que em sistemas peer to peer ha processos cliente e servidor na mesma aplicacao, ja que hora ela se comporta como cliente, hora como servidor. 4
Essa troca de mensagens ocorre atrav s dos chamados sockets. e Os processos enviam uma mensagem atrav s de seu socket e tamb m e e recebem mensagens atrav s deles. Os Sockets denem e controlam e os m todos de entrada e sada das mensagens. e Um socket pode ser visto como uma porta onde um processo de envio empurra a mensagem para fora da porta e um processo de recebimento a deixa entrar. Os processos de envio e de recebimento conam na infra-estrutura de transporte oferecida pela rede. Diversas linguagens de programacao oferecem bibliotecas para facilitar a implementacao de sockets, ou seja, para facilitar o desenvolvimento de aplicacoes em rede. Os sockets s o identicados na Internet atrav s do enderecamento. a e Na proxima secao o enderecamento utilizado na Internet e discutido com mais detalhes.
3 Enderecamento
Para que um host possa ser localizado na rede, e preciso que ele possua um identicador unico, um endereco. Dessa forma, foi criado o conceito de enderecamento IP. Um conjunto de quatro by tes, ou seja, 32 bits, que identicara cada sistema, gerando numa representacao decimal, um bloco de quatro numeros de 0 a 255 (ex: 201.4.93.96). E importante frisar que essa estrutura de enderecamento e de nida pelo protocolo IPv4 (ver Information Sciences Institute University of Southern California, 1981), sendo que ja esta em fase de estudo (a transicao entre essas vers es ocorrera de forma muito o lenta) o IPv6 (ver Deering & Hinden, 1998). Entretanto sabe-se bem que e muito comum usar varias aplica coes num mesmo sistema (ex: navegar em paginas da Web enquanto se utiliza algum mensageiro instant neo e ouvir musica por uma a radio na Internet). Dessa forma apenas o endereco do host n o sera a suciente para efetuar a troca de mensagens, as aplicacoes dentro de um host tamb m devem ser identicadas de forma unica. Anal, e ao chegar uma mensagem, como o sistema podera encaminha-la a aplicacao correspondente se todas possuem o mesmo endereco, sem ter de envia-la a todas? Para resolver essa quest o utiliza a se o conceito de portas. Cada mensagem e encaminhada a um endereco associada a uma porta, havendo convencoes de portas comuns, conforme pode ser visto na tabela 1. Dessa forma, um socket e unicamente identicado na Inter net atrav s da tupxla IPorigem:Portaorigem IPdestino:Portadestino , e como ilustrado na Figura 1. Na gura, temos que o host A esta 5
Tabela 1: Tabela de convencao de algumas portas Porta Aplicacao 21 Servicos FTP 23 Acesso remoto Telnet 25 Envio de e-mail SMTP 80 Servico de navegacao Web rodando uma aplicacao que e identicada como processo 1. No host B tamb m esta rodando uma aplicacao e ela tamb m e idene e ticada como processo 1. Note que a identicacao das aplicacoes deve ser unica dentro de um mesmo host mas as aplicacoes po dem ter a mesma identicacao desde que estejam executando em hosts diferentes. O sistema operacional de cada host ira controlar a identicacao dessas aplicacoes. Dado que essas duas aplicacoes queiram se comunicar, um socket e estabelecido entre elas. Esse socket pode utilizar o servico orientado a conex o ou o servico n o a a orientado a conex o oferecidos pela camada de transporte. a
Figura 1: Elementos de um Socket Na proxima secao s o discutidos, com mais detalhes, os servicos a oferecidos pela camada de transporte.
4 Servicos de transporte
Ha varios servicos de transporte disponveis numa rede de com putadores. Antes de se discutir esses servicos, apresenta-se um breve resumo das necessidades de controle no transporte de mensagens. Aplicacoes de transfer ncia de arquivos (como FTP) e acesso re e moto a sistemas (Telnet) n o admitem perda de dados. Se um ara 6
quivo n o for transmitido por completo, o mesmo em geral n o pode a a ser utilizado, assim como o acesso remoto com perda de dados pode trazer varios problemas ao sistema. Entretanto aplicacoes de strea ming multimdia como transmiss o de audio online podem admitir a a perda de uma certa quantidade de dados, n o havendo perdas a consideraveis. Essa ultima tamb m exige um limite mnimo de banda para e transfer ncia (velocidade de transmiss o), assim como as de tee a leconfer ncia. Ha ainda aplicacoes que n o admitem atrasos na e a transmiss o de dados, como as de telefonia IP e jogos online. a A partir da, denem-se os servicos de transporte disponibiliza dos pelos dois principais protocolos de controle de transmiss o de a dados. Na Internet temos: TCP: apresenta a transmiss o de dados orientada a conex o (rea ` a quer conex o entre processos cliente e servidor), com transa porte conavel (caso algum pacote n o chegue ao destino o a mesmo sera retransmitido), controle de uxo (evita que o re ceptor seja sobrecarregado) e controle de congestionamento (evita que o canal de comunicacao que sobrecarregado); por m e n o oferece garantia de tempo de transmiss o e controle de a a banda passante. UDP: oferece transmiss o de dados n o-conavel sem nenhuma gaa a rantia de como dar-se-a o processo de transmiss o (uxo, con a gestionamento, temporizacao e banda). Dado o supracitado, surge a quest o: que protocolo de transa fer ncia utilizar? Em se tratando de aplicacoes que requerem cone abilidade, o TCP oferece todo o aparato necessario para esse con trole. Por m todos esses recursos exigem tempo de processamento. e Al m do que, n o interessa a uma streaming multimdia online a ree a transmiss o de um pacote perdido, visto que o tempo de execucao a desse ja passou. Para esse tipo de aplicacao, que requer velocidade na transmiss o, o UDP apresenta-se como uma melhor alternativa. a Vale salientar que pode-se utilizar o UDP com conabilidade, desde que seja implementado o servico de conabilidade diretamente na aplicacao. Esta opcao raramente e utilizada pois, como ja foi dito anteriormente, o desenvolvedor, em geral, deve escolher o servico que melhor se adeque a sua aplicacao. No caso de uma aplicacao ` que n o se adeque nem ao TCP e nem ao UDP, essa opcao pode ser a util mas o seu desenvolvimento sera, certamente, mais complexo. O UDP tamb m n o oferece garantias de tempo de entrega e nem e a de taxa de transmiss o. Esses servicos ainda est o sendo desenvola a vidos na Internet. Atualmente, as aplicacoes que necessitam tem 7
pos de resposta mais baixo e n o necessitam de conabilidade, opa tam por UDP pois os controles de uxo e congestionamento presentes no TCP podem diminuir a taxa de transmiss o de uma conex o. a a Nas proximas secoes ser o discutidos alguns protocolos de aplicacao a frequentemente encontrados na Internet.
pelo nome ftp.ufal.br e www.ufal.br, por exemplo, e tamb m a e todos os domnios abaixo de ufal.br. Por exemplo temos o domnio tci.ufal.br do Instituto de Computacao da UFAL. Por sua vez, re cursivamente, os servidores que respondem por www.tci.ufal.br, ftp.tci.ufal.br, por exemplo, cam nos servidores DNS do TCI que est o cadastrados no servidor de DNS da UFAL. a Inicialmente o controle do DNS dos registros brasileiros cou com a Fapesp (Fundacao de Amparo a Pesquisa do Estado de S o Paulo), ` a mas, recentemente, esse controle passou para o comit gestor da e Internet brasileira (CGI BR). No site http://registro.br pode-se inclusive vericar quem s o os proprietarios de determinado domnio e/ou efetuar o registro a de um domnio que esteja disponvel. A quest o agora e: como funciona a resolucao de nomes? Pria meiro e importante saber que a resolucao de nomes e feita da di reita para a esquerda, separando-se por pontos (.) as subredes. Ou seja, o endereco www.ufal.br e resolvido da seguinte forma: br: acessam-se os servidores raiz (treze servidores espalhados pelo planeta que respondem pelas primeiras chamadas da resolucao de nomes) identicando-se ao servidor de qual pas sera redirecionado para o restante do processo, no caso br indica que deve ser redirecionado ao servidor do Brasil. ufal: no servidor do Brasil, identica-se quem e responsavel pela traducao do domnio ufal: kharma.ufal.br 200.17.114.40. www: acessando o servidor DNS do domnio ufal, verica-se que www corresponde a 200.17.114.38, retornando ao host que o solicitou para que o acesso desejado possa ser efetuado. Com a utilizacao do DNS, deni-se uma forma universal para acessar objetos na Internet, a URL (Uniform Resource Locator). A URL e utilizada para acesso a qualquer objeto depositado na Internet atrav s de qualquer servico. A URL tem o seguinte formato: e protocol://server-name.domain-name.top-level-domain: port/directory/filename ex: http://www.healthyway.com:8080/exercise/mtbike.html ftp://ftp.company.com/freeware/progra.exe
10
HEAD: solicita ao servidor que algum elemento seja ignorado a res` posta. Um exemplo de utilizacao do protocolo HTTP esta ilustrado na gura 2. Nesta gura, um cliente abre uma conex o com o servidor a Web da UFAL (em geral na porta 80) e solicita a pagina index.html. O servidor responde com um codigo informando que a pagina existe e transfere a pagina para o cliente. O protocolo HTTP e conhecido por ser stateless, ou seja, n o a mant m as conex es. A cada pedido por um objeto, o servidor o e o transfere e encerra a conex o. Com isso, cada vez que uma ligacao a leva a um servidor Web e aberta uma nova conex o com o este ser a vidor. Essa caracterstica e utilizada no servico Web pois, em geral, baixamos uma pagina, lemos o que nos interessa, e depois nave gamos por paginas no mesmo servidor ou em outros servidores, dependendo de para onde a ligacao (link) nos leva. O fato de n o a manter a conex o faz com que os servidores possam manter mais a clientes pois a manutencao de conex o por tempos longos gera uma a sobrecarga no servidor. Perceba que para manter uma conex o o a servidor deve ter o registro de todos os clientes ativos. Se essa conex o demorasse, a memoria do servidor poderia car cheia caso a varios clientes conectassem simultaneamente. N o manter a co a nex o diminui as chances de muitos clientes estarem conectados a simultaneamente nos servidores e os sobrecarregarem.
Figura 2: Exemplo de acesso HTTP Com sua evolucao, surgiu o HTTP 1.1 (vers o atualmente em uso), a que acrescenta os seguintes comandos: PUT: envia um arquivo ao servidor Web. DELETE: apaga um arquivo no servidor Web. Al m disto, o HTTP 1.1 melhora o desempenho, modicando a e forma como as conex es s o realizadas. Por exemplo, a transo a fer ncia de uma pagina com 10 guras necessitaria a abertura de e 11 conex es do cliente com o servidor ao utilizar o HTTP 1.0. Uma o 11
conex o para trazer a pagina e mais dez conex es para trazer cada a o uma das imagens. Utilizando HTTP 1.1 seria necessario apenas uma conex es para trazer a pagina e as outras dez imagens. Esse fato o aumenta o desempenho do protocolo HTTP al m de alivar a sobree carga para a abertura dessas conex es no servidor. Essa caraco terstica e conhecida como persist ncia, pois a conex o persiste at e a e que todos os arquivos sejam transferidos. O HTTP continua stateless por m, com o uso da persist ncia, apresenta melhor desempenho e e no caso de paginas com varios objetos (muito comum nas paginas atuais onde encontramos varias imagens, animacoes e aplicacoes embutidas). Observe-se ainda na gura 2 que junto com o arquivo de res posta, o servidor envia anteriormente um codigo. E atrav s desse e codigo que o navegador identica o tipo de resposta enviada. Na tabela 2 ha alguns dos principais codigos de resposta HTTP. Tabela 2: Codigos de resposta HTTP Signicado Requisicao efetuada com sucesso; arquivo anexo. Objeto movido permanentemente para <destino>. Servidor n o entende a mensagem enviada. a Objeto n o encontrado. a Vers o do HTTP n o suportada pelo servidor. a a
Note-se que os codigos iniciados em 2 signicam que o processo correu normalmente, em 3 uma modicacao no servidor, em 4 um erro na solicitacao e em 5 erro no servidor. Sendo ainda que os iniciados em 1 s o apenas mensagens informativas. a
6.2 Os Cookies
Uma outra quest o interessante e: como personalizar paginas a para um usuario? Em outras palavras, como os sites, por exem plo, mecanismos de sempre identicar o ultimo usuario a efetuar login, ja que a resposta do HTTP seria sempre o mesmo site, sem ser necessario que ele efetue login novamente? O fato do HTTP ser statless faz com que seja mais difcil identi car o usuario. Por exemplo, no FTP, a conex o e mantida at que a e o usuario desista dela. Esse fato facilita a identicacao do usuario pois a secao e mantida. Como ja foi explicado, o HTTP n o mant m a e essa conex o e para cada requisicao nova o HTTP entende como se a fosse um novo cliente. Para isso se usam os chamados cookies, que s o pequenos ara 12
quivos de texto que guardam informacoes para personalizacao de paginas. Atrav s deles, via HTML a pagina l seus conteudos e e e redene-se para prover maior interatividade e customizacao. Al m e disso, os cookies podem ser utilizados para manter informacoes de estado em varios processos, como, por exemplo, um carrinho de compras de uma loja virtual. Supondo que no meio de uma selecao para compras falte energia, caso sejam implementados cookies o usuario, ao retornar ao site tera sua selecao de acordo com o ultimo estado. Ainda outras funcionalidades s o atribudas aos cookies, como a obtencao de informacoes para tentar melhorar mecanismos de bus cas.
GET www.ufal.br/index.html
200 <index.html>
Servidor Web
Figura 3: Acesso a Internet atrav s de um proxy ` e ele consegue economizar a quantidade de dados que ser o baixados a no caso de varias requisicoes iguais feitas pelos clientes de uma rede. Por exemplo se dois usuarios acessam a pagina da UFAL, o servidor proxy so precisa traz -la uma unica vez e entregar aos dois e usuarios. Caso o proxy n o contenha o objeto solicitado no seu cache, ele a acessara o servidor Web externo. Para evitar problemas caso o objeto seja atualizado (evitar que o usuario n o consiga acesso a objetos mais recentes), o servidor a proxy sempre verica se a data de atualizacao do objeto requisitado esta mais nova do que a data do objeto que ele tem armazenado. Caso isto ocorra, ele ignora o objeto que esta armazenado no repo sitorio local e baixa o objeto mais atualizado, substituindo o objeto obsoleto. O servidor proxy consegue identicar quando o objeto esta obsoleto pois ele realiza o m todo conhecido por GET condicional, e ou seja, baixa o arquivo apenas se a data de atualizacao daquele arquivo for mais recente do que uma data especicada (a data de atualizacao do arquivo armazenado no repositorio local) e n o baixa a caso a data do arquivo localizado no servidor externo seja menor ou igual a do repositorio local. 14
Dessa forma a gura 4 ilustra o acesso atrav s de um proxy com e cache onde este possui o objeto solicitado (cache-hit) e a gura 5 o caso similar, so que o servidor n o possui o objeto e tera de efetuar a a solicitacao ao servidor Web (cache-miss).
Cache
Figura 4: Cache-hit
200 <index.html>
Servidor Web
Figura 5: Cache-miss
15
7 O protocolo FTP
Como forma de melhorar a troca de arquivos numa rede de computadores, criou-se um protocolo destinado exclusivamente a ` transfer ncia de arquivos, o FTP (File Transfer Protocol). Ele pere mite o download e upload de arquivos utilizando comando textuais simples e intuitivos. Por se tratar da transfer ncia de arquivos, e necessario que a e transfer ncia seja conavel. Em outras palavras, e necessario que e haja garantia de que o arquivo recebido n o esteja corrompido e que a este n o seja acessado por usuarios indevidos. Por isso o protocolo a FTP e utilizado sobre o TCP. A porta padr o do protocolo FTP e a a 21. A partir da conex o ao servidor, o usuario informa seu nome de a usuario e senha e que arquivo deseja efetuar download ou upload, iniciando-se uma conex o para transfer ncia de dados na porta 20. a e Com isto o FTP e tido como um protocolo onde o controle e fora da banda, ou seja, os comandos s o realizados em uma conex o TCP a a diferente da conex o que transfere os arquivos. a Um exemplo de conex o FTP, onde o comando get solicita um a arquivo e o comando put envia um arquivo ao servidor, seria: open ftp.ufal.br 220 ProFTPD 1.3.0 Server (UFAL) [192.168.0.4] Name (ftp.ufal.br:heitor): foo 331 Password required for foo. Password: 230 User foo logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> get meu_arquivo.txt 200 PORT command successful 150 Opening BINARY mode data connection for meu_arquivo.txt (79 bytes) 226 Transfer complete. 79 bytes received in 0.42 secs (0.2 kB/s) ftp> put outro_arquivo.txt local: outro_arquivo.txt remote: outro_arquivo.txt 200 PORT command successful 150 Opening BINARY mode data connection for outro_arquivo.txt 226 Transfer complete. 79 bytes sent in 0.00 secs (2204.2 kB/s) ftp> bye 16
221 Goodbye.
Remetente
SMTP: foo@ufal.br
Servidor de Correio
SMTP: foo@ufal.br
Destinatario
POP: foo@ufal.br
Servidor de Correio
Figura 6: Transfer ncia de mensagem de correio eletr nico dentre e o um usuario remetente a um destinatario O detalhe e que o protocolo SMTP n o e utilizado para receber as a mensagens de correio eletr nico, apenas para transmit-las. Ent o, o a 17
como um usuario pode ter acesso a suas mensagens? Observe-se ainda na gura 6 que o destinatario usa o protocolo POP (Post Ofce Protocol porta 110) para receber suas mensagens. Ou seja, para transmitir mensagens de correio eletr nico, e utilizado o protocolo o SMTP. Para solicita-las ao servidor, utiliza-se o protocolo POP. Vale ressaltar que ha outros protocolo de recebimento de mensagens de correio eletr nico, o IMAP (Internet Message Access Protocol porta o 465 ). O IMAP oferece mais recursos ao usuario como a possibili dade de manutencao de pastas dentro do servidor. O protocolo POP e mais simples e mais leve para o servidor enquanto que o proto colo IMAP tem mais recursos sendo que consome mais recursos do servidor.
Refer ncias e
Deering, S. & Hinden, R. (1998), Internet protocol: Darpa internet program. URL http://www.ietf.org/rfc/rfc0791.txt, RFC 2460, ultima consulta em novembro de 2007. Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P. & Berners-Lee, T. (1999), Hypertext transfer protocol http/1.1. URL http://www.ietf.org/rfc/rfc0791.txt, RFC 2616, ultima consulta em novembro de 2007. Information Sciences Institute University of Southern California (1981), Internet protocol: Darpa internet program. URL http:// www.ietf.org/rfc/rfc0791.txt, RFC 791, ultima consulta em novembro de 2007. World Wide Web Consortium (1999), HTML 4.01 specication. URL http://www.w3.org/TR/REC-html40/, ultima consulta em no vembro de 2007.
18