Você está na página 1de 44

UNIVERSIDADE SALGADO DE OLIVEIRA - CAMPUS GOIÂNIA

CURSO DE GRADUAÇÃO TECNOLÓGICA EM REDES DE COMPUTADORES

VT INTEGRADA
1º Período – 2008

Integrantes

Bruno Leonardo Costa


Diego Fonseca Elcain
Diogo Manochio V. Silva

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

Esse documento foi elaborado visando documentar e detalhar os passos


executados na elaboração e desenvolvimento da VT Integrada do 1º Período do Ano
de 2008.
Foram abrangidas tanto a parte teórica quanto a parte prática envolvidas nas
disciplinas relacionadas.
5

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

3. FERRAMENTAS PARA COMPUTAÇÃO

Screen Shots

Titulo de Páginas, Formatação (Negrito, Itálico, Sublinhado), Parágrafos, cor de fundo.

Alinhamento de Texto, formatação de fontes, tabelas (0 de borda), frames, CSS, imagens,

Marquee
7
8

4. APLICAÇÃO DE REDES DE COMPUTADORES

Um pouco sobre o Apache

Apache é um servidor Web. Em outras palavras, é um serviço que é


executado em um sistema operacional, tal como o Linux e responde a solicitações.
Quando o usuário digita o endereço de uma página web no seu navegador,
seu computador busca pelos servidores de DNS para encontrar o endereço IP do
servidor Web desejado. Quando o contato é estabelecido, o navegador pede pela
página web, normalmente na porta 80 TCP/IP e por sua vez o Apache responde a
tais solicitações, enviando uma página web ao computador solicitante.
Em 1995, o servidor web mais popular era o daemon HTTP, do National
Center for Supercomputing Applications (NCSA), da Universidade de Lllinois.
Quando os desenvolvedores desse servidor web saíram da NCSA, vários
webmasters de todo o mundo começaram a atualizar e manter mudanças através de
remendos, que levaram à sua descrição como um servidor “patchy” (remendado).
Assim, esse software de servidor web é conhecido como Apache.
De acordo com uma pesquisa da Netcraft (www.netcraft.com/survey), Apache é, de
longe, o servidor web mais popular da Internet, e tem sido assim desde 1996.

Instalando o Apache.

Para se instalar o Apache, basta baixar a versão do instalador da página


oficial http://www.apache.org.
Inicialmente desenvolvido para plataforma Linux hoje o Apache também é
usado em outros sistemas operacionais do estilo Unix e Microsoft Windows.
Hoje o Apache encontra-se na versão 2 e com algumas release´s já
desenvolvidas.
Descreveremos mais adiante nesse documento os parâmetros mais utilizados
no arquivo de configuração do Apche o httpd.conf.

Descrição dos parâmetros do httpd.conf


9

Abaixo serão detalhados os parâmetros mais utilizados na configuração do


Apache, o arquivo completo com toda a configuração utilizado na atividade da VT
Integrada encontra-se em anexo no material entregue no CD.

# This is the main Apache server configuration file. It contains the


# configuration directives that give the server its instructions.
# See<URL:http://httpd.apache.org/docs/2.2/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>
# for a discussion of each configuration directive.

O cabeçalho do arquivo httpd.conf inicia dizendo que esse é o arquivo de


configuração do Apache, e informando link´s que podem ser acessados para se ter
mais detalhes das opções de configurações possíveis.
Abaixo serão descritas as diretivas usadas mais freqüentemente.

Opções da diretiva.

ServerTokens OS – Essa diretiva fornece aos usuários de seu site alguma


informação básica sobre o seu software.

ServerTokens Prod – Identifica o servidor web como Apache.

ServerTokens Min – Identifica o Apache e seu número de versão.

ServerTokens OS – Identifica o Apache, o seu número de versão e o tipo de sistema


operacional.

ServerTokens Full – Identifica o Apache, o seu número de versão, o tipo de sistema


operacional e módulos compilados.

ServerTokens OS
10

A diretiva ServerRoot identifica o diretório com o arquivo de configuração, erro


e registro.

ServerRoot "/etc/httpd"

A diretiva PidFile, especifica o arquivo onde o Apache grava o identificador de


processo (PID)

PidFile run/httpd.pid

A diretiva Timeout, especifica um valor de interrupção em segundos.

Timeout 120

Em geral, múltiplas solicitações são permitidas através de cada conecxão. O


comando abaixo incapacita esse comportamento.

KeepAlive Off

Se a diretiva KeepAlive estiver ativada é possível regular o número de


solicitações por conexão utilizando a diretiva abaixo em nosso caso limitados a 10,
o valor default desse parâmetro é 100.

MaxKeepAliveRequests 10

Quando é feita uma conexão entre o Apache e o navegador web do cliente, a


diretiva abaixo especifica o número de segundos para esperar pela próxima
solicitação de cliente.
KeepAliveTimeout 15

Parâmetros de cliente detalhados.


11

O Apache inclui uma série de Multi-Porcessing (MPM). Esses MPMs se


dividem em três categorias Perfork , Worked , Per-child porém, iremos descrever
apenas a Prefork MPMs que é a mais utilizada e recomendada para servidores web
baseados em processos. O uso deles é adequado se você tiver módulos de Apache
que não exeigem sequências separadas, que imitam o comportamento do Apache
1.3.x.

## Server-Pool Size Regulation (MPM specific)


# prefork MPM

StartServers: o número de processos de servidor filho prontos para os usuários que


desejam suas páginas web.

MinSpareServers: Se a quantidade de processos de servidor não utilizados estiver


abaixo do valor definido nessa diretiva, processos http adicionais são
automaticamente iniciados.

MaxSpareServers: Determina a quantidade máxima de processos httpd que tem


permissão de executar ociosos.

ServerLimit: Define valor máximo para MaxClients

MaxClients: Regula a quantidade máxima de solicitações de clientes solicitando


iformações do servidor web.

MaxRequestsPerChild: Limita a quantidade de sequências permitidas a cada


processo filho.

<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.

Se você tiver mais de um adaptador de rede, também pode limitar o Apache


para determinadas redes.
Por exemplo, a seguinte diretiva só ouve ao adaptador de rede com um
edereço IP de 192.168.21.1 na porta TCP/IP 80.
Nota: A diretiva Listen substitui as diretivas BindAddress e Port da versão 1.3
do Apache

Listen 192.168.21.1:80

# Dynamic Shared Object (DSO) Support

Diretiva que indica o diretório de onde serão de onde serão lidas as


configurações. config directory "/etc/httpd/conf.d".

Include conf.d/*.conf

Como determinado pelas diretivas de User e Group, o daemon de Apache ,


httpd, é designado a um nome de usuário e grupo especificados aqui, e em
/etc/passwd e /etc/group

User apache

Group apache

Nome do usuário que recebera as mensagens administrativas geradas pelo


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

Esse é o diretório root do seu servidor web.

DocumentRoot "/var/www/html"

Em seguida, vemos as permissões padrão para usuários dentro de diretórios


acessíveis através dos sites da web de seus servidores. Elas são ajustadas pelo
contentor <Directory />, que define as permissões associadas a DocummentRoot.

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

Em seguida, veremos as permissões padrão em httpd.conf para o diretório


/var/www/html.

<Directory "/var/www/html">

A seguinte diretiva Options suporta o redirecionamento através de link


simbólico e da listagem de arquivos no diretório atual, se não houver um tipo de
arquivo index.html
14

Options Indexes FollowSymLinks

Essa diretiva habilita os tipos de diretivas no arquivo .htaccess, por default a


seguinte opção nem ao menos olha para o .htaccess

AllowOverride None

Finalmente, existem diretivas de controle de acesso, as seguintes buscam por


uma diretiva Allow e depois por uma Deny para esse diretório.

<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>

Quando os usuários navegam pelo seu diretório, na verdade eles estão


buscando em um diretório. Essa diretiva, informa ao Apache os tipos de páginas
web a enviar para o usuário do site da web

DirectoryIndex index.html index.html.var

Como já descrito acima é possível configurar o controle de acesso a arquivos


em diretórios individuias. Por padrão, ele é o arquivo oculto .htaccess.
15

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>

Em geral, HostnameLookups é ajustado para off, caso contrário o Apache


buscará pelo nome de domínio de cada usuário solicitante. Não faça isso, a menos
que você tenha acesso confiável a um servidor DNS.

HostnameLookups Off

Você pode ajustar as localizações de diferentes arquivos de registro. A


diretiva ErrorLog, como seria de se esperar, ajusta a localização do arquivo
error_log.

ErrorLog logs/error_log

Abaixo vemos um exemplo de configuração de Alias, no exemplo abaixo foi


configurado um Alias para "/var/www/icons/" com o nome de /icons.

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
16

Scripts em httpd.conf referem-se a programas que são executados através do


servidor web.
O Apache inicia no arquivo padrão httpd.conf com uma diretiva que é um Alias
especializada para Scripts.

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

Define as permissões aos scripts associados aos seus sites web.

<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.

Redirect permanent /vt_integrada http://www.vtintegrada.com/vt

O arquivo de configuração do Apache é muito extenso e algumas configurações são


usadas em casos e situações específicas sendo assim, foram documentadas acima as opções de
diretivas usas mais freqüentemente, informações adicionais podem ser encontradas no link
http://httpd.apache.org/docs/2.2/en
17

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)

As principais características da arquitetura cliente / servidor:

• Oferecer uma estruturação do processamento distribuído baseado no


conceito de serviços;
• Servidor: provedor de serviços;
• Cliente: consumidor de serviços;
• Permitir o compartilhamento de recursos;
• Servidor pode atender a vários clientes simultaneamente;
• Oferecer transparência de localização;
• Tratamento uniforme independentemente de processos estarem na mesma
máquina ou em máquinas distintas;
• Permite a comunicação através da troca de mensagens;
• Cliente não precisa saber como servidor implementa o serviço, mas apenas a
interface para solicitação e resposta
18

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.

O endereço IP é dividido em duas partes. A primeira identifica a rede à qual o


computador está conectado (necessário, pois numa rede TCP/IP podemos ter várias
redes conectadas entre sí, veja o caso da Internet) e a segunda identifica o
computador (chamado de host) dentro da rede.

Obrigatoriamente, os primeiros octetos servirão para identificar a rede e os últimos


servirão para identificar o computador em si. Como temos apenas 4 octetos, esta
divisão limitaria bastante o número de endereços possíveis. Se fosse reservado
apenas o primeiro octeto do endereço por exemplo, teríamos um grande número de
hosts, mas em compensação poderíamos ter apenas 256 sub-redes. Mesmo se
reservássemos dois octetos para a identificação da rede e dois para a identificação
do host, os endereços possíveis seriam insuficientes.
19

Para permitir uma gama maior de endereços, os desenvolvedores do TPC/IP


dividiram o endereçamento IP em cinco classes, denominadas A, B, C, D, e E,
sendo que as classes D e E estão reservadas para expansões futuras. Cada classe
reserva um número diferente de octetos para o endereçamento da rede:

Na classe A, apenas o primeiro octeto identifica a rede, na classe B são usados os


dois primeiros octetos e na classe C temos os três primeiros octetos reservados para
a rede e apenas o último reservado para a identificação dos hosts.

O que diferencia uma classe de endereços da outra, é o valor do primeiro octeto. Se


for um número entre 1 e 126 (como em 113.221.34.57) temos um endereço de
classe A. Se o valor do primeiro octeto for um número entre 128 e 191, então temos
um endereço de classe B (como em 167.27.135.203) e, finalmente, caso o primeiro
octeto seja um número entre 192 e 223 teremos um endereço de classe C:

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

As faixas de endereços reservados mais comuns são 10.x.x.x e 192.168.x.x, onde


respectivamente o 10 e o 192.168 são os endereços da rede e o endereço de host
pode ser configurado da forma que desejar.
O default em muitos sistemas é 192.168.1.x, mas você pode usar os endereços que
quiser. Se você quiser uma faixa ainda maior de endereços para a sua rede interna,
é só apelar para a faixa 10.x.x.x, onde você terá à sua disposição mais de 12
milhões de endereços diferentes.
FONTE: http://www.guiadohardware.net/tutoriais/enderecamento-ip/

Domain Name System

O DNS (Domain Name System - Sistema de Nomes de Domínios) é um sistema de


gerenciamento de nomes hierárquico e distribuído operando segundo duas
definições:

• Examinar e atualizar seu banco de dados.


• Resolver nomes de servidores em endereços de rede (IPs).

O sistema de distribuição de nomes de domínio foi introduzido em 1984 e com ele os


nomes de hosts residentes em um banco de dados pôde ser distribuído entre
servidores múltiplos, baixando assim a carga em qualquer servidor que provê
administração no sistema de nomeação de domínios. Ele baseia-se em nomes
hierárquicos e permite a inscrição de vários dados digitados além do nome do host e
seu IP. Em virtude do banco de dados de DNS ser distribuído, seu tamanho é
ilimitado e o desempenho não degrada tanto quando se adiciona mais servidores
nele.
A implementação do DNS-Berkeley, foi desenvolvido originalmente para o sistema
operacional BSD UNIX 4.3.
A implementação do Servidor de DNS Microsoft se tornou parte do sistema
operacional Windows NT na versão Server 4.0. O DNS passou a ser o serviço de
resolução de nomes padrão a partir do Windows 2000 Server Como a maioria das
implementações de DNS teve suas raízes nas RFCs 882 e 883, e foi atualizado nas
RFCs 1034 e 1035.
21

O servidor DNS traduz nomes para os endereços IP e endereços IP para nomes


respectivos, e permitindo a localização de hosts em um domínio determinado. Num
sistema livre o serviço é implementado pelo software BIND. Esse serviço geralmente
se encontra localizado no servidor DNS primário.
O servidor DNS secundário é uma espécie de cópia de segurança do servidor DNS
primário. Quando não é possível encontrar um domínio através do servidor primário
o sistema tenta resolver o nome através do servidor secundário.
Existem 13 servidores DNS raiz no mundo todo e sem eles a Internet não
funcionaria. Destes, dez estão localizados nos Estados Unidos da América, um na
Ásia e dois na Europa. Para Aumentar a base instalada destes servidores, foram
criadas Réplicas localizadas por todo o mundo, inclusive no Brasil desde 2003.
Ou seja, os servidores de diretórios responsáveis por prover informações como
nomes e endereços das máquinas são normalmente chamados servidores de
nomes. Na Internet, os serviços de nomes usado é o DNS, que apresenta uma
arquitetura cliente/servidor, podendo envolver vários servidores DNS na resposta a
uma consulta.

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!

Veja um exemplo de como a transmissão funcionaria:

• Estação: SYN (solicita a abertura da conexão)


• Servidor: SYN (confirma o recebimento e avisa que a porta está disponível)
• Servidor: ACK (inicia a conexão)
• Estação: ACK (confirma)
23

• Estação: DATA (é enviado o pacote com a mensagem de texto)


• Servidor: OK (a confirmação, depois de verificar a integridade do pacote)
• Estação: FYN (solicita o fechamento da conexão)
• Servidor: FYN (confirma)
• Estação: FYN (confirma que recebeu a confirmação)

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

Da necessidade de dois computadores se comunicarem, surgiram diversos


protocolos que permitissem tal troca de informação: o protocolo que iremos usar
aqui é o TCP (Transmission Control Protocol).
Através do TCP, é possível criar um fluxo entre dois computadores, conectar mais
de um cliente ao mesmo servidor, como é o caso de diversos bancos de dados,
webservers entre outros.

A vantagem de se usar TCP, em vez de criar nosso próprio protocolo de bytes, é


que o TCP vai garantir a entrega dos pacotes que transferirmos e criar um protocolo
base e para isto é algo bem complicado.
Todas as aplicações que estão enviando e recebendo dados fazem isso através de
uma mesma conexão física, porém o computador consegue discernir, durante a
chegada e a transmissão de novos dados, quais informações pertencem a qual
aplicação.

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

endereço da aplicação. Por exemplo, o servidor web da caelum.com.br pode ser


representado por: caelum.com.br:80

Um cliente se conecta a um programa rodando na porta 80 de um servidor,


enquanto ele não se desconectar dessa porta, será impossível que outra pessoa se
conecte?
Acontece que, ao efetuar e aceitar a conexão, o servidor redireciona o cliente de
uma porta para outra, liberando novamente sua porta inicial e permitindo que outros
clientes se conectem novamente.

Iniciando agora um modelo de servidor de chat, o serviço do computador que


funciona como base deve, primeiro, abrir uma porta e ficar ouvindo até alguém tentar
se conectar.

Aplicação Servidora (Servidor.java)

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

//Método para atender a uma conexao feita a este servidor.


private static void processaConexao(Socket conexao){
try {
//Criando um stream para receber strings, usando a stream
de entrada
26

//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.

String resultadoProcessamento = conversor(dadosCliente);

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

private static String conversor(String dados){


String base="";
String numero="";
boolean eNumero=true;
boolean eBase=true;
int qtdCaracter=dados.length();

for(int i = 0; i < qtdCaracter; ++i){


char caracter=dados.charAt(i);
if(caracter == ':'){
eNumero=false;
}else if(eNumero){
numero+=caracter;
}else if (eBase){
base+=caracter;
}
}// FECHA FOR

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 Private Conversor


}//Fecha Class

}//Fecha Main

Aplicação Cliente (cliente.java)


import java.io.*;
import java.net.*;
import java.util.*;
public class cliente{
public static void main (String[] args){
String servidor = "localhost";
BufferedReader br = null;
BufferedWriter bw = null;
Socket conexao = null;
//Tentando fazer a conexão e ler uma linha...
try{
conexao = new Socket(servidor, 5000);
//A partir do socket podemos obter um InputStream, a partir
deste um
//InputStreamReader e a partir deste, um BufferedReader.
br = new BufferedReader (new InputStreamReader
(conexao.getInputStream()));
28

//A partri do scoket podemos obter um OutputStream, a partir


deste um
//OutputSteamWriter e a partir deste, um BufferedWriter
bw = new BufferedWriter (new
OutputStreamWriter(conexao.getOutputStream()));
//Executamos este loop para sempre.
//Lendo uma mensamge.
Scanner input = new Scanner (System.in);
System.out.print("Informe o número: " );
int numero = input.nextInt();
System.out.print("Informe a base [2 ou 8 ou 16]: ");
int base = input.nextInt();
String dado = numero + ":" + base;
bw.write(dado);
bw.newLine();
bw.flush();
String msgRecebida = br.readLine();
System.out.println("Resultado: " + msgRecebida);
}
//Se houver problemas com o nome do host...
catch (UnknownHostException e){
System.out.println("O servidor não existe ou está fora do
ar.");
}
//Se houver problemas genérios de entrada ou saida.
catch (IOException e){
System.out.println("erro de entrada ou saida." +
e.getMessage());
}
finally
{
try{
br.close();
bw.close();
conexao.close();
}catch (IOException e){
System.out.println("erro de entrada ou saida.");
}
}

}
29

6. ORGANIZAÇÃO DE COMPUTADORES

A atividade relacionada a essa matéria refere-se ao conversor de um número na


base 10 para qualquer base. Abaixo segue o código java desenvolvido para realizar
essa operação.
Classe java criada e orientada pelo Prof. Fabrício em sala de aula, aonde foi
utilizada a técnica de divisões sucessivas para encontra o valor convertido conforme
a base escolhida.
conversor.java
import java.util.Scanner;
public class conversor_base{
public static void main(String args []){
Scanner input=new Scanner(System.in);
String novoiNumero="";
int iNumero=0;
int iBase=0;
int iResto=0;
int aux=0;
System.out.print("Informe um número na base 10 para ser convertido: ");
iNumero=input.nextInt();
System.out.print("Informe a base para conversão: ");
iBase = input.nextInt();
aux = iNumero;
while (iNumero>0){
iResto=iNumero%iBase;
iNumero=iNumero/iBase;
if (iResto==0){
novoiNumero="0"+novoiNumero;
}else if(iResto==1){
novoiNumero="1"+novoiNumero;
}else if (iResto==2){
novoiNumero="2"+novoiNumero;
}else if (iResto==3){
novoiNumero="3"+novoiNumero;
}else if (iResto==4){
novoiNumero="4"+novoiNumero;
}else if (iResto==5){
novoiNumero="5"+novoiNumero;
}else if (iResto==6){
30

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

7. ADMINISTRAÇÃO DE SERVIDORES WEB


Introdução.

O Tomcat é um servidor de aplicações Java para web. É software livre e de código


aberto, surgido dentro do conceituado projeto Apache Jakarta e que teve apoio e
endosso oficial da Sun Microsystems como Implementação de Referência (RI) para
as tecnologias Java Servlet e JavaServer Pages (JSP). Atualmente, o Tomcat tem
seu próprio projeto de desenvolvimento independente, dentro da Apache Software
Foundation. O Tomcat é robusto e eficiente o suficiente para ser utilizado mesmo em
um ambiente de produção.
Tecnicamente, o Tomcat é um Contêiner Web, parte da plataforma
corporativa Java Enterprise Edition (Java EE, anteriormente denominada J2EE) que
abrange as tecnologias Servlet e JSP, incluindo tecnologias de apoio relacionadas
como Realms e segurança, JNDI Resources e JDBC DataSources. O Tomcat tem a
capacidade de atuar também como servidor web/HTTP autônomo, ou pode
funcionar integrado a um servidor web dedicado, como Apache httpd ou Microsoft
IIS, ou ainda como parte integrante de um servidor de aplicações mais amplo, como
JBoss AS, provendo os recursos de Java Servlet e JSP.
O Tomcat é inteiramente escrito em Java e, portanto, necessita de uma Java
Virtual Machine (JVM) — Máquina Virtual Java — para ser executado. Assim, é
necessário ter a plataforma Java Padrão, Java Platform Standard Edition (Java SE),
previamente instalada.

Na Tecnologia Java, existem duas distribuições do Java SE:

Java Runtime Engine (JRE) — Mecanismo de Execução Java: inclui a JVM,


bibliotecas e outros componentes necessários para executar aplicações ou
applets escritas em linguagem Java. É o produto adequado para quem é apenas
usuário da tecnologia Java.

Software Development Kit (SDK) — Kit de Desenvolvimento de Software — do


Java SE, mais conhecido como Java Development Kit (JDK): inclui todo o JRE,
32

mais ferramentas de linha de comando como compilador, debugador e outros


componentes necessários para construir aplicações Java.

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.

Esse passo a passo descreve a instalação do Tomcat. O assistente de instalação


será iniciado. No diálogo de Boas-vindas, clique “Next”.

Estando de acordo com os termos da licença do software, clique “I Agree” para


prosseguir. O Tomcat é software aberto, de re-distribuição e uso (comercial ou não)
livres e gratuitos.
33

Na escolha de componentes do software, o padrão é o tipo de instalação “Normal”,


que inclui, além do núcleo essencial (core) do Tomcat Servlet container, toda a
documentação, exemplos de Servlet e JSP e os ícones no Menu Iniciar. Esta
seleção é adequada para o uso geral.

Na verdade, ficam de fora da instalação Normal apenas a ativação automática do


Tomcat como serviço e o código-fonte do Tomcat. Este último só será de alguma
utilidade se você prentender participar do projeto de desenvolvimento do Tomcat, ou
ainda quiser conhecer a fundo os mecanismos de funcionamento e a implementação
do Tomcat inspecionando seus fontes, e não apenas utilizá-lo.
34

A instalação do Tomcat sempre cria um serviço do Windows (NT ou superior)


para o Tomcat. Na opção Normal, porém, o serviço é instalado com ativação
manual. Se você preferir que o serviço do Tomcat seja automaticamente ativado
sempre que o Windows for iniciado, basta expandir o componente “Tomcat” e
selecionar o componente “Service”, conforme mostrado a seguir, e o instalador já
configurará isto por você. O tipo de instalação mudará para “Custom”
(personalizada). De qualquer forma, o tipo de inicialização do serviço do Tomcat
pode ser facilmente alterado entre Manual ou Automático a qualquer tempo após a
instalação, através da ferramenta administrativa de Serviços do Windows.
35

A seguir, será confirmado o local de instalação do software. Confirme a pasta


principal onde o Tomcat será instalado e clique “Next” para prosseguir.

O diálogo de Configuração permite definir duas opções administrativas do


Tomcat: o porto de rede pelo qual o Tomcat atenderá as requisições HTTP,
36

funcionando como um servidor web com o propósito de testes e administração do


Tomcat, e o usuário e senha para o acesso à Administração do Tomcat.

A menos que no computador já exista outro serviço simultâneo utilizando o


porto padrão 8080 do Tomcat, é recomendável deixar o porto inalterado. Em
especial, tenha muito cuidado se pretender modificar para o porto 80, que é o
padrão para o protocolo HTTP e usado pelos servidores web como o Microsoft IIS e
o Apache Web Server (httpd). Esta configuração pode ser alterada após a
instalação, pelo arquivo de config do Tomcat.

A senha do usuário administrativo do Tomcat (nome padrão “admin”) pode ser


deixada em branco, mas é altamente recomendável definir uma senha, uma vez que
se trata de um serviço de rede. Em um servidor ou estação, acessível via LAN (rede
interna) ou Internet, onde o Tomcat ficar ativo constantemente, é recomendável
ainda definir um nome de usuário diferente do padrão, para maior segurança.

O instalador do Tomcat procura detectar uma versão de Java Runtime (JRE)


instalada, necessária para seu funcionamento.
37

Diferente do Tomcat 5.0 e 4.1, que necessitavam do Java Development Kit


(JDK) para compilar páginas JSP, o Tomcat 5.5 em diante já traz embutido e usa o
complilador Java Eclipse JDT para compilação de páginas JSP. Isto significa que
para rodar o Tomcat 5.5 em diante, basta o Java Runtime Environment (JRE). Como
ajuste posterior avançado, o Tomcat pode ainda ser configurado para utilizar um
compilador alternativo ao compilar JSPs, como o compilador Java do JDK ou
qualquer outro suportado pelo Apache Ant.

Completadas as informações solicitadas pelo assistente, clique “Install” e


aguarde o término da instalação.
38

Ao término da instalação, o assistente dá a opções de executar o Tomcat pela


primeira vez e de visualizar o Leia-Me.
39

Definindo variáveis

Complementando a instalação do Java 2 SDK, defina a variável de ambiente


JAVA_HOME apontando para seu local de instalação. Esta variável de ambiente
padrão é usada pelo Tomcat e vários outros sistemas baseados em Java, para
determinar a JVM preferencial. Isto é muito importante se houver mais de uma
instalação de J2SE no computador, mas a variável JAVA_HOME deve ser definida
mesmo se houver apenas uma versão instalada.
Além da variável JAVA_HOME é necessário configurar a variável JRE_HOME
que é o diretório onde a máquina virtual está instalada.

Inicializando e parando o Tomcat

- Entre no diretório bin do Tomcat:

[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

Na home-page padrão do Tomcat, o link "Tomcat Documentation" dá acesso


a toda a documentação necessária, instalada localmente, inclusive a API
Servlet/JSP da Sun, inclusa com o Tomcat.

O Tomcat inclui um contexto chamado Tomcat Manager, que provê uma


interface web amigável para gerenciar as aplicações (contextos) — listar, parar,
iniciar, recarregar, instalar (deploy), remover (undeploy) — e ver informações e
estado do servidor e de suas conexões/threads. O instalador Windows solicita o
login de usuário (padrão é admin) e a senha para acesso a este recurso.

Para acessar o Tomcat Manager, siga o link respectivo no quadro


"Administration" da home-page padrão do servidor, ou acesse diretamente o
endereço http://localhost:8080/manager/html.

Integrando Apache com Tomcat

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.

1. Fazer o download do conector Tomcat para Apache no site do Tomcat


http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.26/
2. Salvar o arquivo do conector dentro da pasta modules do Apache com observsão que o
mesmo deverá ter o seguinte nome: mod_jk.so.
3. Inserir no final do arquivo httpd.conf do Apache a seguintes instruções para que o
mesmo possa chamar o tomcat quando solicitado.

### Integração do Apache e Tomcat


LoadModule jk_module modules/mod_jk.so

Configura o local do arquivo works.properties


JkWorkersFile /tomcat/conf/workers.properties
41

Configura os arquivos de LOGS


JkLogFile /tomcat/logs/mod_jk.log
JkLogLevel info

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>

Criar um arquivo "workers.properties" contendo as seguintes instruções e salva-lo na pasta


conf do Tomcat

Criando “ workers.properties”

worker.list=worker1
/manager/* worker1
/admin/* worker1
/examples/servlet/* worker1
/examples/jsp/* worker1
/examples/* worker1
42

8. INGLES INSTRUMENTAL
Objetivo

Esse documento tem por objetivo extrair os dados do seguinte site:


http://news.bbc.co.uk/2/hi/business/7384427.stm, e utilizar as técnicas de skimming
para realizar a leitura dinâmica conforme estudos realizado em sala de aula.

Procedimentos

Para o melhor proceder da utilização das técnicas, fora selecionadas do texto


original as palavras mais conhecidas, junto com conjugações verbais de tempo e
associações de conhecimentos precedentes de noticias jornalísticas.

Texto Original

Oil hits $120 a barrel milestone


The price of a barrel of oil hás risen above $120 for the first time, driven by concerns
about the situations in Nigeria and northern Iraq.
US light sweet crude rose to a record of $120.36 a barrel in morning trading in New
York before falling back to a record close of $119.97 - up $3.65.
Another factor pushing up the oil price has been the US dollar's weakness as
investors opt to back commodities.
Since the beginning of the year, oil has hit a string of new highs.
This has led to gas and petrol prices reaching unprecedented levels, in many parts of
the world.
'Lingering hotspot'
In Northern Iraq, Turkish forces have renewed cross-border raids against Kurdish
insurgents. Meanwhile in Nigeria, rebels have attacked oil wells and pipelines which
feed an export terminal.
"Nigeria is the lingering hotspot the markets will be focusing on," said MF Global
analyst Ed Meir.
He added that while some production in the oil-rich African nation, there were
"reports of fresh violence, as another pipeline explosion hás shut in more oil
production".
43

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

Através da técnica de skimming conseguimos subtrair do texto diversas palavras,


que nos podem levar a formar orações.

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

Através de todas as tarefas aqui descritas nesse trabalho, podemos concluir


que durante todo o primeiro período do ano 2008, conseguimos realizar diversas
tarefas no âmbito do curso de redes de computadores, tarefas tais como: Instalar,
configurar, e integrar servidor Tomcat e Apache, trabalhar com conversão de bases
decimais, criação e confecção de cabos par trançado Cat 5E EIA/TIA 568A e 568B e
cabos cross-over, introdução à lógica de programação e linguagem de programação
Java, utilização de ferramentas pra computação como HTML, detalhada introdução
sobre o protocolos TCP como suas camadas e serviços, DNS, SOCKETS, TCP,
UDP, portas IP, Arquitetura Cliente/Servidor, técnicas de leitura de Skmming
utilizada nos estudos e inglês instrumental.

Você também pode gostar