Anotações
Apresentação de slides
Estrutura de tópicos
1
Modulo I
Internet Computing
  • Prof. Ismael H F Santos


2
Ementa
  • Modulo VII – Programação Web com Java
    • Internet
    • Networking
    • Arquitetura da World Wilde Web - WWW
    • URI e URL
    • Protocolo HTTP
    • Tecnologias do lado do Cliente
    • Tecnologias do lado do Servidor




3
Bibliografia
  • Linguagem de Programação JAVA
    •  Ismael H. F. Santos, Apostila UniverCidade, 2002
  • The Java Tutorial: A practical guide for programmers
    •  Tutorial on-line: http://java.sun.com/docs/books/tutorial
  • Java in a Nutshell
    •  David Flanagan, O´Reilly & Associates
  • Just Java 2
    •  Mark C. Chan, Steven W. Griffith e Anthony F. Iasi, Makron Books.
  • Java 1.2
    •  Laura Lemay & Rogers Cadenhead, Editora Campos
4
SOA
5
Network types
6
A typical portion of the Internet
7
A typical intranet
8
Portable and handheld devices in a distributed system
9
Web servers and web browsers
10
Computers in the Internet
11
Computers vs. Web servers in the Internet
12
SOA
13
Arquitetura TCP/IP
14
Conceptual layering of protocol software
15
Encapsulation as it is applied in layered protocols
16
Protocol layers in the ISO Open Systems Interconnection (OSI) model
17
OSI protocol summary
18
Internetwork layers
19
Routing in a wide area network
20
Routing tables for the later network
21
Pseudo-code for RIP routing algorithm
22
Simplified view of the QMW Computer Science network
23
Tunnelling for IPv6 migration
24
The TCP/IP Protocol Layers
25
Arquitetura TCP/IP
26
TCP/IP layers
27
Encapsulation in a message transmitted via TCP over an Ethernet
28
The programmer's conceptual view of a TCP/IP Internet
29
Internet address structure, showing field sizes in bits
30
Decimal representation of Internet addresses
31
IP packet layout
32
An Ethernet Packet
33
Design Strategies
  • The communication network is partitioned into the following multiple layers
    • Physical layer – handles the mechanical and electrical details of the physical transmission of a bit stream.
    • Data-link layer – handles the frames, or fixed-length parts of packets, including any error detection and recovery that occurred in the physical layer.
    • Network layer – provides connections and routes packets in the communication network, including handling the address of outgoing packets, decoding the address of incoming packets, and maintaining routing information for proper response to changing load levels.
34
Design Strategies (Cont.)
    • Transport layer – responsible for low-level network access and for message transfer between clients, including partitioning messages into packets, maintaining packet order, controlling flow, and generating physical addresses.
    • Session layer – implements sessions, or process-to-process communications protocols.
    • Presentation layer – resolves the differences in formats among the various sites in the network, including character conversions, and half duplex/full duplex (echoing).
    • Application layer – interacts directly with the users’ deals with file transfer, remote-login protocols and electronic mail, as well as schemas for distributed databases.
35
Firewall configurations
36
IEEE 802 network standards
37
Wireless LAN configuration
38
SOA
39
Arquitetura WWW
40
Arquitetura WWW
41
A Arquitetura WWW (cont)
42
Clientes WWW
  • Browsers
    • exibem e permitem a navegação através de documentos
    • exemplos
      • Netscape Navigator
      • Internet Explorer
      • Amaya
      • HotJava
      • NCSA Mosaic
      • Lynx
  • Máquinas de busca
  • Qualquer programa utilizando os serviços oferecidos por um servidor Web


43
Servidores WWW
  • Não necessitam ser dedicados
    • Exemplos
      • Apache
      • Internet Information Server (IIS)
      • Netscape Enterprise Server
      • NCSA httpd
      • Jigsaw

44
Conteúdo Estático x Conteúdo
Dinâmico
  • Conteúdo estático
    • ausência de um processamento adicional para entregar/exibir o documento
    • principal interação é pela navegação através de hiper-links
  • Conteúdo dinâmico
    • inclusão de processamento adicional além da pura entrega de documentos e interpretação das marcações HTML

45
Porque Conteúdo Dinâmico ?
  • Permitir que sistemas de informação aproveitem a infra-estrutura oferecida pela Web
    • simplicidade e portabilidade (em alguns casos) para os projetistas
    • infra-estrutura de distribuição para o projetista
    • simplicidade para o usuário final
      • browser como desktop
  • Aplicações
    • home banking, comércio eletrônico, bibliotecas digitais, máquinas de busca, etc.
46
SOA
47
Universal Resource Identifier (URI)
  • Como identificar os recursos (documentos)?
    • URL (Uniform Resource Locator)
  • Como recuperar um documento?
    • HTTP (Hypertext Transfer Protocol)
  • Como definir o formato do conteúdo dos documentos?
    • HTML (Hypertext Markup Language)

48
Sintaxe de URIs
  • RFC 1630: descreve a notação de URIs em um nível sintático
  • Separação em duas partes
    • URI = scheme “:” scheme-specific-part
  • Esquema
    • identifica o esquema de definição dos nomes (naming scheme)
    • IANA (Internet Assigned Numbers Authority) uma lista dos esquemas e referências para suas definições
  • Parte específica ao esquema
    • identificação propriamente dita de um objeto particular para um dado esquema
    • inteiramente dependente do esquema sendo utilizado

49
URL e URN
  • URI = scheme “:” scheme-specific-part







  • URL – Uniform Resource Locator
    • Identificação e localização de recursos através de endereços
  • URN – Uniform Resource Name
    • Identificação e localização de recursos através de nomes
  • Definem as semânticas para URIs
50
URL
  • Sintaxe para parte específica do esquema



  • Principais esquemas URL registrados (IANA)
    • file                 ldap                  prospero
    • ftp                 mailto               telnet
    • http               news                 wais
    • https             nntp
51
URL para esquema HTTP
  • URI engloba URL e URN


  • Exemplos de URL                                                   (esquema HTTP)


    • http://www.dimap.ufrn.br:80/~sbmidia2000/
    • http://www.telemidia.puc-rio.br/index.html
    • http://www.altavista.com/cgi-bin/query?q=client%2Fserver
    • http://139.82.95.14/index.html
52
SOA
53
HTTP – Hypertext Transfer Protocol
  • Objetivo original
    • capacidade de recuperar, de um servidor, documentos simples baseados na mídia texto
    • protocolo leve e rápido
  • Baseado em um modelo simples de arquitetura clienteservidor
    • pedido/resposta
    • protocolo sem estado
  • Utiliza um serviço de transporte confiável, orientado a conexão (TCP)
  • Protocolo mais utilizado na Internet, na atualidade
  • Versões: HTTP/0.9, HTTP/1.0 e HTTP/1.1
54
Mensagens HTTP/0.9
55
HTTP/1.0 – maio/96 (RFC 1945)
  • Permitiu ao servidor responder códigos de erro e informações sobre a entidade, por exemplo, o tipo de conteúdo.
    • Definiu o conceito de tipo de mídia
      • MIME – Multipurpose Internet Mail Extensions, como padrão para identificação de conteudo.
        • MIME possui arquitetura aberta permitindo a uma aplicação incorporar suporte a novos tipos de dados
  • Formato flexível de mensagem. O cliente passou a poder enviar dados ao servidor.
  • Mecanismos de autenticação.
56
Alguns MIME Types
57
Tipos MIME
  • text/plain - arquivo no formato texto (ASCII);
  • text/html - dosumento no formato HTML, o padrão para documentos Web;
  • application/zip - arquivo compactado;
  • image/gif - imagem codificada no formato GIF;
  • image/jpeg - imagem codificada no formato JPEG.


58
Mensagens HTTP/1.0
59
Cabeçalhos HTTP/1.0
  • General (requisição e resposta)
    • não se aplicam a entidades
  • Entity (requisição e resposta)
    • usados para transmitir meta-informações de uma entidade
  • Request (requisição)
    • contêm informações do cliente
  • Response (resposta)
    • contêm informações que não podem ser transmitidas na status-line

60
Modificações HTTP/1.1
  • Melhora no modelo de conexão TCP por requisição/resposta
    • HTTP persistente (P-HTTP)
      • Mantém uma conexão aberta durante várias requisições para um mesmo servidor
    • novos métodos de requisição
      • CONNECT, OPTIONS e TRACE
    • melhor suporte para cache
    • esquema mais seguro de autenticação
      • elimna a transferência de nome e senha de forma limpa
    • suporte à transferência parcial de entidades
    • suporte à negociação de conteúdo
61
Métodos de Requisição em HTTP/1.1
  • Cabeçalhos
62
Cabeçalhos HTTP
63
Mensagens HTTP/1.1
64
HTTP request message
65
Métodos de Requisição em HTTP/1.1
  • Métodos
    • GET - retorna o objeto, ou seja, a informação requisitada.
    • HEAD - retorna somente informações sobre o objeto, como tamanho, data de criação etc.
    • POST - envia informações para o servidor Web
    • PUT  - envia uma cópia de um objeto/informação para ser armazenado num servidor Web.
    • DELETE - apaga um objeto armazenado no servidor Web.
    • OPTIONS
    • CONNECT
    • TRACE
66
Pedido HTTP completo
67
Resposta HTTP
68
Resposta HTTP
  • Uma resposta HTTP é formada por três elementos:
    • Linha de status
      • indicando sucesso ou falha do pedido.
    • Descrição da informação
      • contida na resposta (Metainformação/MIME).
    • A própria informação que foi requisitada.

69
HTTP – Códigos de Retorno
  • A linha de status traz as seguintes informações:
    • A versão do protocolo HTTP;
    • O código de status que define o resultado do pedido;
    • Uma pequena frase explicando o que significa o código.
  • Código status é compostos de 3 dígitos, divididos em categorias em função do primeiro dígito
    • 1xx – informativo
    • 2xx – sucesso
    • 3xx – redireção
    • 4xx – erro do cliente
    • 5xx – erro do servidor
  • Podem ser estendidos
70
Resposta HTTP - Status
  • Os principais códigos de status existentes:
    • 200 (Document follows) - pedido bem sucedido. A informação requisitada será retornada.
    • 401 (Unautorized) - a informação requisitada é de acesso restrito, sendo necessário se autenticar.
    • 403 (Forbidden) - acesso proibido.
    • 404 (Not found) - a informação requisitada não foi encontrada ou teve permissão de acesso negada. A primeira opção é muito freqüente na Internet e pode ocorrer por erro de digitação de uma URL.
    • 500 (Server Error) - erro no servidor Web. Comum quando da execução de scripts.
71
HTTP reply message
72
Resposta HTTp
73
Proxy
  • Motivação
    • Cache
      • redução de carga no servidor e do trafego na conexão com a Internet
      • redução do tempo   de resposta para      os usuários
    • Segurança
      • filtragem de requisições
      • conversão de protocolos
74
Proxy – Cenários de uso
75
Criticas HTTP
  • Sem estado
    • requisições em paralelo numa mesma conexão precisam ser enfileiradas
  • Implementação integral complexa
  • Fundamentado no TCP como protocolo de transporte
  • Requisições em um único sentido
  • Ausência de um padrão para definição de extensões
  • Mecanismo de negociação de conteúdo ainda restrito


76
Cliente e servidor HTTP
77
Principais métodos HTTP (requisição)
78
Comunicação HTTP
79
SOA
80
Plug-ins
  • Tecnologia originalmente projetada pela Netscape
    • Netscape Navigator 2.0
    • Internet Explorer 3.0 passou também a oferecer suporte
  • Permite também que aplicações existentes sejam facilmente integradas à Web
  • Principal utilidade: exibir conteúdo cujo formato não é tratado pelo browser
    • conteúdos específicos das aplicações (PDF, PostScript, etc), áudio, vídeo
81
Plug-ins
  • Módulo de código separado que se comporta como se fosse parte do browser
    • associado a um ou mais tipos de mídia (tipo MIME)
    • biblioteca de código nativo C
      • específico a uma plataforma (sistema operacional)
      • dependente da interface de programação do browser
82
Inserindo plug-ins em páginas HTML
  • Elementos HTML utilizados para inserção de  plug-ins
    • OBJECT
      • quando o  browser  não sabe tratar a especificação, o conteúdo do elemento deve ser apresentado
      • Objects podem ser aninhados
        • <object data=“clock.avi” type=“video/msvideo” height=“100%” width=“100%” classid=“http://microsoft.com/plugins/” >
          •   < object data=“clock.gif” type=“image/gif”>
          •    <p>Hora certa.
          •   </object>
        • </object>
83
Inserindo plug-ins em páginas HTML
  • Elementos HTML utilizados para inserção de  plug-ins
    • EMBED (não faz parte da especificação HTML 4.01)
      • elemento não mais padronizado na DTD HTML
        • embed src=“clock.avi” type=“video/msvideo” width=“100%” height=“100%”>

  • Modos de exibição de um plug-in
    • Embutido, escondido ou página inteira
84
Modelo de Execução de Plug-ins
  • Plug-ins executam no mesmo espaço de memória do browser
    • DLLs, objetos compartilhados, bibliotecas compartilhadas, etc.
  • Ciclo de vida de um  plug-in está associado ao ciclo de vida da página que o aciona
  • Quando o  browser  encontra em uma página uma referência (URI) para um arquivo que está associado a um Plug-in
    • browser carrega o código do  plug-in na memória (se ainda não otiver feito)
    • cria uma nova instância do  plug-in (o  browser pode criar várias instâncias de um mesmo plug-in simultaneamente)
  • Quando o  browser sai da página que contém a referência para o plug-in ou tem sua janela fechada, a instância do plug-in é removida da memória
    • quando a última instância de um  plug-in é removida, o código do plug-in é retirado da memória
85
Modelo de Execução de Plug-ins
  • Quando um plug-in não está carregado em memória, o mesmo só ocupa espaço em disco
  • Plug-ins são dependentes de plataforma e browser e não permitem interagir diretamente com o conteúdo HTML para por exemplo:
    • substituir imagens (simular animações)
    • simular menus de opções
    • mudar características de apresentação do documento de acordo com a interação do usuário
    • acrescentar conteúdo dinamicamente
86
Scripts
  • Usados para adicionar funcionalidades dinâmicas a páginas HTML estáticas. Página HTML carrega (de forma embutida ou através de uma referência) scripts que são executados pelo browser
    • alterar a especificação de apresentação dos elementos
    • acrescentar conteúdo dinamicamente ao documento
    • verificar a entrada de dados em um formulário
    • controlar o browser
  • Principais linguagens de script utilizadas
    • Tcl, JavaScript (inicialmente chamado de LiveScript) - Netscape
    • Jscript e VBScript - Microsoft
87
Scripts
  • Padrão para linguagens de  script  interpretadas no cliente
    • ECMAScript ( European Computer Manufactors Associations Script)
      • padrão de junho de 1997, JavaScript e JScript são implementações
  • Por que Linguagens de Script?
    • Interpretadas (não exigem compilação) oferecendo independência de plataforma
    • Simples de programar, sendo mais adequadas para usuários não experts em programação. Ideais para tarefas simples
  • Desvantagens
    • Ineficiência e recursos limitados por isso são indicadas para tarefas simples
88
Scripts
  • Para executar os  scripts , o cliente WWW ( browser) precisa de um interpretador da linguagem de script utilizada no documento


89
Scripts
  • Pode aparecer várias vezes, tanto no Head como no Body do documento HTML. Fica a cargo de cada linguagem de script oferecer uma sintaxe para referenciar elementos HTML no documento
    • <p>Última atualização feita em:
    • <script type=“text/javascript”>
    • <!--                                                         ß  evita que browsers que
    • document.write(document.lastModified);    não dão suporte a scripts
    • -->                                                               exibam o conteúdo do
    • </script>                                                      script na tela !
    • Informa a data da última modificação do documento
90
Scripts
  • Exemplo de Script Associado a Eventos HTML
    • <form>
    • <input type=“button” value=“Aperte!” onclick=“alert(‘Clicou no botão!’)”>
    • </form>


  • Os eventos intrínsecos normalmente são utilizados em conjunto com funções declaradas na área de SCRIPT
91
POO-Java
92
Servidores WWW
  • Primeiros servidores HTTP
    • simples
    • traduziam o nome do recurso requisitado em um arquivo, enviando o conteúdo do arquivo como resposta


  • Diversos fatores tornaram complexa a configuração apropriada e a gerência eficiente de servidores HTTP
    • servidores hospedando uma quantidade grande de documentos
    • aumento na complexidade do protocolo HTTP

93
Servidores WWW
  • Fazem o mapeamento entre URL-path e o recurso local
    • http://www.inf.puc-rio.br/index.html
          • URL - caminho virtual


      •              Mapeamento



    • c:\inetpub\wwwhome\index.html
        • caminho físico no sistema de arquivos do servidor
94
Servidores WWW
  • Tipos de recursos
    • estáticos
      • resposta é gerada pelo servidor sem a ajuda de um outro processo externo
      • tradução da URL-path em um path físico do recurso
      • envio da resposta acrescida de algumas informações (tipo MIME, tamanho, data de última modificação, etc.)
    • · dinâmicos
      • resposta é gerada dinamicamente através de algum processamento externo ao servidor
      • tradução da URL-path em um path físico de um programa
      • programas são normalmente identificados por extensões ou por prefixos especiais para URL-paths (diretórios virtuais)
95
Tecnologias Server-side
96
CGI – Common Gateway Interface
97
Ineficiência do CGI
98
CGI: Exemplo
99
APIs do Servidor
100
Servlet API
101
Vantagens dos Servlets
102
Problemas dos Servlets, CGIs e APIs
103
Solução: scripts de servidor
104
Controle de sessão
105
Cookies
106
Exemplo com cookies: Loja Virtual