Roteiro 1: Protocolo HTTP (parte 1) Objetivos: • • • Detalhar as características do protocolo HTTP; Detalhar o funcionamento do protocolo HTTP; Configurar aplicações com uso dos serviços HTTP e HTTPS; Ferramentas necessárias Vmware server, Wireshark, Windows XP, MS IIS, Httperf, Navegadores web Introdução HTT significa Protocolo de transferência de Hipertexto (Hypertext transfer Protocol) e é um protocolo da camada de aplicação da web (figura 1), ele é implementado em dois programas: um programa cliente e um programa servidor. Os dois programas, executados em sistemas finais diferentes, conversam um com o outro por meio da troca de mensagens. O HTTP define como clientes Web requisitam páginas aos servidores e como eles as transferem a clientes. Figura 1 - camadas tcp-ip Para o transporte de informações, o HTTP usa o TCP. Primeiramente o cliente HTTP inicia uma conexão TCP com o servidor. Uma vez estabelecida a conexão, os processos de browser e servidor acessam o TCP por meio de suas interfaces sockets (portas de comunicação entre as partes cliente e servidor da comunicação). O formato de uma mensagem HTTP é definido de acordo com as especificações do HTTP [RFC2616] e é composto por uma mensagem HTTP de requisição e outra de resposta, descrito na tabela 1. Exemplo de mensagem HTTP de requisição: Exemplo de mensagem HTTP de requisição GET /algum diretório/pagina.html HTTP/1.1 Host: www.algumacoisa.com Connection: close User-agent: Mozzilla/4.0 Accept-language: em Tabela 1 - Exemplo de mensagem de requisição HTTP A mensagem HTTP é escrita em texto ASCII, geralmente composta por 5 linhas. A primeira linha é chamada de linha de requisição composta pelos campos de método, URL e versão do HTTP e as demais são denominadas linhas de cabeçalho, composta pelo Host, o Hospedeiro, o tipo de conexão, o agente de usuário (navegador que fez a requisição) e a linguagem a qual é solicitada a requisição. Uma mensagem de requisição pode conter bem mais campos do que os demonstrados no exemplo, porém seguem sempre o padrão demonstrado a seguir na tabela 2. 4 Tabela 2 - Formato geral de mensagem de requisição HTTP Ao final do formato geral existe um outro campo não comentado chamado de campo de entidade (Entity Body). Este campo é reservado para uso de envio de informações de formulário através de páginas web. A mensagem de resposta HTTP geralmente é a resposta a uma requisição, a seguir um exemplo de resposta para a mensagem de requisição no exemplo de tabela 3: Exemplo de mensagem de resposta: Exemplo de mensagem HTTP de resposta HTTP/1.1 200 Ok Connection: close Date: Sat. 06 Fev 2012 18:40:20 GMT Server: Apache/1.3.0 (Unix) Last-modified: Sun, 12 jun 2010 11:22:15 GMT Content-length: 6690 Content-type: text/html (data data data data ...) Tabela 3 - Exemplo de mensagem de resposta HTTP A mensagem de resposta demonstrada na tabela 3 possui 3 seções: uma linha de estado, seis linhas de cabeçalho e em seguida um corpo de identidade. Na linha de estado existem 3 campos: campo de versão de protocolo, código de estado e uma mensagem de estado correspondente, no exemplo está se utilizando o HTTP/1.1 e que está tudo ok (o servidor encontrou e está enviando o objeto solicitado). Nas linhas de cabeçalho o servidor utiliza as linhas de cabeçalho: Connection: close, informando ao cliente que fechará a conexão TCP após enviar a mensagem. Date: indicando a hora e data em que a resposta HTTP foi criada e enviada pelo servidor. Server: mostrando que a mensagem foi gerada por um servidor Web Apache em comparação na requisição com a linha UserAgent Last-Modified:, indica a data e a hora em que o objeto foi criado ou sofreu a última modificação. Content-length: indica o número de bytes do objeto que está sendo enviado. Content-type: mostra que o objeto presente no corpo da mensagem é um texto HTML. Este é responsável por identificar ao servidor que tipo de documento está-se abrindo atualmente. O formato geral de uma mensagem de resposta é descrito pela figura 2. 5 Figura 2 - formato geral da mensagem HTTP de resposta Tanto o o browser quanto o servidor gerarão as linhas de cabeçalhos em função de suas versões e seus tipos. Por exemplo, se um browser for do tipo HTTP/1.0 ele não gerará linhas de cabeçalho 1.1. Tarefas: 1. Instalar o MS IIS (Internet Information Server) e o IIS6 Resource Kit, disponível em, http://192.168.200.3/andre/redes/redes-III/iis60rkt.exe na máquina virtual Windows XP. 2. 3. 4. Criar um diretório virtual senac no IIS apontando para o diretório c:\senac na máquina virtual (Painel de Controle->Ferramentas Administrativas->Internet Information Services). a. Criar o subdiretório c:\senac\restrito. b. Habilitar o HTTPS no servidor. Para isto, deve ser utilizada a ferramenta selfssl disponível no IIS6 Resource Kit. c. Modificar o arquivo padrão para index.html no diretório virtual senac d. Ativar a autenticação de usuário no diretório restrito. e. Modificar as páginas de erros 403, 401 e 404 que deverão conter imagens. Em c:\windows\help\iishelp podem ser encontrados as páginas de erro padrão para serem editadas. f. Trocar a porta de escuta 80 do servidor, para a porta 8900. g. Criar um diretório virtual meudrivec apontando para c:\ e habilitar a visualização de arquivos do diretório. h. Utilizar a ferramenta de análise de logs Deep Log Analyzer (http://192.168.200.3/andre/redes/redes-III/dlafree.exe) para gerar relatórios de acesso do servidor. Os arquivos de logs estão disponíveis em c:\windows\system32\logfiles\W3SVC Na máquina virtual WindowsXP, instalar os seguintes navegadores: a. Mosaic – Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/ncsamosaicv1_0.zip b. SpyGlass (precursor do IE) - Disponível em: http://192.168.200.3/andre/redes/redesIII/navegadores/sm211_5.zip c. Netscape Navigator - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/n32e407.exe d. Amaya - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/amaya-WinXP-11.3.1.exe e. Google Chrome - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/ChromeSetup.exe f. Apple Safari - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/SafariSetup.exe g. Opera - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/Opera_951_in_Setup.exe h. SeaMonkey - Disponível em: http://192.168.200.3/andre/redes/redes-III/navegadores/SeaMonkey Setup2.0.7.exe Acessar o servidor IIS do colega com cada um dos navegadores e utilizar a ferramenta Wireshark para capturar os cabeçalhos com a descrição de cada agente (browser). Gerar imagens com os cabeçalhos de cada browser. a. Acessar com os navegadores Mosaic, SpyGlass e Netscape Navigator os sites http://www.terra.com.br, http://www.microsoft.com, http://www.google.com e http://192.168.200.3/ e http://192.168.200.3/wiki/ b. Utilizar o cliente de HTTP wget, disponível em http://192.168.200.3/andre/redes/redes-III/navegadores/wget.exe para acessar os mesmos sites da tarefa anterior. Descrever o resultado obtido capturando pelo menos 3 acessos de sites utilizando o wireshark. 6 5. 6. c. Comente a respeito dos resultados obtidos utilizando um navegador e um cliente de HTTP para acesso a estes sites. d. Apontar os principais avanços da tecnologia de navegadores, comparando Mosaic e o Opera Browser. Descrever para cada navegador utilizado as seguintes questões: a. Quais navegadores utilizam HTTP 1.0 e HTTP1.1? b. Qual a versão HTTP dos servidores que foram acessados? c. Qual o código de STATUS retornado do servidor para o navegador ao acessar as páginas? d. Escolha uma das páginas acessadas e indique a linha onde é referida a data de modificação de um dos documentos web que foi recuperado. Pesquise o que significa um GET CONDICIONAL. Escreva a resposta em apenas um parágrafo e com as suas palavras. Referências: Material disponibilizado em aula “Redes de computadores e a Internet”, Kurose e Ross, 5ª Edição. “Utilizando o wget no Windows” disponível em - http://www2.explorando.com.br/2007/09/como-baixar-sites-inteiros-com-o-wget “MS IIS” Disponível em - http://www.iis.net/ DEEP LOG ANALYZER. Disponível em - http://www.deep-software.com/ 7