Escolar Documentos
Profissional Documentos
Cultura Documentos
VT INTEGRADA
1º Período – 2008
Integrantes
Orientador
Fabrício Leonard
Goiânia – Goiás
2008
SUMÁRIO
1. INTRODUÇÃO ________________________________________________________ 4
2. OBJETIVOS __________________________________________________________ 5
3. FERRAMENTAS PARA COMPUTAÇÃO __________________________________ 6
Screen Shots ___________________________________________________________________ 6
4. APLICAÇÃO DE REDES DE COMPUTADORES ___________________________ 8
Um pouco sobre o Apache ________________________________________________________ 8
Instalando o Apache. ____________________________________________________________ 8
Descrição dos parâmetros do httpd.conf ____________________________________________ 8
Opções da diretiva. _____________________________________________________________ 9
Parâmetros de cliente detalhados. ________________________________________________ 10
# Dynamic Shared Object (DSO) Support__________________________________________ 12
5. LINGUAGEM DE PROGRAMAÇÃO _____________________________________ 17
Arquitetura Cliente-Servidor ____________________________________________________ 17
As principais características da arquitetura cliente / servidor: ___________________ 17
Arquitetura TCP/IP ___________________________________________________________ 18
Domain Name System ________________________________________________________ 20
Portas IP ____________________________________________________________________ 21
Cliente Servidor ______________________________________________________________ 24
Aplicação Servidora (Servidor.java) ___________________________________________ 25
Aplicação Cliente (cliente.java) ________________________________________________ 27
6. ORGANIZAÇÃO DE COMPUTADORES __________________________________ 29
conversor.java _______________________________________________________________ 29
7. ADMINISTRAÇÃO DE SERVIDORES WEB ______________________________ 31
Introdução. __________________________________________________________________ 31
Instalação do Tomcat. ________________________________________________________ 32
Definindo variáveis ___________________________________________________________ 39
Inicializando e parando o Tomcat _____________________________________________ 39
Testanto o Tomcat ___________________________________________________________ 39
Integrando Apache com Tomcat_______________________________________________ 40
Configura o local do arquivo works.properties _________________________________ 40
Configura os arquivos de LOGS _______________________________________________ 41
Virtual Host __________________________________________________________________ 41
Criando “ workers.properties” ________________________________________________ 41
8. INGLES INSTRUMENTAL _____________________________________________ 42
Objetivo _____________________________________________________________________ 42
3
Procedimentos_______________________________________________________________ 42
Texto Original________________________________________________________________ 42
Conclusão ___________________________________________________________________ 43
Resenha _____________________________________________________________________ 43
9. CONCLUSÃO ________________________________________________________ 44
4
1. INTRODUÇÃO
2. OBJETIVOS
Este documento tem por objetivo descrever as técnicas e ferramentas
utilizadas no desenvolvimento da VT Integrada do primeiro período de redes de
computadores do ano de 2008.
6
Screen Shots
Marquee
7
8
Instalando o Apache.
Opções da diretiva.
ServerTokens OS
10
ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 10
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
12
MaxRequestsPerChild 4000
</IfModule>
Listen 80 - Essa diretiva define a porta que o servidor Apache ira escutar.
Listen 192.168.21.1:80
Include conf.d/*.conf
User apache
Group apache
ServerAdmin suporte@localhost
13
Se você tiver um site web administrativo para o seu servidor web, poderá
ajustá-lo com a diretiva ServerName.
Caso contrário se não tiver um nome totalmente qualificado em um servidor
DNS, use o endereço IP.
ServerName www.example.com:80
Tecnicamente, cada URL deve ter uma barra no final. Mas como quase
ninguém se lembra de colocá-la, essa diretiva que é incluída por default no
httpd.conf se encarrega de fazer isso automaticamente.
UseCanonicalName Off
DocumentRoot "/var/www/html"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/html">
AllowOverride None
<Directory />
Order allow,deny
Allow from all
</Directory>
É possível ajustar páginas web nos diretório principais de seus usuários. Por
padrão, elas são incapacitadas com o comanda abaixo.
Caso você queria pode substituir o comando por UserDir public_html que
habilita o aceeso ao diretório de um usuário por exemplo.
<IfModule mod_userdir.c>
UserDir disable
</IfModule>
AccessFileName .htaccess
Essa diretiva garante que qualquer arquivo iniciando com .ht não possa ser
visto por usuários que estão navegando no seu site web.
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
HostnameLookups Off
ErrorLog logs/error_log
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
16
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Caso você mude o nome do seu servidor web, a diretiva abaixo pode ser
usada para redirecionar os usuários.
5. LINGUAGEM DE PROGRAMAÇÃO
Arquitetura Cliente-Servidor
É uma arquitetura de rede, onde existem dois módulos básicos na rede: o Servidor e os
Clientes. O Servidor é alguma máquina da rede que é responsável por servidor os Clientes da
rede com aquilo que é solicitado. Clientes são as máquinas que solicitarão informações que
estarão contidas no Servidor.
É no servidor que normalmente ficam os sistemas mais pesados da rede, tais como
o banco de dados. As máquinas clientes são menos poderosas, pois não rodam
aplicativos que requerem tantos recursos das máquinas.
Para que os serviços possam ser solicitados, a aplicação cliente deve conhecer
quem fornece o serviço (o endereço da aplicação servidora) e qual o protocolo pré-
estabelecido para realizar a solicitação.
O importante em uma máquina em arquitetura Cliente/Servidor não é que todas as máquinas
sejam do mesmo fabricante ou do mesmo tipo. O que realmente é importante, é o fato de
todas as máquinas poderem ser interligar pela rede, com o mesmo tipo de protocolo de acesso
(TCP/IP, NetBEUI)
SERVIDOR
REDE DE
COMUNICAÇÃO
PC 01 PC02
FONTES:
http://www.dca.fee.unicamp.br/cursos/PooJava/network/cs.html
http://hp.br.inter.net/cats/pb/pb1.html
Arquitetura TCP/IP
Dentro de uma rede TCP/IP, cada micro recebe um endereço IP único que o
identifica na rede. Um endereço IP é composto de uma seqüência de 32 bits,
divididos em 4 grupos de 8 bits cada. Cada grupo de 8 bits recebe o nome de octeto.
Veja que 8 bits permitem 256 combinações diferentes. Para facilitar a configuração
dos endereços, usamos então números de 0 a 255 para representar cada octeto,
formando endereços como 220.45.100.222, 131.175.34.7 etc. Muito mais fácil do
que ficar decorando binários.
Ao implantar uma rede TCP/IP você deverá analisar qual classe de endereços é
mais adequada, baseado no número de nós da rede. Veja que, com um endereço
classe C, é possível endereçar apenas 254 nós de rede; com um endereço B já é
possível endereçar até 65,534 nós, sendo permitidos até 16,777,214 nós usando
endereços classe A. Claro que os endereços de classe C são muito mais comuns.
Se você alugar um backbone para conectar a rede de sua empresa à Internet, muito
provavelmente irá receber um endereço IP classe C, como 203.107.171.x, onde
203.107.171 é o endereço de sua rede dentro da Internet, e o “x” é a faixa de 254
endereços que você pode usar para identificar seus hosts.
Se você não pretender conectar sua rede à Internet, você pode utilizar qualquer
faixa de endereços IP válidos e tudo irá funcionar sem problemas. Mas, a partir do
momento em que você resolver conecta-los à Web os endereços da sua rede
poderá entrar em conflito com endereços já usados na Web.
Para resolver este problema, basta utilizar uma das faixas de endereços reservados.
Estas faixas são reservadas justamente ao uso em redes internas, por isso não são
roteadas na Internet.
20
FONTE: http://pt.wikipedia.org/wiki/Domain_Name_System
Portas IP
As portas TCP mais usadas são as portas de 1 a 1024, que são reservadas para
serviços mais conhecidos e utilizados, como servidores Web, FTP, servidores de e-
mail, compartilhamento de arquivos, etc. A porta 80, por exemplo, é reservada para
uso de servidores web, enquanto a porta 21 é a porta padrão para servidores FTP.
Além do endereço IP, qualquer pacote que circula na internet precisa conter também
a porta TCP a que se destina. É isso que faz com que um pacote chegue até o
servidor web e não ao servidor FTP instalado na mesma máquina.
Além das 65.536 portas TCP, temos o mesmo número de portas UDP, seu protocolo
irmão. Embora seja um protocolo menos usado que o TCP, o UDP continua
presente nas redes atuais pois oferece uma forma alternativa de envio de dados,
onde ao invés da confiabilidade é privilegiada velocidade e simplicidade. Vale
22
lembrar que, tanto o TCP, quanto o UDP, trabalham na camada 4 do modelo OSI.
Ambos trabalham em conjunto com o IP, que cuida do endereçamento.
No TCP, os dados são transmitidos através de conexões. Tudo começa com o
cliente enviando o pacote "SYN", que solicita a abertura da conexão. Caso a porta
esteja fechada, o servidor responde com um pacote "RST" e a conversa para por aí.
Caso, por outro lado, exista algum servidor disponível na porta solicitada (um
servidor apache, por exemplo), então ele responde com outro pacote "SYN", seguido
de um pacote "ACK", avisando que a porta está disponível e prosseguindo com a
abertura da conexão.
O cliente responde então com outro pacote "ACK", o que abre oficialmente a
conexão. Começa então a transferência dos dados, que são organizados em
pacotes com até 1550 bytes cada um. Para cada pacote recebido, a estação envia
um pacote de confirmação e, caso algum pacote se perca, ela solicita a
retransmissão. Cada pacote inclui 4 bytes adicionais com um código de CRC, que
permite verificar a integridade do pacote. É através dele que o cliente sabe quais
pacotes chegaram danificados.
Depois que todos os dados são transmitidos, o servidor envia um pacote "FYN" que
avisa que não tem mais nada a transmitir. O cliente responde com outro pacote
"FYN" e a conexão é oficialmente encerrada.
Graças a tudo isso, a confiabilidade é muito boa. Quando a conexão está ruim, é
normal ocorrerem mais perdas de pacotes e retransmissões, mas as corrupções são
geralmente causadas pelo próprio programa que está baixando o arquivo e não pelo
protocolo. O problema é que toda esta formalidade torna as transferências um pouco
mais lentas. Imagine que, para transmitir uma mensagem de texto com 300 bytes,
via TCP, seria necessário transmitir um total de 9 pacotes!
No UDP, as coisas são mais simples. Nele não existe abertura de conexão, os
pacotes são transmitidos diretamente. A estação solicita alguma informação e o
servidor envia a resposta. Assim como no TCP, são usados pacotes de até 1550
bytes, contendo os bits adicionais de verificação. A estação pode verificar a
integridade dos pacotes, mas não tem como perceber se algum pacote se perdeu,
ou solicitar a retransmissão de um pacote corrompido. Se um pacote se perde, fica
por isso mesmo.
Um exemplo típico do uso do UDP é o streaming de vídeo e audio via web, uma
situação onde o que vale é a velocidade e não a confiabilidade. Você não gostaria
nada se o navegador parasse a exibição do vídeo para solicitar uma retransmissão
cada vez que um pacote se perdesse ou chegasse corrompido. É preferível que ele
pule o quadro e continue exibindo o restante do vídeo.
Outra aplicação comum são os servidores DNS. Sempre que você acessa um site, a
solicitação do endereço IP referente ao domínio do site e a resposta do servidor são
enviadas via UDP, para ganhar tempo.
Na prática, é bem raro encontrar algum programa que utilize unicamente pacotes
UDP para qualquer coisa além do envio de mensagens curtas. Mesmo no caso do
streaming de vídeo, é quase sempre usada uma porta TCP para estabelecer a
conexão e enviar informações de controle, deixando o UDP apenas para o envio dos
dados.
FONTE: http://www.guiadohardware.net/dicas/entendendo-as-portas-tcp-udp.html
24
Cliente Servidor
Assim como existe o IP para identificar uma máquina, a porta é a solução para
identificar diversas aplicações em uma máquina. Esta porta é um número de 2 bytes,
varia de 0 a 65535. Se todas as portas de uma máquina estiverem ocupadas, não é
possível se conectar a ela enquanto nenhuma for liberada.
Ao configurar um servidor para rodar na porta 80 (padrão http), é possível se
conectar a esse servidor através dessa porta que, junto com o ip, vai formar o
25
package ClienteServidor;
import java.io.*;
import java.net.*;
public class Servidor{
public static void main (String[] args){
ServerSocket servidor;
try{
//Criando a instancia de ServerSocket que reponderá por
solicitações
//à porta 5000.
servidor = new ServerSocket(12345);
//O servidor aguarda a conexão.
//Quando uma cone~xao é feita.
Socket conexao = servidor.accept();
// ... o servidor a processa.
System.out.println("Aguardando cliente...");
processaConexao(conexao);
}
//Pode ser que a porta 5000 já esteja em uso.
catch (BindException e){
System.out.println("Porta já em uso");
}
//Pode ser que tenhamos um erro qualquer de entrada ou saida.
catch (IOException e){
System.out.println("Erro de entrada ou saida");
}
}//Fecha Public Main
//associado a conexao.
BufferedReader entrada = new BufferedReader (new
InputStreamReader(conexao.getInputStream()));
//Criando uma stream para enviar strings, usnado a stream
de saida
//associada à conexão.
BufferedWriter saida = new BufferedWriter(new
OutputStreamWriter(conexao.getOutputStream()));
//Lendo os dados enviados pelo cliente.
String dadosCliente = entrada.readLine();
//processamento dos dados do cliente.
saida.write(resultadoProcessamento);
saida.newLine();
saida.flush();
//Ao terminar de atender a requisição, fechamso as stream
de entrada e saída.
entrada.close();
entrada.close();
//Fechamos também a conexão.
conexao.close();
}
//se houver algum erro de entada ou saída...
catch (IOException e){
System.out.println("Erro atendendo a uma conexao");
}
}//Fecha Private ProcessaConexao
int nDecimal=Integer.parseInt(numero);
int baseDesejada=Integer.parseInt(base);
String numeroCon="";
while(Integer.parseInt(numero>0)){
baseDesejada=Integer.parseInt(numero)%Integer.parseInt(base);
numero=Integer.toString(Integer.parseInt(numero)/Integer.parseInt(base));
if (baseDesejada==0){
numeroCon="0"+nDecimal;
}else if(baseDesejada==1){
27
numeroCon="1"+nDecimal;
}else if (baseDesejada==2){
numeroCon="2"+nDecimal;
}else if (baseDesejada==3){
numeroCon="3"+nDecimal;
}else if (baseDesejada==4){
numeroCon="4"+nDecimal;
}else if (baseDesejada==5){
numeroCon="5"+nDecimal;
}else if (baseDesejada==6){
numeroCon="6"+nDecimal;
}else if (baseDesejada==7){
numeroCon="7"+nDecimal;
}else if (baseDesejada==8){
numeroCon="8"+nDecimal;
}else if (baseDesejada==9){
numeroCon="9"+nDecimal;
}else if (baseDesejada==10){
numeroCon="A"+nDecimal;
}else if (baseDesejada==11){
numeroCon="B"+nDecimal;
}else if (baseDesejada==12){
numeroCon="C"+nDecimal;
}else if (baseDesejada==13){
numeroCon="D"+nDecimal;
}else if (baseDesejada==14){
numeroCon="E"+nDecimal;
}else if (baseDesejada==15){
numeroCon="F"+nDecimal;
}else if (baseDesejada==16){
numeroCon="G"+nDecimal;
}
//}
return numeroCon;
}//Fecha Main
}
29
6. ORGANIZAÇÃO DE COMPUTADORES
novoiNumero="6"+novoiNumero;
}else if (iResto==7){
novoiNumero="7"+novoiNumero;
}else if (iResto==8){
novoiNumero="8"+novoiNumero;
}else if (iResto==9){
novoiNumero="9"+novoiNumero;
}else if (iResto==10){
novoiNumero="A"+novoiNumero;
}else if (iResto==11){
novoiNumero="B"+novoiNumero;
}else if (iResto==12){
novoiNumero="C"+novoiNumero;
}else if (iResto==13){
novoiNumero="D"+novoiNumero;
}else if (iResto==14){
novoiNumero="E"+novoiNumero;
}else if (iResto==15){
novoiNumero="F"+novoiNumero;
}else if (iResto==16){
novoiNumero="G"+novoiNumero;
}
}//Fecha While
System.out.printf(" O valor %d em decimal convertido para a %d é:
%s", aux, iBase, novoiNumero);
}
31
Tomcat 4.1 e 5.0 necessitavam do JDK, para compilar as páginas JSP. O Tomcat
5.5 em diante traz embutido e usa o complilador Java Eclipse JDT para compilar
JSP. Assim, o Tomcat a partir da versão 5.5 necessita apenas do JRE, mas o JDK
ainda é útil para o desenvolvedor.
Para seu ambiente de desenvolvimento Java com Tomcat, onde você deve criar aplicações
Java em geral, utilize o JDK completo.
Instalação do Tomcat.
Definindo variáveis
[Windows] cd %CATALINA_HOME%\bin
[Linux] cd $CATALINA_HOME/bin
- Execute o script:
Iniciar:
[Windows] startup.bat
[Linux] startup.sh
Parar:
[Windows] shutdown.bat
[Linux] shutdown.sh
Testanto o Tomcat
Para testar se o Tomcat está rodando ok após iniciado, abra o browser e vá para o
endereço:
http://localhost:8080/
40
Para realizar a integração do servidor Apache Front-End com o servidor Tomcat Back-End é
necessário realizar os seguintes passos.
Obs. Nessa tarefa presumi-mos que o servidor Apache já está instalado e configurado
conforme tutorial de instalação do servidor Apache da matéria de Arquitetura de redes de
computadores.
Virtual Host
<VirtualHost localhost>
ServerName localhost
JkMount /manager worker1
JkMount /manager/* worker1
JkMount /admin worker1
JkMount /admin/* worker1
JkMount /examples/servlet worker1
JkMount /examples/servlet/* worker1
JkMount /examples/jsp worker1
JkMount /examples/jsp/* worker1
JkMount /examples worker1
JkMount /examples/* worker1
</VirtualHost>
Criando “ workers.properties”
worker.list=worker1
/manager/* worker1
/admin/* worker1
/examples/servlet/* worker1
/examples/jsp/* worker1
/examples/* worker1
42
8. INGLES INSTRUMENTAL
Objetivo
Procedimentos
Texto Original
The relationship between currency markets and commodity prices is relatively new
phenomenon, Damian Cox from John Hall Associates told the BBC last week.
"Since about August, commodities appear to have been responding to movements in
the currency markets," he said.
"As the dollar has weakened, some people have moved into commodities."
In the past, a weakening US dollar would have been seen as a sign of weakness in
the US economy, which would have meant that demand for oil was likely to fall and
so the oil price would fall.
But now, some traders see commodities such as oil as a hedge against declining
currencies.
So, if they were worried about the dollar falling in value, they might sell dollars and
buy oil, for example.
Conclusão
Resenha
O texto recentemente mostrado nos diz que têm ocorrido desde o começo do ano,
diversas altas do barril de petróleo comercializado nos EUA.
Essas altas são impulsionadas devidas a preocupante situação ocorrida nos paises
da Nigéria, norte do Iraque e Africa.
Devida a essa alta dos barris de petróleo investidores do marcado de ações
resolveram mudar os investimentos para as commodities, que mesmo em momentos
de crise, conseguiram manter seus valores estabilizados.
44
9. CONCLUSÃO