• Nenhum resultado encontrado

Javascript, Applets, CGI e Java Servlets Convém ao usuário da World Wide Web ter um entendimento

básico das ações que acontecem quando uma página é acessada. Muitas páginas Web atualmente são acompanhadas por animação e som. Essas ações geralmente são controladas por unidades de programa executadas no computador do usuário. O servidor Web transfere suas unidades de programa à máquina do usuário juntamente com o documento HTML que define a página Web. Duas linguagens populares para desenvolver tais unidades de programa são a Javascript (desenvolvida pela Netscape Communications, Inc) e o Java (desenvolvido pela Sun Microsystems). No caso do Java, as unidades de programa são chamadas applets.

Por outro lado, há casos em que, quando o usuário está acessando uma página, ele pode causar a execução de um programa na máquina que contém o servidor que forneceu a página. Por exemplo, o usuário pode fazer um pedido de compra ou iniciar uma pesquisa em um sítio de busca. (Um sítio de busca contém um banco de dados de ligações para páginas da Internet.) Existem duas técnicas populares para implementar essas ações iniciadas pelo usuário. Uma é para o navegador do usuário iniciar a execução do programa seguindo um conjunto de protocolos conhecido como CGI (Common Gateway Interface). A outra é para o navegador do usuário iniciar a execução de um programa Java conhecido como Servlet.

Em síntese, o acesso a páginas Web pode resultar na execução de programas na máquina do usuário e na do servidor. Nos dois casos, a execução do programa em uma máquina é iniciada pela outra. Por sua vez, o uso de tais características representa uma possível ameaça à segurança. A máquina do usuário deve assegurar que as unidades de programa que acompanham as páginas da Web não realizem ações maliciosas, e a máquina do servidor, que os clientes em visita às páginas da Web não poderão ter acesso generalizado à máquina, maior do que o pretendido.

A abordagem em camadas para o software da Internet

A principal tarefa de um software de rede é prover a infra-estrutura neces- sária para transmitir mensagens de uma máquina para a outra. Na Internet, essa atividade de troca de mensagens é reali- zada por meio de uma hierarquia de uni- dades de software que executam tarefas similares às que seriam feitas se você fos- se mandar um presente em um pacote a um amigo que reside na costa leste dos EUA, supondo que você esteja na costa oeste (Figura 3.17). Mais especificamen- te, você iria embrulhar o presente e escre- ver o endereço apropriado no lado de fora do pacote. Então, o levaria a uma empre- sa prestadora de serviços de entrega, como o correio. Esta poderia colocar o pacote juntamente com outros em um contêiner maior e entregá-lo a uma companhia aé- rea cujos serviços foram previamente con- tratados. Esta colocaria o contêiner em um avião e o levaria até a cidade destino, tal- vez com paradas intermediárias no decor- rer da viagem. No destino final, a compa- nhia retiraria o contêiner do avião e o levaria a um escritório da entregadora. Por sua vez, esta retiraria o pacote do contêiner e o en- tregaria a seu amigo.

Em resumo, o transporte do presen- te é realizado por uma hierarquia de três níveis: (1) o nível do usuário (referente a você e seu amigo), (2) a companhia en- tregadora e (3) a companhia aérea. Cada nível utiliza o nível inferior mais próximo como uma ferramenta abstrata. (Você não se preocupa com os detalhes da compa- nhia entregadora, e esta não se preocupa com as operações internas da companhia aérea.) Em cada nível de hierarquia, po- dem ser identificados remetentes e desti- natários, sendo que os destinatários exer- cem um papel oposto ao dos seus parceiros remetentes.

É o que ocorre com o software que controla a comunicação na Internet, exce- to pelo fato de haver quatro níveis, e por cada um destes níveis, chamado camada, ser formado por um conjunto de rotinas

Figura 3.17 Exemplo de transporte de pacote.

de software, em vez de pessoas e negócios. As quatro camadas são conhecidas como de aplicação, transporte, rede e ligação (Figura 3.18). Todas elas estão presentes em cada máquina da Internet. Uma mensagem geralmente se origina na camada de aplicação. De lá, é passada para as camadas de transporte e de rede, onde é preparada para a transmissão, e finalmente é transmitida pela camada de ligação. A mensagem é recebida pela camada de ligação no destinatário e passa de volta pela hierarquia até ser entregue à camada de aplicação do destinatário.

Vamos investigar esse processo mais profundamente, rastreando a mensagem em seu caminho no sistema (Figura 3.19). Começaremos nossa jornada na camada de aplicação.

A camada de aplicação consiste em unidades de software que necessitam da comunicação pela Internet para desempenhar as suas tarefas. Embora os nomes sejam similares, essa camada não se res- tringe ao software classificado como de aplicação apresentado na Seção 3.2. De fato, muitas unidades consideradas parte da camada de aplicação da Internet seriam consideradas software utilitário, de acordo com o esquema de classificação da Seção 3.2. Um exemplo é uma coleção de rotinas para a transferência de arquivos pela Internet que use um protocolo conhecido como Pro- tocolo de Transferência de Arquivos (File Trans- fer Protocol — FTP). Essas rotinas são comumente im- plementadas como um pacote completo de software conhecido como FTP, em referência ao protocolo subja- cente. Outro exemplo é o pacote telnet, desenvolvido como meio para permitir que uma pessoa tenha acesso a uma máquina na rede com se ela fosse a usuária local da má- quina. FTP e telnet foram pensados originalmente como

software de aplicação de acordo com o critério da Seção

3.2, mas atualmente fazem parte da infra-estrutura en- contrada na maioria dos computadores pessoais. De fato, essas unidades de software agora são usadas como fer- ramentas abstratas na construção de aplicações maio- res, como os navegadores da Web. Nesse sentido, elas se Figura 3.18 As camada de software da Internet.

tornaram software utilitário. Outro exemplo desse fenômeno é a coleção de rotinas de software que imple- mentam o Protocolo Simples de Transferência de Correio (Simple Mail Transfer Protocol — SMTP), que atualmente é um pacote utilitário usado pelos servidores de correio quando transferem correspondência eletrônica.

A camada de aplicação usa a de transporte para enviar e receber mensagens pela Internet de um modo muito parecido à maneira como você usaria uma companhia entregadora para enviar e receber pacotes. Assim como é sua responsabilidade fornecer um endereço compatível com as especificações da companhia entregadora, é responsabilidade da camada de aplicação fornecer um endereço compatível com a camada de transporte. Com vistas a cumprir esta exigência, é que a camada de aplicação solicita ao servidor de nomes da Internet que converta endereços mnemônicos usados por pessoas em endereços IP compatíveis com a Internet.

A principal tarefa da camada de transporte é aceitar as mensagens da camada de aplicação e assegurar que elas estejam formatadas adequadamente à transmissão pela Internet. Para isso, a camada de transporte divide as mensagens longas em pequenos segmentos, que são transmitidos como unidades individuais. Essa divisão é necessária porque uma única mensagem longa pode obstruir o fluxo de outras mensagens nos pontos da Internet onde numerosas mensagens cruzam seus caminhos. Sem dúvida, pe- Figura 3.19 Acompanhamento de uma mensagem pela Internet.

quenos segmentos de mensagem podem se entrelaçar nesses pontos, enquanto uma mensagem longa força os outros a esperar até que ela passe (similar aos carros que esperam um longo trem passar pelo cruzamento).

A camada de transporte adiciona números de seqüência a esses pequenos segmentos que ela pro- duz, de modo que eles podem ser reagrupados no destino da mensagem. Então, anexa o endereço de destino a cada segmento e entrega esses segmentos endereçados, conhecidos como pacotes (packets) à camada de rede. A partir desse ponto, os pacotes são tratados individualmente, sem relação com as mensagens, até que atinjam a camada de transporte do destino. É possível que os pacotes de uma mensa- gem sigam caminhos diferentes ao longo da Internet.

A camada de rede é responsável por verificar se os pacotes recebidos são repassados de uma rede da Internet para outra até que atinjam seu destino. Assim, é a camada de rede que deve lidar com a topologia da Internet. Se o caminho de um pacote específico através da Internet deve passar por muitas redes individuais, é a camada de rede em cada parada intermediária que determina a direção na qual o pacote dever ser enviado. Isso é feito acrescentando-se um endereço destinatário intermedi- ário a cada pacote, de acordo com as seguintes normas: “Se o destino final do pacote estiver dentro da rede corrente, o endereço anexado será uma duplicata do endereço final do destinatário; caso contrá- rio, o endereço anexado será o do roteador da rede corrente, por onde o pacote deve passar para ser transferido para uma rede adjacente.” Deste modo, o pacote destinado a uma máquina dentro da rede corrente será enviado a ela, e o pacote destinado a uma máquina externa a ela continuará a sua jornada rede a rede.

Uma vez determinado o destino intermediário do pacote, a camada de rede anexa esse endereço ao pacote e o entrega à camada de ligação.

A responsabilidade da camada de ligação é a de lidar com os detalhes da comunicação com a rede específica em que a máquina se encontra. Se esta rede for do tipo anel de símbolos, a camada de ligação terá de aguardar o recebimento do símbolo antes de realizar sua transmissão. Se a rede usar um protoco- lo CSMA/CD, a camada de ligação terá de esperar por um silêncio na via antes de começar a transmitir. Além disso, cada rede individual dentro da Internet possui o seu próprio sistema de endereços, que é independente do sistema usado pela Internet. Afinal de contas, muitas dessas redes já funcionavam por si próprias bem antes de se associarem à Internet. Assim, a camada de ligação terá de traduzir os endereços da Internet anexados aos pacotes para um sistema local apropriado de endereços.

Cada vez que um pacote é transmitido, ele é recebido pela camada de ligação da máquina recep- tora. É então enviado à camada de rede, onde o destinatário final é comparado com a localização corren- te. Se não coincidirem, a camada de rede anexará um novo endereço intermediário ao pacote e o devol- verá à camada de ligação para retransmissão. Dessa maneira, cada pacote salta de uma máquina para outra a seu modo, até o seu destino final. Note que apenas as camadas de ligação e de rede estão envol- vidas nas paradas intermediárias (veja novamente a Figura 3.19).

Se a camada de rede constatar que um pacote recebido alcançou seu destino final, ela o enviará à camada de transporte. Ao receber os pacotes da camada de rede, a de transporte extrai os segmentos e reconstitui a mensagem original de acordo com os números de seqüência que foram fornecidos pela camada de transporte na máquina de origem. Uma vez que a mensagem esteja completa, será enviada à camada de aplicação — completando assim o processo de transmissão de mensagens.

A determinação de qual aplicação deve receber uma nova mensagem é uma tarefa importante da camada de transporte. Isto é feito atribuindo um número único de porta (nada a ver com as portas de E/ S discutidas no Capítulo 2) às várias unidades de aplicação e exigindo que a aplicação que envia a mensagem coloque o número apropriado da porta no endereço da mensagem antes que esta inicie a sua jornada. Assim, quando a mensagem tiver sido recebida pela camada de transporte do destino, esta necessitará apenas enviar a mensagem ao software de aplicação instalado no número designado da porta. Os usuários da Internet raramente precisam se preocupar com números de porta, uma vez que as aplicações comuns possuem números aceitos universalmente. Por exemplo, se um navegador Web for solicitado recuperar o documento cujo URL é http://www.zoo.org/animals/frog.html ele sabe- rá que o contato com o servidor HTTP em www.zoo.org é feito pela porta de número 80. De modo

semelhante, quando transfere um arquivo, um cliente FTP sabe que deve procurar o servidor FTP na porta de número 21.

Em resumo, as comunicações na Internet envolvem a interação de quatro camadas de software. A camada de aplicação lida com mensagens e endereços do ponto de vista da aplicação. A de transporte converte essas mensagens em pacotes compatíveis com a Internet e reconstitui as mensagens recebidas antes de entregá-las à aplicação apropriada. A camada de rede lida com o direcionamento dos pacotes através da Internet. A de ligação trata da transmissão propriamente dita dos pacotes de uma máquina para outra em uma mesma rede. Com toda essa atividade, é espantoso que o tempo de resposta da Internet seja medido em milissegundos. De fato, a maioria das transações parece ocorrer instantanea- mente.

O protocolo TCP/IP

A demanda por redes abertas gerou uma necessidade de padronização, por meio da qual os fabri- cantes pudessem construir equipamentos e softwares compatíveis com os produtos de outros fabricantes. Um desses padrões é o modelo de referência da Open System Interconnection (OSI), produzido pela International Organization for Standardization — ISO. Este padrão se baseia em uma hierarquia formada por sete níveis, em vez dos quatro adotados pela Internet. Tornou-se um modelo muito citado, pois conta com o apoio de uma organização internacional, porém não foi prontamente implementado, pois, antes de ser concluído, o protocolo TCP/IP já tinha sido desenvolvido, implementado, amplamente divulgado e tido a sua confiabilidade comprovada, tornando-se o sistema de protocolos da Internet.

O pacote TCP/IP é um conjunto de protocolos que implementa a hierarquia de quatro níveis descrita. De fato, os protocolos TCP (Transmission Control Protocol) e IP (Internet Protocol) são os nomes de apenas dois dos protocolos dessa coleção. Assim, o fato de todo o conjunto ser denominado protocolo TCP/IP é, no mínimo, impróprio. Mais precisamente, o protocolo TCP define uma versão da camada de transporte. Dizemos uma versão porque o protocolo TCP/IP apresenta dois modos de implementar a cama- da de transporte, sendo o segundo definido pelo protocolo UDP (User Datagram Protocol). Isso se assemelha ao fato de você poder escolher uma determinada companhia entregadora, dentre as várias dispo- níveis, sendo que cada uma oferece o mesmo serviço básico, porém com suas características próprias. Assim, dependendo da qualidade de serviço almejada, o software da camada de aplicação pode optar pelo envio dos dados ou pela versão TCP ou UDP da camada de transporte (Figura 3.20).

Há duas diferenças básicas entre o TCP e o UDP. A primeira é que, antes de enviar uma mensagem solicitada pela camada de aplicação, a camada de transporte baseada em TCP envia uma mensagem à camada de transporte do destinatário, informando que uma mensagem está para ser enviada. Espera então que esta seja reconhecida, antes de enviar a mensagem

da camada de aplicação. Desta forma, pode-se dizer que a ca- mada de transporte do TCP estabelece uma conexão antes de enviar a mensagem. A camada de transporte baseada no UDP não estabelece tal conexão. Ela apenas envia a mensagem ao endereço dado, sem ao menos saber se a máquina destinatária se encontra operante. Por isso, o UDP é considerado um proto- colo sem conexões.

A segunda diferença básica entre os protocolos TCP e UDP é que a camada de transporte do TCP trabalha, tanto na origem como no destino, por meio de reconhecimento e retrans- missão de segmentos, para certificar-se de que todos os seg- mentos da mensagem tenham sido transferidos com sucesso aos seus destinos. Por isso, o TCP é reconhecido como um pro- tocolo confiável, enquanto o UDP, que não oferece tal serviço de retransmissão, é considerado não-confiável. Isso não significa

de transporte baseada em UDP é mais aerodinâ- mica do que uma baseada em TCP, porém se uma aplicação for preparada para manipular as possí- veis conseqüências do uso do UDP, esta opção poderá ser a melhor. Por exemplo, o correio ele- trônico normalmente é enviado usando TCP, mas as comunicações feitas entre os servidores de no- mes quando traduzem endereços na forma mne- mônica para a forma IP usam UDP.

O protocolo IP é o padrão da Internet para a sua camada de rede. Uma de suas característi- cas é que, toda vez que uma camada de rede de IP enviar um pacote à camada de ligação, ele anexará um contador de saltos (hop count), nú- mero indicativo do tempo limite de permanên- cia estabelecido para este pacote na rede. Este valor indica o número máximo de vezes que esse pacote poderá ser retransmitido de um nó a ou- tro, durante a sua tentativa de encontrar o seu caminho pela Internet. Toda vez que a camada de rede do protocolo IP remeter um pacote, ela diminuirá o contador correspondente em uma unidade. Com base neste esquema, a camada de rede pode proteger a Internet, evitando que pa- cotes possam circular eternamente dentro do sis- tema. Embora a Internet continue crescendo dia- riamente, um contador de saltos com valor inicial 64 se mostra mais do que suficiente para garan- tir que um pacote possa encontrar a sua trajetó- ria através do labirinto das redes locais, de lon- ga distância e dos roteadores existentes.

POP3 versus IMAP

Os usuários da Internet que obtêm serviços de correio eletrônico via conexão telefônica discada devem ter ouvido falar e até talvez devem ter tido de escolher entre POP3 e IMAP. Esses são os protocolos normais pelos quais um usuário de um computador remoto (geralmente um computador de mesa ou portátil) pode ter acesso às mensagens recebidas por um servidor de correio e guardadas na caixa postal do usuário. POP3 é abreviação de Post Office Protocol — Version 3 e é o mais simples dos dois. Com o POP3, o usuário pode transferir (“fazer download”) mensagens para seu computador pessoal, onde elas podem ser lidas, armazenadas em várias pastas, editadas e manipuladas segundo as necessidades do usuário. Essa atividade acontece na máquina local do usuário, utilizando seu sistema de armazenamento em massa. Se, depois de ter lido e processado seu correio matinal em um computador, mais tarde o usuário em outra máquina fizer contato com o servidor de correio, tudo o que estará disponível para ele se resume a uma lista de mensagens em sua caixa postal. IMAP, abreviação de Internet Mail Access Protocol, permite ao usuário criar pastas e organizar mensagens na mesma máquina do servidor de correio. Dessa maneira, um usuário que precise ter acesso a sua correspondência de diferentes computadores pode manter os registros de correio acessíveis a qualquer computador remoto que venha a utilizar. Assim, o IMAP exige um serviço de mais alto nível do provedor da Internet que mantém o servidor de correio, que por sua vez pode cobrar uma taxa mais alta para serviços de IMAP do que de POP3.

Q

UESTÕES

/E

XERCÍCIOS

1. Quais as camadas da hierarquia do software da Internet usadas para retransmitir uma mensagem recém-chegada para outra máquina?

2. Cite algumas diferenças entre uma camada de transporte baseada no protocolo TCP e outra baseada no UDP.

3. De que forma o software da Internet assegura que as mensagens não fiquem sendo eternamente retransmitidas de uma máquina para outra?

4. O que impede um computador hospedeiro da Internet de fazer cópias de todas as mensagens que passam por ele?

3.7 Segurança

Quando uma máquina é conectada a uma rede, ela se torna acessível a muitos usuários em poten- cial. Os problemas encontrados caem em duas categorias: acesso não-autorizado à informação e vanda- lismo. Uma abordagem para resolver o problema do acesso não-autorizado é o uso de senhas para con-

trolar o acesso à máquina e itens de dados particulares. Infelizmente, elas podem ser obtidas por diversos mei- os. Alguns usuários de computador simplesmente com- partilham suas senhas com os amigos — uma prática de ética questionável. Em outros casos, as senhas são rou-