quinta-feira, 16 de setembro de 2010

Perifericos

Periféricos de computadores
João Canas Ferreira
Arquitectura de Computadores
FEUP/LEIC
Contém figuras de “Computer Organization and Design” (cap. 8), D. Patterson & J. Hennessey, 3a. ed., Elsevier
Tópicos
1 Periféricos: aspectos gerais
2 Discos magnéticos
3 Comunicação entre CPU e periféricos
4 Desempenho de subsistemas de E/S
ArqComp: Periféricos de computadores 2/37 2007-05-19
1 Periféricos: aspectos gerais
2 Discos magnéticos
3 Comunicação entre CPU e periféricos
4 Desempenho de subsistemas de E/S
ArqComp: Periféricos de computadores 3/37 2007-05-19
Notas:
3
Subsistema de entrada/saída de dados
+ Todos os componentes usados para transferir dados de/para o
subsistema “CPU + Memória” são designados como periféricos.
+ Periféricos típicos são:
1. teclado, rato, monitor;
2. discos magnéticos, discos ópticos;
3. dispositivos de ligação a redes;
4. impressoras, scanners, etc.
+ Alguns critérios de qualidade:
1. fiabilidade: medida do tempo de funcionamente até falhar;
2. disponibilidade: medida do tempo em que o sistema está
operacional;
3. expansibilidade.
+ Desempenho depende de muitos factores: características do
dispositivo, sistema operativo, método de comunicação com o
resto do sistema.
ArqComp: Periféricos de computadores 4/37 2007-05-19
Notas:
4
Classificação de periféricos
+ A diversidade de periféricos é enorme. Uma classificação
simples utiliza os seguintes três critérios:
+ Comportamento:
1. Entrada (leitura única);
2. Saída (escrita única, sem leitura);
3. Armazenamento (leitura e escrita, geralmente mais que
uma vez).
+ Tipo de cliente/fornecedor: Humano ou máquina.
+ Taxa de dados: taxa máxima de transferência de dados para
CPU ou memória.
+ Exemplo: Teclado
É dispositivo de entrada,
É usado por humano
É taxa máxima de dados de 10 bytes/segundo.
ArqComp: Periféricos de computadores 5/37 2007-05-19
Notas:
5
CPU e periféricos: exemplo
ArqComp: Periféricos de computadores 6/37 2007-05-19
Notas:
6
Critérios de desempenho
+ Os critérios de desempenho dependem muito da aplicação.
+ Exemplo: “largura de banda” de E/S (medida de débito) pode
ser considerada de duas maneiras diferentes:
É Que quantidade de dados passa pelo sistema por unidade
de tempo? (unidade: B/s)
É Quantas operações de E/S podem ser executadas por
unidade de tempo?
Aplicações de multimédia, com transferências de ficheiros
longos, estão no primeiro caso.
Recepção de reservas (transacções pequenas) está no 2o caso.
+ Noutras aplicações, interessa o “tempo de resposta” (medida
de latência, que pode ser dependente da largura de banda da
comunicação). Exemplo: computador desktop.
+ Existem aplicações em que interessam ambos os parâmetros:
Multibanco, servidores Web.
ArqComp: Periféricos de computadores 7/37 2007-05-19
Notas:
7
1 Periféricos: aspectos gerais
2 Discos magnéticos
3 Comunicação entre CPU e periféricos
4 Desempenho de subsistemas de E/S
ArqComp: Periféricos de computadores 8/37 2007-05-19
Notas:
8
Disco magnético: vista interna
ArqComp: Periféricos de computadores 9/37 2007-05-19
Notas:
9
Discos magnéticos variados
ArqComp: Periféricos de computadores 10/37 2007-05-19
Notas:
10
Características de um disco magnético
+ Sistema de armazenamento não-volátil.
+ Conjunto de discos (de metal) rotativos com eixo comum: 5400–15000 RPM.
+ Cada disco tem 2 superfícies de gravação cobertas com material magnético.
+ Cada superfície está dividida em círculos concêntricos: as pistas.
+ Cada pista está dividida em sectores (tradicionalmente de 512 bytes, mais
recentemente 4096 bytes).
+ Todas as pistas que estão simultaneamente sob as cabeças de leitura
constituem um “cilindro” (vertical).
+ Em cada pista, a informação está organizada em: no de sector, espaço livre,
informação do sector, espaço livre, no de sector, espaço livre, etc.
+ Actualmente, o número de sectores varia com a posição da pista: pistas
exteriores têm mais sectores.
+ A densidade (bits por unidade de área) tem vindo a aumentar: 100% ao ano
entre 1997 e 2001; 40% ao ano actualmente.
+ Em 2001: 20 × 109 bits/polˆ2 (comercial), 60 × 109 bits/polˆ2 (lab);
+ A escrita ou leitura são efectuadas por cabeças de escrita/leitura ligadas a
um braço. Todas as cabeças de leitura se movimentam simultaneamente:
todas estão sobre o mesmo sector da mesma pista (mas de superfícies
diferentes).
+ A capacidade é indicada em potências de 10: 1 MB = 106 bytes.
ArqComp: Periféricos de computadores 11/37 2007-05-19
Notas:
11
Constituição de um disco magnético
ArqComp: Periféricos de computadores 12/37 2007-05-19
Notas:
12
Tempos de operação
+ Tempo de acesso—soma dos três tempos mencionados a
seguir;
+ Tempo de busca—tempo que demora a pôr o braço no cilindro
pretendido. Fabricantes especificam os tempos
É máximo,
É mínimo,
É médio (soma dos tempos de todas as buscas possíveis/no
de buscas possíveis).
+ Latência de rotação—tempo que o sector pretendido demora a
“surgir” debaixo do braço após cabeça chegar ao cilindro:
5.6 ms–2.0 ms.
+ Tempo de transferência—tempo que demora a transferir um
sector já posicionado sob a cabeça: 30–80 MB/s (SATA: > 125
MB/s)
+ Alguns controladores de disco têm uma cache: 320 MB/s.
+ Tempo de transferência reduz-se 40% ao ano;
+ Tempo de acesso reduz-se 10% ao ano.
ArqComp: Periféricos de computadores 13/37 2007-05-19
Notas:
13
Proximidade dos acessos
O princípio da proximidade também vale para acessos a disco: na
prática, o tempo de busca médio é muito inferior ao especificado
pelos fabricantes.
Gráficos mostram a percentagem de acessos com buscas de
comprimento entre os dois valores do eixo dos YY.
Exemplo (gráfico da esquerda): 8% dos acessos envolveu uma
distância de busca entre 16 e 30 cilindros.
Linha 0 é um caso especial: acessos no mesmo cilindro.
ArqComp: Periféricos de computadores 14/37 2007-05-19
Notas:
14
Cálculo do tempo de leitura
Objectivo: determinar o tempo médio para ler/escrever um sector
de 512 bytes de um disco de 10000 RPM. Tempo médio de busca é
de 6 ms, taxa de transferência de 50 MB/s. O controlador tem um
overhead de 0.2 ms.
É Tempo médio de busca: 6ms
É Latência de rotação (em segundos):
0.5
10000/60
= 0.003
É Tempo de transferência (em segundos):
0.5KB
50MB
=
0.5
50 × 103 = 0.00001
É Controlador acrescenta sempre 0.2ms por transferência.
É Total = 6.0 + 3.0 + 0.01 + 0.2 = 9.2ms
É Se o tempo médio de busca for apenas 25% do especificado:
Total = 1.5 + 3.0 + 0.01 + 0.2 = 4.7ms
ArqComp: Periféricos de computadores 15/37 2007-05-19
Notas:
15
Disponibilidade e fiabilidade
+ Medida de fiabilidade: MTTF (mean time to failure), tempo
médio até falhar. Exemplo: o mesmo fabricante vende modelos
com MTTF: 1200000 h, 600000 h e 330000 h (a 25 oC).
+ Medida de interrupção de serviço: MTTR (mean time to repair),
tempo médio de reparação.
+ Tempo médio entre avarias MTBF(mean time between failures):
MTTF + MTTR.
+ Medida de disponibilidade:
disponibilidade =
MTTF
MTBF
=
MTTF
(MTTF+MTTR)
+ Como aumentar MTTF ?
Aumentar a tolerância a falhas através do uso controlado de
redundância. Por exemplo, fazer acessos simultâneos a dois
discos, de forma a que cada um seja sempre uma cópia do
outro.
RAID: Redundant Array of Inexpensive Disks
ArqComp: Periféricos de computadores 16/37 2007-05-19
Notas:
16
1 Periféricos: aspectos gerais
2 Discos magnéticos
3 Comunicação entre CPU e periféricos
4 Desempenho de subsistemas de E/S
ArqComp: Periféricos de computadores 17/37 2007-05-19
Notas:
17
Barramentos (1/2)
+ Infra-estrutura de comunicação: barramento.
Meio de comunicação partilhado que usa um conjunto de linhas
comuns para ligar múltiplos subsistemas.
+ Vantagens:
É Versatilidade (é fácil adicionar mais subsistemas)
É Baixo custo
+ Desvantagens:
É Possível estrangulamento da comunicação
É Projecto delicado devido a limitações físicas.
+ Barramentos são compostos por linhas de dados e linhas de
controlo.
+ Linhas de controlo: são usadas para efectuar pedidos e para
especificar o tipo de dados.
+ Linhas de dados: transmitir dados, endereços e parâmetros de
comandos complexos.
ArqComp: Periféricos de computadores 18/37 2007-05-19
Notas:
18
Barramentos (2/2)
+ Transacção de barramento: sequência de operações do barramento iniciada
por um pedido. Pode envolver muitas operações individuais.
+ Barramentos podem ser dividos em:
É barramentos processador-memória: curtos, de muito alta
velocidade, adaptados ao susbsistema de memória;
É barramentos de E/S: mais compridos, vários tipos de dispositivos
com taxas de transferência muito diferentes. Geralmente, não ligam
directamente ao CPU.
+ Um barramento síncrono inclui uma linha de relógio e usa um protocolo fixo
de comunicação (com tempos relativos ao sinal de relógio do barramento):
protocolos tendem a ser rápidos e simples.
Desvantagens: todos os dispositivos devem operar à mesma velocidade e
os barramentos não podem ser compridos (degradação do sinal de relógio).
Muito usados em ligações processador-memória.
+ Um barramento assíncrono não tem um sinal de relógio comum. Adpata-se
naturalmente a dispositivos de diferentes velocidades.
Desvantagens: A transmissão de informação deve ser coordenada de
forma mais complexa (protocolo de “handshaking”).
+ Tendência: passar de barramentos com muitas linhas em paralelo para
ligações ponto-a-ponto com poucas linhas e dispositivos ligados por
comutadores.
ArqComp: Periféricos de computadores 19/37 2007-05-19
Notas:
19
Exemplos de barramentos de E/S
+ Dois barramentos normalizados muito usados.
+ Baseados em comunicação ponto-a-ponto (barramentos
“série”).
ArqComp: Periféricos de computadores 20/37 2007-05-19
Notas:
20
Protocolo de comunicação: “handshaking” (1/2)
+ ReadReq: linha controlada pelo dispositivo de E/S.
+ DataRdy: linhas controladas pela memória.
+ Data e Ack : linhas partilhadas,
ArqComp: Periféricos de computadores 21/37 2007-05-19
Notas:
21
Protocolo de comunicação: “handshaking” (2/2)
Exemplo de uma transacção assíncrona:
Transferência de posição de memória para dispositivo de E/S:
1. Memória detecta que sinal ReadReq está a “1”: obtém endereço
da linha de dados e activa Ack para indicar que foi “activada”.
2. Dispositivo de E/S detecta Ack e liberta as linhas de dados e
ReadReq.
3. Memória detecta ReadReq a “0” e coloca Ack a “0” também.
4. Quando a memória tem os dados prontos a transferir, coloca a
informação nas linhas de dados e coloca DataRdy a “1”.
5. Dipositivo E/S detecta DataRdy a “1”, lê dados do barramento,
após o que leva Ack a “1”.
6. Memória detecta Ack a “1”, pelo que baixa DataRdy e liberta as
linhas de dados.
7. Dispositivo de E/S detecta que DataRdy está a “0”, e coloca Ack
a “0”. Pode começar uma nova transacção.
ArqComp: Periféricos de computadores 22/37 2007-05-19
Notas:
22
Sistema baseado num Pentium 4
ArqComp: Periféricos de computadores 23/37 2007-05-19
Notas:
23
Características de controladores E/S
ArqComp: Periféricos de computadores 24/37 2007-05-19
Notas:
24
Tarefas do sistema operativo
+ Características relavantes do sistema de E/S:
É Vários programas partilham o sistema de E/S.
É Sistema de E/S usam (muitas vezes) interrupções para
comunicar informação sobre as operações de E/S, levando
o CPU a entrar em modo supervisor.
É O controlo de baixo nível dos dispositivos de E/S é muito
complexo porque implica a gestão de muitos eventos
simultâneos e porque os requisitos dos dispositivos são
muito minuciosos.
+ Tarefas a executar pelo S. O.:
É Garantir que cada processo apenas acede aos dispositivos
(ou às partes dos dispositivos) a que tem direito.
É Fornecer abstracções que permitam isolar o acesso aos
dispositivos dos detalhes de cada um deles.
É Atender as interrupções geradas pelos dispositivos de E/S.
É Garantir acesso equitativo e eficiente aos dispositivos.
ArqComp: Periféricos de computadores 25/37 2007-05-19
Notas:
25
Comandos de E/S
+ Para executar uma transferência de E/S, o CPU deve seleccionar o
dispositivo e transmitir um ou mais comandos.
+ Método 1: dispositivos mapeados em memória
É Uma secção do espaço de endereçamento é associada a um
dispositivo: leituras e escritas para esses endereços são interpretadas
como comandos.
O sistema de memória ignora os acessos, mas o controlador do
dispositivo detecta-os e actua em concordância.
É O acesso aos dispositivos é controlado: os dispositivos apenas surgem
no espaço de endereçamento do sistema operativo (e não dos
processos individuais).
É Os dispositivos usam os endereços para determinar o tipo de comando.
É A família MIPS usa esta abordagem. (E o nanoMIPS também. . . )
+ Método 2: instruções especiais de I/O
É Alguns processadores têm instruções especiais de E/S que permitem
especificar o número do dispositivo e os dados a enviar/receber.
É A arquitectura IA-32 da Intel (386, Pentium, etc.) usa esta abordagem.
ArqComp: Periféricos de computadores 26/37 2007-05-19
Notas:
26
Comunicação com o processador
Existem duas abordagens à estratégia de comunicação entre CPU e periféricos:
Varrimento (polling)
+ O CPU verifica periodicamente o estado do periférico.
+ O dispositivo simplesmente coloca a informação apropriada num registo,
que é acedido pelo CPU.
+ Vantagem: simplicidade.
+ Desvantagem: pode desperdiçar tempo de CPU significativo. O processador
pode aceder muitas vezes ao dispositivo, apenas para constatar que este
ainda não está pronto.
Interrupções
+ Quando o dispositivo termina uma tarefa, envia uma interrupção ao CPU
(activando uma linha pré-definida).
+ As interrupções são assíncronas em relação à execução de instruções: uma
interrupção não está associada à execução de uma instrução e não implica o
protelamento/suspensão da execução da instrução.
O CPU apenas necessita de verificar se existe uma interrupção pendente
quando inicia a execução de uma nova instrução.
+ Uma interrupção pode vir acompanhada de informação adicional (por
exemplo, a identidade do dispostivo que a gerou ou a sua prioridade).
ArqComp: Periféricos de computadores 27/37 2007-05-19
Notas:
27
Tratamento de interrupções
...
...
sw $fp, 24($sp)
addu $fp, $sp, 32
move $t0, $a0
sw $t0, 20($sp)
sub $a0, $t0, 1
jal rotina
move $t1, $v0
lw $t0, 20($sp)
sw $t1, 16($sp)
sub $a0, $t0, 2
jal rotina
move $t2, $v0
lw $t1, 16($sp)
add $v0, $t1, $t2
...
# tratmento da interrupção
.text 0x80000080
mfc0 $k0, $13
mfc0 $k1, $14
andi $k0, $k0, 0x003c
...
jr $k1
1. execução “normal”
Periférico
2. interrupção
CPU
3. atendimento da
interrupção
4. retomar a execução “normal”
INTR
ACK
(interrupção atendida)
CPU
periférico
ArqComp: Periféricos de computadores 28/37 2007-05-19
Notas:
28
Transferências memória $dispositivos E/S: DMA
+ A transferência de dados entre um dispositivo de E/S e
memória ocorre tipicamente em duas etapas:
1. transferência do dispositivo de E/S para o CPU;
2. transferência do CPU para memória.
+ Em transferências por DMA (Direct Memory Access), os dados
são transferidos directamente do dispositivi para a memória.
+ DMA é realizado por um controlador dedicado, que pode
trabalhar de maneira independente do processador central.
1. CPU prepara a transferência DMA: identificação do
dispositivo, operação a efectuar, endereço de memória
inicial, no de bytes a transferir.
2. Controlador de DMA efectua a transferência, enquanto CPU
prossegue com as respectivas actividades.
3. Após terminar a transferência, o controlador de DMA envia
uma interrupção ao CPU.
ArqComp: Periféricos de computadores 29/37 2007-05-19
Notas:
29
Sistema com DMA
CPU
endereços
dados
Memória
RAM
Controlador
DMA
pedido de controlo do barramento
autorização
Periférico
A
Periférico
B
activar periféricoA
activar
periférico B
pedido de
transferência de A
pedido de
transferência de B
IO_read_or_write
MEM_read_or_write
fim de operação
(interrupção)
ArqComp: Periféricos de computadores 30/37 2007-05-19
Notas:
30
1 Periféricos: aspectos gerais
2 Discos magnéticos
3 Comunicação entre CPU e periféricos
4 Desempenho de subsistemas de E/S
ArqComp: Periféricos de computadores 31/37 2007-05-19
Notas:
31
Impacto de E/S sobre o desempenho
Um programa demora 100 s a terminar. Desse tempo, 90 s são de
tempo de CPU. Assuma que o desempenho de CPU melhora 50%
por ano durante cinco anos, enquanto o sistema de E/S permanece
igual. Ao fim de cinco anos, quanto mais rápido é o programa?
É Tempo de E/S = 100 - 90 = 10 s
É Tabela para cinco anos (valores arredondado à unidade):
Ano CPU (s) E/S (s) Total (s) % E/S
0 90 10 100 10
1 90/1.5 = 60 10 70 14
2 60/1.5 = 40 10 50 20
3 40/1.5 = 27 10 37 27
4 27/1.5 = 18 10 28 36
5 18/1.5 = 12 10 22 45
É Melhoria de desempenho do CPU: 90/12 = 7.5
É Melhoria de desempenho total: 100/22 = 4.5
ArqComp: Periféricos de computadores 32/37 2007-05-19
Notas:
32
Abordagem ao projecto de um sistema E/S
+ Tarefa típica: projectar sistema de E/S de forma a respeitar
restrições de “largura de banda” para uma certa carga
(conjunto de programas a executar).
+ Alternativa: dado um sistema de E/S parcialmente configurado,
equilibrar o sistema de forma a obter a maior largura de banda
possível.
+ Abordagem geral:
1. Determinar o elo mais fraco no sistema de E/S.
2. Configurar este componente para ter o desempenho
pretendido (taxa de transmissão).
3. Determinar os requisitos do resto do sistema e configurar
os demais elementos para permitirem obter a taxa de
transmissão determinada anteriormente.
ArqComp: Periféricos de computadores 33/37 2007-05-19
Notas:
33
Projecto de um sistema de E/S: especificação
(Trata-de de um exemplo muito simplificado. Muitas vezes apenas
simulação permite obter resultados suficientemente rigorosos.)
Especificação do sistema:
1. CPU capaz de executar 3 × 109 instruções/s. Em média, o S. O. dispende
100000 instruções por operação de E/S.
2. Barramento de acesso a memória com uma taxa de transferência de
1000 MB/s.
3. Controladores de disco SCSI Ultra320 com uma taxa de 320 MB/s e capazes
de usar até 7 discos.
4. Discos magnéticos com taxas de transferência de 75 MB/s e um tempo
médio conjunto de busca e latência rotacional de 6 ms.
A carga (para o sistema de E/S) consiste em leituras de 64KB
(leitura sequencial de sectores de uma mesma pista). Os
programas do utilizador gastam 200000 instruções por cada
operação de E/S.
Objectivo: Determinar a maior taxa sustentável de E/S, bem como o
número de discos e de controladores necessários.
(Assumir que nunca existem conflitos nos acessos a disco.)
ArqComp: Periféricos de computadores 34/37 2007-05-19
Notas:
34
Projecto de um sistema de E/S: cálculos (I)
Os componentes fixos são o CPU e memória.
Começar por determinar as restrições impostas por estes
componentes.
É Taxa máxima de E/S do CPU:
Taxa de execução de instruções
No de instruções por E/S
=
3 × 109
(200+100) × 103 = 10000
E/S
s
É Barramento de memória (transferências de 64 KB):
Largura de banda
Bytes por E/S
=
1000 × 106
64 × 103 = 15625
E/S
s
O CPU é o limitador do desempenho. O sistema deve ser
configurado para uma taxa de 10000 operações de E/S por
segundo.
ArqComp: Periféricos de computadores 35/37 2007-05-19
Notas:
35
Projecto de um sistema de E/S: cálculos (II)
Determinar os restantes requisitos do sistema.
É Tempo gasto por cada disco numa operação de E/S:
Tempo por E/S = 6+
64KB
75MB/s
= 6.9ms
É Cada disco pode realizar:
No operações de E/S =
1000
6.9
146
E/S
s
É Para saturar o CPU são necessárias 10000 operações E/S por segundo.
Portanto, o número de discos é:
No de discos =
10000
146
69discos
É A taxa de transmissão de um disco é:
Tamanho da transferência
Tempo de transferência
=
64KB
6.9ms
9.56MB/s
É 7 discos necessitam de 7 × 9.56 = 66.9 MB/s, o que é menor que 320. Logo,
o controlador não é saturado pelos 7 discos.
É O sistema necessitará de b69/7c = 10 controladores.
ArqComp: Periféricos de computadores 36/37 2007-05-19
Notas:
36
Elementos de consulta
+ [Patterson & Hennessy]:
É Secções 8.1, 8.2 (excepto parte sobre RAID [pág. 575–579
da ed. inglesa]), 8.4–8.6
+ [Delgado & Ribeiro]:
É Secções 6.3–6.4 (parcialmente 6.2)
+ [Arroz, Monteiro & Oliveira]:
É Cap. 14
ArqComp: Periféricos de computadores 37/37 2007-05-19

1 Periféricos: aspectos gerais

Subsistema de entrada/saída de dados

+ Todos os componentes usados para transferir dados de/para o
subsistema “CPU + Memória” são designados como periféricos.
+ Periféricos típicos são:
1. teclado, rato, monitor;
2. discos magnéticos, discos ópticos;
3. dispositivos de ligação a redes;
4. impressoras, scanners, etc.
+ Alguns critérios de qualidade:
1. fiabilidade: medida do tempo de funcionamente até falhar;
2. disponibilidade: medida do tempo em que o sistema está
operacional;
3. expansibilidade.
+ Desempenho depende de muitos factores: características do
dispositivo, sistema operativo, método de comunicação com o
resto do sistema.

Classificação de periféricos

+ A diversidade de periféricos é enorme. Uma classificação
simples utiliza os seguintes três critérios:
+ Comportamento:
1. Entrada (leitura única);
2. Saída (escrita única, sem leitura);
3. Armazenamento (leitura e escrita, geralmente mais que
uma vez).
+ Tipo de cliente/fornecedor: Humano ou máquina.
+ Taxa de dados: taxa máxima de transferência de dados para
CPU ou memória.
+ Exemplo: Teclado
É dispositivo de entrada,
É usado por humano
É taxa máxima de dados de 10 bytes/segundo.

quarta-feira, 8 de setembro de 2010

Mais brasileiros acessam a rede, diz pesquisa



A Historia da Internet



Linux uma realidade que cabe em qualquer maquina…

Bem, as qualidades do Linux, não preciso citar aqui, mas como posso fazer com que um dono de pequena e média empresa que geralmente não sabe nada de informática saiba isso também? Existem muitas coisas que tornam esta tarefa difícil, vou citar alguma delas:
1. Pequenas e médias empresas quase nunca tem um profissional responsável pela área de informática, sendo assim quase sempre fazemos negócios com os donos delas, que nem sempre possuem conhecimento de informática.

2. A desculpa de que o Linux é gratuito também não funciona muito, pois essas empresas usam muitos softwares piratas e a fiscalização em cima disso em empresas deste potencial é quase nula.

3. Quando essas empresas possuem sistemas de gerência instalados, geralmente os sistemas são feitos em linguagem Visual Basic com banco de dados Access, por serem mais baratos e simples. Mais um obstáculo para o Linux.

4. Colocar Linux como firewall também não convence muito, já que dados dessas empresas não valem muito, a ponto de não se justificar tal investimento.

5. O pensamento de donos de empresa geralmente são do tipo: está funcionando? Por que trocar? Pra que investir em informática? Etc…

Essas e outras barreiras prejudicam a entrada do Linux e da gente também, já que gostamos de trabalhar com Linux. Após terem lido o texto acima, devem estar me perguntando, então como posso ganhar dinheiro com Linux nessas empresas? Agora é que entra a parte comercial do Linux a qual pretendo detalhar.

Existem diversas situações em que podemos incluir o Linux nessas empresas, rodando com o Windows e os substituindo aos poucos claro, exemplo:

1. Hoje em dia quase todas as pequenas e médias empresas informatizadas possuem mais de dois computadores, sendo que quase sempre não estão ligados em rede. Opa, aí está uma chance de fazermos uma proposta, ligar os computadores em rede. Bom, até agora nada de Linux. Posso ganhar dinheiro interligando computadores e compartilhando arquivos e impressoras, solução péssima para quem é programador, mas já é uma entrada no mercado, ainda sem Linux na solução é verdade, mas tudo começa daqui, veja só o próximo passo.

2. Agora a empresa já compartilha dados, impressoras, internet, porém não compartilha o seu sistema, ele é feito em Visual Basic e Access, portanto não é um sistema de rede. E agora? Agora é a alma da proposta, um sistema semelhante feito em PHP com MySQL, Apache e Linux é a solução. Com esse sistema você terá mil motivos para convencer o dono da empresa a implementá-lo, como:

* Sistema multiplataforma, eficiente e barato e que ainda pode ser compartilhado na rede e com a vantagem de não usar programas clientes e sim apenas um browser.
* Agora já se pode falar em não se ter softwares piratas na empresa, pois já foi corrigido o grande problema, que era o sistema antigo da loja.
* As atualizações e correções do sistema também são mais rápidas, já que não preciso compilar e nem instalar todos os programas clientes de novo.

Entre outras coisas mais que podemos falar, vai variar de empresa para empresa.

3. Se a empresa não possui um acesso direto à internet, é hora de tentarmos convencê-los a ter uma conexão ADSL, pois atualmente é a maneira mais rápida e barata de acesso. Quem sabe aí não entra um firewall em iptables? Se falar que o firewall pode ser um 486 jogado no canto do depósito, as chances são grandes não acham?

Com uma solução simples como essa, conseguimos serviços para profissionais de redes, programadores, administradores de sistemas, profissional de segurança, além de desenvolver nosso lado consultor e comercial, já que temos um excelente produto que é o Linux, porém ainda não sabemos vender nosso peixe como Bill Gates faz com Windows e seus produtos.

Essa solução, também é uma excelente proposta para empresas que ainda estão começando a se informatizar.

Porque as redes sem fio (wireless) são tão limitadas?

Atualmente, as redes ‘wireless’ (sem fio) na realidade ainda tem muitos fios, pois, como o sinal se degrada muito rapidamente a medida em que nos afastamos do roteador, precisamos instalar antenas mais potentes (que tambem tem sua limitação), ou instalarmos outros ‘nós de rede’, chamados pontos de acesso.

O problema é que os ‘nós da rede’ ou pontos de acesso não falam diretamente entre si. É um equipamento (hub, switch, etc) que faz a comunicação entre eles – através de cabos. Assim sendo, uma rede ‘wireless’ ainda tem muitos fios. Imagine implantar um sistema wireless numa cidade inteira… vai ficar muito caro, devido a problemática do cabeamento para os pontos de acesso.
NOVA TECNOLOGIA – pontos de acesso wireless realmente sem fio!

Mas esses problemas agora poderão ser resolvidos graças ao trabalho da equipe do professor Andreas Kassler, da Universidade de Karlstad, na Suécia. A pesquisa contou com a participação do brasileiro Marcel Cavalcanti de Castro, cientista da computação formado pela Universidade Federal de Goiás.

A ideia é que os nós da rede – os pontos de acesso – comuniquem-se entre si, trocando dados diretamente, em vez de cada um deles ter uma conexão a cabo com a internet.

SOLUÇÃO – Múltiplas placas de rede

Atualmente, como vimos acima, a tecnologia tem um empecilho grave: além da problemática do cabeamento, a capacidade de transmissão de dados da rede cai rapidamente à medida que são acrescentados novos nós, porque cada um deles gasta tempo e largura de banda comunicando-se com os demais.

O Dr. Kassler resolveu o problema equipando cada um dos nós da rede com várias placas de rede e fazendo-as trocar dados em várias frequências diferentes simultaneamente. Os ganhos são exponenciais, garantindo que a capacidade de transmissão de dados da rede não sofrerá nenhuma degradação.

Testes com VoIP

A pesquisa chamou a atenção das operadoras e empresas de telefonia porque o sistema é muito mais barato de ser instalado do que a colocação de cabos até cada um dos pontos de acesso à internet que se deseja implantar.

A tecnologia será testada pela Deutsche Telekom durante um ano. Inicialmente os testes incluirão os laboratórios da empresa e a Universidade de Karlstad. A seguir, a avaliação será levada para um ambiente urbano real de Berlim. Os testes serão focados na telefonia por IP.
Fonte: Inovação Tecnológica

Matemática das mascaras de IP…

Você sabe o que significam matematicamente as máscaras de rede? Um /24, /25? Um 255.255.128.0 define o quê? No iptables um 10.1.0.0/28 tem qual finalidade? E o que isto tem a ver com as classes de IPs? Para quem não for alérgico à escovação de bits…



Mesmo aqueles que não são familiarizados com redes, número IP, já se depararam com este item de configuração: máscara de rede.
Sem dúvida que a mais usada, mais conhecida, é a máscara 255.255.255.0, tanto que muitos nem se quer sabem que ela pode ser outro valor e não apenas este. Poucos também sabem o que este número “mágico” significa, o que ele representa e quão importante ele é para uma rede. E mais, o quão desastroso pode ser se ele estiver errado, não em conformidade com a real configuração de uma rede local.
Neste artigo procuro descrever tecnicamente o princípio existente na composição da máscara de rede, o que ele representa e para que serve. Faço um comparativo com o antigo roteamento baseado em Classes de IP e porque isto ele abandonado.

Se você é do tipo que sente arrepios quando ouve falar de operações bit a bit, como AND, OR ou XOR, prepare-se: as máscaras de rede tem tudo a ver com escovação de bits. Leitura não recomendada para alérgicos binários.



Você sabia que um número IP não serve para realizar a comunicação entre uma máquina e outra?
Esta frase soa estranha, mas vou explicar o seu contexto: sempre uma máquina conversa com outra ela usa o endereço de enlace dela. Sim, enlace (referência ao modelo TCP/IP de quatro camadas, não o OSI)!
Considerando a rede Ethernet, com a atual Fast Ethernet (100Mbps) como sua maior representante, os endereços de hardware das placas de rede são constituídos de 48 bits (sendo que os primeiros 24 dizem qual o fabricante da placa de rede). É o número em HEXA que você vê quando executa um ifconfig, algo como 00:50:56:C0:00:06. Claro que todo mundo que já configurou um servidor DHCP sabe bem o que é este número.
Pois bem, a comunicação é realizada colocando-se o endereço de hardware do destino no pacote, determinando que este pacote deve ser entregue a máquina cujo endereço de placa de rede é o 00:50:56:C0:00:06. O problema é que isto só funciona em rede local, pois a origem precisa antecipadamente conhecer o MAC ADDRESS do destino e para isto que serve o protocolo ARP (que não irei descrever aqui).
Mas e quando o meu destino não está na mesma rede que eu e não posso colocar o MAC de destino no pacote? É aí que entra o que se chama de roteamento IP.

Analisando o número IP do destino minha máquina verifica que precisa repassá-lo ao gateway, pois o destino não é local. O gateway, por sua vez, compara o Ip de destino com sua tabela de rotas para determinar para onde o pacote vai agora, e assim sucessivamente até que o pacote chegue na rede local do destino, onde finalmente o último gateway irá enviar o pacote para o “MAC ADDRESS do destino”. Cada etapa do roteamento envolve o MAC address do gateway de saída (este artigo é uma introdução e procura descrever apenas as máscaras e não as tarefas de um roteador).
Costumo aplicar em aula a seguinte analogia: como o CEP dos correios. Ele não serve para determinar a entrega, pois a carta será entregue para a Rua e número de uma determinada cidade. Serve apenas para roteamento, pois analisando o número sabe-se o que fazer com ele. Se estou no RS e o CEP não começa com o dígito 9, então o destino não é RS, pois “9″ no início do CEP determina que é algum lugar no RS.
Logo, entendam o contexto quando digo que o número IP não serve para que uma máquina se comunique com outra. Quero dizer que a comunicação é sempre de endereço MAC para endereço MAC e que o número IP serve para determinar o próximo passo de roteamento (esta descrição está incompleta e focada ao objetivo deste artigo. Entender bem a participação dos números IP em uma comunicação envolve compreender a tarefa de cada uma das quatro camadas do modelo TCP/IP. Quem sabe em um próximo artigo?).



Resumindo: IP serve para rotear.
Aí surge, evidentemente, a necessidade de que os números IPS sejam organizados através de uma técnica determinística, que permita a qualquer um saber onde está o destino ou pelo menos, para que lado está. Como na analogia que fiz, o CEP tem esta função, pois se o CEP começa com 9 é Rio Grande do Sul e os demais dígitos dão uma maior precisão sobre a cidade, bairro e até a rua.

Com os números IPs da versão 4 (IPv4) é mais ou menos assim e a primeira organização de IPs foi a organização por classes.



Na verdade isto já não importa mais para efeitos de roteamento, mas até 1993 era a forma usada para realizar roteamento IP.

Nesta técnica os ips foram catalogados em Classes, para determinar o roteamento. O objetivo do roteamento por classes era disponibilizar uma forma muito rápida (matematicamente) dos roteadores calcularem o destino. Basicamente determinou-se que dos 32 bits de um número IP, parte dele (alguns bits iniciais) diriam qual a rede de destino e outra parte dele (bits finais) diriam qual o número do host dentro desta rede. Se apenas 8 bits iniciais disserem qual rede é, um roteador só precisa analisar estes 8 bits para determinar o destino e não todos os 32. Sempre visando o menor custo, ainda mais em uma época onde o hardware não é o que temos hoje!
A pergunta importante é: quantos bits dizem qual rede é e quantos bits dizem qual host? Nesta decisão é que entraram as classes:
Classe A: sempre que um número IP começar com 0, é classe A. Genericamente pode-se dizer que um classe A possui o formato:



0XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX

Observe o quanto isto facilitava (não se usa mais ISTO, lembre-se!) as operações de roteamento: se eu sou um roteador classe A e o primeiro bit do IP que devo rotear NÃO FOR ZERO, pronto, pra que olhar os demais bits se já sei que o destino não é aqui? (novamente o CEP: pra que olhar os demais dígitos do CEP se o 9 me diz que é RS e eu sou uma agência de correios de SP?)

Como o primeiro bit será sempre ZERO, isto obriga o primeiro octeto do IP a ser 0XXXX XXXX, o que restringe as possibilidades deste octeto a ser de 0 a 127. Por isto que popularmente se diz que um IP Classe A é o que vai de 0.0.0.0 até 127.255.255.255. Mas isto no popular, pois os roteadores não fazem if (if octeto UM maior que zero e menor que 127, então é classe A), eles fazem operações bit a bit! Se primeiro bit for ZERO, é um classe A.

Sendo um Classe A (primeiro bit em ZERO), os próximos SETE bits dizem qual é a rede e os demais qual o HOST dentro desta rede:



0RRRRRRR HHHHHHHH HHHHHHHH HHHHHHHH

Veja, a definição da classe determina a quantidade de bits para rede. No caso de um classe A, tem-se sete bits para rede e 24 para host. Quem adquiria uma faixa Classe A para si (grandes empresas) podia suprir até 2^24 hosts, algo próximo de 16 milhões de máquinas. Coisa para poucos, pois existiam apenas 127 redes deste tipo no mundo (novamente, estou simplificando para não fugir do foco, embora os números não sejam exatamente estes por conta de reservas de ips, números de rede e broadcast).





Classe B: sempre que um número IP começar com 10, é classe B e sendo desta classe, os próximos 14 bits é que dizem que rede é, sobrando os últimos 16 para determinar qual a host:





10RRRRRR RRRRRRRR HHHHHHHH HHHHHHHH

Com 16 bits para host, cada rede poderia ter até 65536 hosts (simplificando!!) e um total de 16384 redes classe B existem (2 elevado na 14).

Classe C: sempre que um número IP começar com 110, é classe C e sendo desta classe, os próximos 21 bits é que dizem que rede é, sobrando os últimos 8 para determinar qual a host:





110RRRRR RRRRRRRR RRRRRRR HHHHHHHH

Com isto cada rede pode ter até 256 ips e muitas redes deste tipo existiram (em torno de 2 milhões).
Ainda existe o Classe D (começa com 1110) reservado para tráfego multicast (ainda usado) e o Classe E (1111) reservado para uso futuro. Como para uso normal, unicast, tem-se apenas o classe A, B e C, o último ip válido ainda hoje é o que começa com 223 (224 já é classe D).



Roteamento baseado em Classes de IP



OK, certo. Mas para que servia esta divisão por classes, que REPITO, não se usa mais?

Como o número de bits, que determinam o que é rede, variava, a Classe determinava quantos bits o roteador deve avaliar. Observe que o roteador precisa saber a rede de destino para determinar a quem ele envia, assim como uma agência de correio precisa saber a cidade de destino.
Assim, o roteador testava o primeiro bit, se for zero, Classe A, isola os próximos sete bits e joga em sua tabela de rotas. Mas se os primeiros bits fossem 10, então são os próximos 14 bits que devem ser isolados e comparados com a tabela de rotas. Operações binárias agilizam esta operação em muito.



Sem dúvida uma forma de roteamento muito otimizada, tanto que foi ressuscitada no Ipv6 (a idéia, não o modelo de classes). Só que esta técnica amenizou o trabalho dos roteadores que sem muito esforço determinavam o que fazer com o pacote, mas trouxe um gravíssimo problema: a falta de números IPs.

O fato é que uma faixa Classe C possibilita apenas 256 ips, o que é pouco para a maioria das instituições que desejam entrar na Internet. Já um classe A com seus 16 milhões de ips é muito. Logo a preferida da torcida foi a classe B, que rapidamente esgotou-se.
Aliado a este fato, imagine uma instituição que tinha 300 máquinas para por na Internet. Um Classe C não lhe serve. Logo, ele adquire um classe B (se ainda houver). Só que com suas míseras 300 máquinas e um classe B que pode ter 65536 máquinas, ele estaria desperdiçando pouco mais de 65 mil endereços ips!!! Imagine uma empresa que adquiriu um Classe A que permite 16 milhões de ips!

Não precisa ser muito esperto para perceber que isto rapidamente gerou um caos, pois rapidamente esgotou-se os números de ips disponíveis ao passo que se tinha um imenso e lastimável desperdício dos mesmos, mas era o efeito colateral da classificação por classes.
Algo precisou ser feito e a classificação CIDR reorganizou os ips e é nela que existem as tais máscaras de rede.





Cálculo do número de rede e de broadcast



Define-se como número de rede o primeiro endereço da faixa e como número de broadcast o último. Se tivermos, por exemplo, o IP 10.1.0.5/24 (24 bits para rede):


(10) (1) (0) (5)
0000 1010 0000 0001 0000 0000 0000 0101
<------ 24 bits para rede -----> <- HOST->


O número de rede seria 00001010 00000001 00000000 00000000, ou 10.1.0.0, primeiro IP que seria para host da seqüência.
O número de broadcast seria 0001010 00000001 00000000 11111111, ou 10.1.0.255, último número de host permitido.
Mas como uma máquina calcula este número?





Usando operações binárias, pois elas são rápidas e eficientes. Para calcular o número da rede, faz-se um AND bit a bit do número IP com os números destinados a rede em 1. Se um IP é /24, quer dizer que devem ser usados 24 bits para rede, restando oito para host. Para calcular a rede faz-se um AND com os primeiros 24 bits em 1 e os demais em zero:





(10) (1) (0) (5)
0000 1010 0000 0001 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 0000 0000 (24 bits em 1)
0000 1010 0000 0001 0000 0000 0000 0000 (resposta do AND)



Ao realizar este AND bit a bit, chega-se ao número 10.1.0.0 (número da rede).

Agora observe esta fato: se eu fosse ler de forma decimal estes bits que usei para o AND, que número eu tenho?



1111 1111 1111 1111 1111 1111 0000 0000
(255) (255) (255) (0)



255.255.255.0 lhe soa mais familiar? Por isto o nome “máscara de bits” pois é uma máscara que será usada em uma operação AND para determinar qual a rede.

Para determinar qual é o meu endereço de broadcast, se faz um OR bit a bit com a máscara complementada (invertida, números destinados a rede em ZERO):



(10) (1) (0) (5)
0000 1010 0000 0001 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 1111 1111 (24 bits em 0)
0000 1010 0000 0001 0000 0000 1111 1111 (resposta do OR)



Sendo agora um OR, o resultado matemático disto será 10.1.0.255.

É isto que acontece nos bastidores, envolvendo a máscara para determinar que rede sou e qual o meu endereço de broadcast. Uma máscara equívoca pode significar o isolamento de uma máquina do resto do mundo, pois ela pode não rotear pacotes corretamente, não usando o gateway quando deveria, por exemplo.



Roteamento baseado em máscara de rede



Cada máquina sabe seu IP, sua máscara e o IP do gateway. A máquina não sabe as máscaras e os ips de outras máquinas, apenas a sua. Logo, ao necessitar comunicar-se com uma máquina cujo o IP é X.Y.K.Z a máquina não tem como saber qual rede este IP é, mas tem como saber se é a mesma rede sua. Isto é suficiente para ela saber se pode enviar diretamente (mesma rede) ou se precisa acionar o gateway para jogar para fora (eu, estando no RS, posso não saber onde é um CEP que começa com “4″, mas sei que não é RS, pois estou no RS e aqui ele começa com “9″. Basta para eu enviar para outra agência de correio).

Alguns exemplos:
Caso A: origem e destino estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.120 (ela não sabe a máscara do destino!!!).

Máquina A primeiro determina a sua rede aplicando um AND do seu IP com sua máscara, sendo que ela agora é 255.255.255.128, pois um /25 significa 25 bits em 1:



1111 1111 1111 1111 1111 1111 1000 0000
(255) (255) (255) (128)



Ela chega a conclusão que pertence a rede 10.1.0.0. Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):





(10) (1) (0) (120)
0000 1010 0000 0001 0000 0000 0111 1000
1111 1111 1111 1111 1111 1111 1000 0000 (25 bits em 1)



Como resultado deste AND, chega-se ao cálculo de 10.1.0.0. Como o número calculado para rede é o mesmo, a conclusão é que o destino está aqui, local, basta realizar um ARP e endereçar diretamente o MAC do destino. Nada de gateway.

Caso B: origem e destino não estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.129. Já sabemos que a rede que a máquina A pertence é 10.1.0.0 ( veja, pode não ser se a máquina A estiver com a máscara errada!!!)





Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):



(10) (1) (0) (129)
0000 1010 0000 0001 0000 0000 1000 0001
1111 1111 1111 1111 1111 1111 1000 0000 (25 bits em 1)
0000 1010 0000 0001 0000 0000 1000 0000 (RESULTADO AND)



Como resultado deste AND, chega-se ao cálculo de 10.1.0.128, que não é mesma rede da máquina A. A conclusão é que o destino não está aqui e preciso repassar o pacote para o gateway (o que o gateway faz deixamos para um próximo artigo).

Se a máquina A estiver com a máscara errada (um /24 quando deveria ser um /25) ela pode ficar isolada de parte da rede, por achar que o destino é rede local quando não é (deveria ter usado o gateway). Da mesma forma se ela é um /25 quando deveria ser um /24 poderá usar o gateway quando não era necessário. A correta configuração de máscara é extremamente importante.



Conclusão



Por envolver operações binárias e conceitos de redes, este artigo pode não ter sido do interesse de muitos leitores. Mas tenho observado nos fóruns que muita gente não sabe o que são máscaras de rede e se perdem quando este conceito é empregado, por exemplo, em configurações de firewall.

O que significa dizer que estou executando um DROP no IP 10.1.0.0/28?

# iptables -A FORWARD -s 10.1.0.0/28 -j DROP
Quem está realmente sendo bloqueado? A resposta agora tem explicação: estão sendo bloqueados todos os ips que ao se realizar AND bit a bit com /28 resulte em 10.1.0.0. Na prática todos entre 10.1.0.0 e 10.1.0.15, pois este será o IP da rede e de broadcast que um /28 determina.
Ainda resta dizer que o uso de máscaras de forma apropriada é usado para subdividir uma faixa de ips públicos que determinada instituição recebeu em várias redes. Se eu tenho um /24, sei que posso montar uma rede com até 254 máquinas (sim, 254, pois tem o endereço de rede e de broadcast que não posso usar em máquina). Uma rede! Mas se eu quero DUAS, cada uma com 100 máquinas, posso quebrar este /24 em dois /25. Ou em quatro /26…



Ou ainda em três redes, uma /25 e duas outras /26.
Claro que para isto ai tem que ir mais a fundo no conceito de máscaras, pois pode não parecer, mas este artigo procurou fornecer apenas uma introdução ao assunto.

Referências

Este conceito de máscaras é bastante técnico e na Internet geralmente se encontram simplificações populares, como receitas de bolo. Nada como bons livros, principalmente os que descrevem o protocolo TCP/IP ou direto na veia, lendo as RFCs. Não seria ético da minha parte tornar público aqui minha preferência por este ou aquele livro, em detrimento de outro, mas se alguém se interessar pelo assunto, envie-me um email que terei maior prazer em responder.

Possuo em minha página pessoal um script em PHP para realizar o cálculo de máscara de redes, com um diferencial que ele mostra o números em seu formato binário, dentro do conceito que descrevi aqui. O mesmo pode ser encontrado em:

Endereçamento IP

Descobrir Endereço IP

  • O que é o Endereço IP? O que afinal representa meu IP?
O uso de computadores em rede, tal como a internet, requer que cada máquina possua um identificador que a diferencie das demais. É necessário que cada computador tenha um endereço, alguma forma de ser encontrado.

O IP (Internet Protocol) é uma tecnologia que permite a comunicação padronizada entre computadores, mesmo que estes sejam de plataformas diferentes, identificando-os de forma única em uma rede.

A comunicação entre computadores é feita através do uso de padrões, ou seja, uma espécie de "idioma" que permite que todas as máquinas se entendam. Em outras palavras, é necessário fazer uso de um protocolo que indique como os computadores devem se comunicar. No caso do IP, o protocolo aplicado é o TCP/IP (Transmission Control Protocol/Internet Protocol). Existem outros, mas o TCP/IP é o mais conhecido, além de ser o protocolo usado na internet.

O uso do protocolo TCP/IP não é completo se um endereço IP não for utilizado. Se, por exemplo, dados são enviados de um computador para o meu, o outro computador precisa saber meu IP assim como o meu precisa saber o endereço IP do emissor, caso a comunicação exija uma resposta. Sem o endereço IP, os computadores não conseguem ser localizados em uma rede.

  • Como é composto o endereço IP?

O endereço IP (ou somente IP) é uma seqüência de números composta de 32 bits. Esse valor consiste num conjunto de quatro grupos de 8 bits. Cada conjunto é separado por um ponto e recebe o nome de octeto ou simplesmente byte, já que um byte é formado por 8 bits. O número 172.31.110.10 é um exemplo. Repare que cada octeto é formado por, no máximo 3 caracteres, sendo que cada um pode ir de 0 a 255.

Os dois primeiros octetos de um endereço IP geralmente são usados para identificar a rede, mas isso não é regra fixa, como será visto mais adiante. Em lugares com várias redes, pode-se ter, por exemplo, 172.31 para uma rede e 172.32 para outra. Já os últimos 2 octetos, são usados na identificação de computadores dentro da rede. Por exemplo, em uma rede com 400 computadores, pode-se usar as faixas de 172.31.100.1 a 172.31.100.255 e 172.31.101.0 a 172.31.101.255. Novamente, esta não é uma regra fixa.

Como os endereços IP usados em redes locais são semelhantes aos IPs da internet, usa-se um padrão conhecido como IANA (Internet Assigned Numbers Authority) para a distribuição de endereços nestas redes. Assim, determinadas faixas de IP são usadas para redes locais, enquanto que outras são usadas na internet. Como uma rede local em um prédio não se comunica a uma rede local em outro lugar (a não ser que ambas sejam interconectadas) não há problemas de um mesmo endereço IP ser utilizado nas duas redes. Já na internet, isso não pode acontecer. Nela, cada computador precisa de um IP exclusivo.

O padrão IANA divide a utilização de IPs para redes locais em, basicamente, 3 classes. Esse divisão foi feita de forma a evitar ao máximo o desperdício de IP que podem ser utilizados em uma rede:

Classe A: 10.0.0.0 a 10.255.255.255 - Permite até 16 milhões de computadores em cada rede (máximo de 1 rede);

Classe B: 172.16.0.0 a 172.31.255.255 - Permite até 65.534 computadores em uma rede (máximo de 21 redes);


Classe C: 192.168.0.0 a 192.168.255.255 - Permite até 254 computadores em uma rede (máximo de 255 redes).

Os IPs são divididos em três classes (na verdade, existem mais) para atender as seguintes necessidades:

- os endereços IP da classe A são usados em locais onde é necessário uma rede apenas, mas uma grande quantidade de máquinas nela. Para isso, o primeiro byte é usado como identificador da rede e os demais servem como identificador dos computadores;

os endereços IP da classe B são usados nos casos onde a quantidade de redes é equivalente ou semelhante à quantidade de computadores. Para isso, usa-se os dois primeiros bytes do endereço IP para identificar a rede e os restantes para identificar os computadores;

- os endereços IP da classe C são usados em locais que requerem grande quantidade de redes, mas com poucas máquinas em cada uma. Assim, os três primeiros bytes são usados para identificar a rede e o último é utilizado para identificar as máquinas.

  • O que é o IPv6?

IPv6 é a sigla para Internet Protocol version 6. Também conhecido como Ipng (Internet Protocol Next Generation), trata-se da evolução do IPv4, a versão em uso atualmente. O IPv6 é fruto da necessidade de mudanças na iInternet.

O IPv4 permite que até 4.294.967.296 de endereços IP estejam em uso. O grande problema é que o número de sites e o número de usuários da internet cresce constantemente, no mundo todo.

Como é impossível usar um mesmo IP simultaneamente na internet, é necessário que cada usuário, cada site ou cada serviço tenha um endereço IP exclusivo. Com o crescimento da necessidade de uso do IP, a internet chegará a um ponto onde não vai sobrar mais IPs. Todos estarão em uso.

O IPv6 é uma solução para este problema e também é provido de novos recursos, tais como o suporte a novas tecnologias de rede (ATM, Gigabit Ethernet, entre outros). Mas como o IPv6 consegue solucionar o problema da limitação de IPs atual? O IPv4 (relembrando, o IP que usamos hoje) é uma combinação de 32 bits. O IPv6 é uma implementação de 128 bits, o que eleva extraordinariamente o número de endereços IP disponíveis.

Os endereços do IPv6

Como já é de se supor, as mudanças no sistema de endereçamento é uma das inovações mais importantes do IPv6. Como já dito, este passa a ser de 128 bits (contra os 32 bits do IPv4). Teoricamente, o número de endereços pode chegar a 340.282.366.920.938.463.463.374.607.431.768.211.456, um valor absurdamente alto.

Graças a isso, determinados equipamentos poderão ter mais de um IP. Assim, será possível fazer com que certos serviços sejam executados simultaneamente numa mesma máquina e para cada um haverá uma conexão exclusiva.

Para o uso de mais de um IP em um mesmo dispositivo, foram criados os seguintes esquemas:

Unicast: neste esquema, um determinado dispositivo pode ter mais de um endereço. Para tanto, tais endereços são divididos em grupos;

Multicast: neste esquema, uma único dispositivo consegue identificar várias interfaces na rede, permitindo o envio individual de pacotes;

Anycast: este tipo é uma variação do multicast, onde o endereço IP pode estar atribuído a mais de uma interface, ao invés de uma individual.

O endereço IP da versão 6 é composto por grupos de 16 bits em formato hexadecimal e separados por 2 pontos (:). Assim, o IP do InfoWester pode ser, por exemplo, fe80:0000:0000:0000:2601:97ff:fefe:9ced. Mas é importante salientar que é possível usar endereços compactados, ou seja, na prática, menores.

O cabeçalho do IPv6

O endereço IP possui um cabeçalho com várias informações essenciais para a troca de informações entre sistemas e computadores. No IPv6, o cabeçalho sofre alterações. A principais é seu tamanho, que passa a ser de 320 bits, o dobro do IPv4. Além disso, alguns campos do cabeçalho foram retirados, enquanto outros tornaram-se opcionais.

De maneira geral, o cabeçalho ficou mais simples e essa mudança não serve somente para adaptar-se aos novos padrões do IPv6, mas também para permitir que os roteadores não tenham que processar determinadas informações do cabeçalho. Como conseqüência, a transmissão se torna mais eficiente.



  • Qual a diferença entre IP estático e IP dinâmico?

IP estático (ou fixo) é um número IP dado permanentemente a um computador, ou seja, seu IP não muda, exceto se tal ação for feita manualmente. Como exemplo, há casos de assinaturas de acesso à internet via ADSL, onde alguns provedores atribuem um IP estático aos seus assinantes. Assim, sempre que um cliente se conectar, usará o mesmo IP. Essa prática é cada vez mais rara entre os provedores de acesso, por uma série de fatores, que inclui problemas de segurança.

O IP dinâmico, por sua vez, é um número que é dado a um computador quando este se conecta à rede, mas que muda toda vez que há conexão. Por exemplo, suponha que você conectou seu computador à internet hoje. Quando você conectá-lo amanhã, lhe será dado outro IP. Para entender melhor, imagine a seguinte situação: uma empresa tem 80 computadores ligados em rede. Usando IPs dinâmicos, a empresa disponibilizou 90 endereços IP para tais máquinas. Como nenhum IP é fixo, quando um computador "entra" na rede, lhe é atribuído um IP destes 90 que não esteja sendo usado por nenhum outro computador. É mais ou menos assim que os provedores de internet trabalham. Toda vez que você se conecta à internet, seu provedor dá ao seu computador um IP dela que esteja livre.

O método mais usado para a distribuição de IPs dinâmicos é a protocolo DHCP (Dynamic Host Configuration Protocol).

Mais informações: Wikipedia



quarta-feira, 1 de setembro de 2010

O que é IPv6?

Introdução

A internet é uma rede que interconecta milhões de computadores no mundo inteiro. Para que essa comunicação ocorra, cada dispositivo conectado necessita de um endereço único, que o diferencie dos demais. Essa é a função do IP (Internet Protocol). O problema é que, a cada dia que passa, mais e mais computadores são ligados à internet (entenda computadores de maneira geral, isto é, PCs, servidores, smartphones, tablets, etc) e, por conta disso, o número de endereços IP disponível está acabando. É aí que entra em cena o IPv6, sigla para Internet Protocol version 6. Neste artigo, você conhecerá um pouco do funcionamento desse protocolo e entenderá como ele poderá solucionar o problema da falta de endereços na internet.


Endereço IP

Antes de entrarmos no assunto IPv6 em si, é importante conhecer o IPv4, que convencionamos chamar apenas de IP. O IPv4 é composto por uma sequência numérica no seguinte formato: x.x.x.x, onde x é um número que pode ir de 0 a 255, por exemplo:

189.34.242.229

Para que cada computador conectado à internet tenha um endereço IP exclusivo, uma entidade chamada IANA/ICANN distribui "cotas" de IP para todas as partes do mundo. Essas cotas são administradas por entidades regionais que, por sua vez, as repassam para provedores, também chamados de ISP (Internet Service Provider).

Quando você contrata uma empresa para fornecer acesso à internet à sua residência, por exemplo, o provedor irá fornecer um endereço IP de sua cota (em boa parte dos casos, esse endereço muda a cada conexão) para conectar seu computador ou sua rede à internet. Websites também têm endereço IP, afinal, ficam armazenados em servidores que, obviamente, estão conectados à internet.

O formato do IPv4 é uma sequência de 32 bits (ou quatro conjuntos de 8 bits) e isso permite, teoricamente, a criação de até 4.294.967.296 endereços. Uma quantidade muito grande, não é mesmo? Mas, acredite, em pouco tempo será insuficiente.

Esse problema existe porque a internet não foi planejada de forma a ser tão grande. A ideia original era a de se criar um sistema de comunicação que interligasse centros de pesquisa. Somente quando a internet passou a ser utilizada de maneira ampla é que ficou claro que o número máximo de endereços IP poderia ser atingido em um futuro relativamente próximo. Foi a partir dessa percepção que o projeto IPng (Internet Protocol next generation) teve início, dando origem ao que conhecemos como IPv6.


Esgotamento de endereços IP

Não é difícil entender o porquê do esgotamento de endereços no formato IPv4. Para início de conversa, parte desses 4 bilhões de combinações disponíveis, como aquelas que começam em 10 e 127, por exemplo, estão reservados para redes locais (saiba mais sobre isso no artigo Endereços IP) ou para testes. Além disso, há uma parte expressiva de endereços que são destinados a instituições e grandes corporações.

Mas o fato principal é que o mundo está cada vez mais conectado. É possível encontrar pontos de acesso providos por redes Wi-Fi em shoppings, restaurantes, aeroportos e até em ônibus. Sem contar que é cada vez mais comum o número de pessoas que tem conexão banda larga em casa e também assinatura de um plano 3G para acessar a internet no celular ou no notebook a partir de qualquer lugar.

Medidas paliativas foram adotadas para lidar com essa questão, como a utilização do NAT (Network Address Translation), uma técnica que permite que um único endereço IP represente vários computadores, esquema esse que é aplicado, por exemplo, em provedores de acesso via rádio ou até mesmo por operadoras que oferecem acesso 3G.

O problema é que o NAT e outras medidas implementadas têm suas limitações e, no máximo, apenas adiam o esgotamento, de forma que uma solução definitiva e prática precisa ser adotada. A essa altura, você já sabe que tal solução atende pelo nome de IPv6.


Endereços IPv6

A criação do IPv6 consumiu vários anos, afinal, uma série de parâmetros e requisitos necessitam ser observados para que problemas não ocorram ou, pelo menos, sejam substancialmente amenizados em sua implementação. Em outras palavras, foi necessário fazer uma tecnologia - o IPv4 - evoluir, e não criar um padrão completamente novo.

A primeira diferença que se nota entre o IPv4 e o IPv6 é o seu formato: o primeiro é constituído por 32 bits, como já informado, enquanto que o segundo é formado por 128 bits. Com isso, teoricamente, a quantidade de endereços disponíveis pode chegar a 340.282.366.920.938.463.463.374.607.431.768.211.456, um número absurdamente alto!

IPv4 x IPv6

Mas há um problema: se no IPv4 utilizamos quatro sequências numéricas para formar o endereço - por exemplo: 208.67.222.220 -, no IPv6 teríamos que aplicar nada menos que 16 grupos de números. Imagine ter que digitar tudo isso!

Por esse motivo, o IPv6 utiliza oito sequências de até quatro caracteres separado por ':' (sinal de dois pontos), mas considerando o sistema hexadecimal. Assim, o endereço IPv6 do InfoWester, por exemplo, pode ser:

FEDC:2D9D:DC28:7654:3210:FC57:D4C8:1FFF

Um formato ainda confuso, de fato, mas melhor do que se seguisse a mesma regra do IPv4. Felizmente, um endereço IPv6 pode ser "abreviado". Isso porque números zero existentes à esquerda de uma sequência podem ser ocultados, por exemplo: 0260 pode ser representado como 260. Além disso, grupos do tipo 0000 podem ser exibidos apenas como 0. Eis um exemplo de um endereço "normal" e outro abreviado:

805B:2D9D:DC28:0000:0000:0000:D4C8:1FFF

805B:2D9D:DC28:0:0:0:D4C8:1FFF

O fato é que o formato do endereço IPv6 é tão grande que sequências do tipo 0:0:0, por exemplo, serão comuns. Neste caso, é possível omitir esses grupos, pois o computador saberá que o intervalo ocultado é composto por sequências de zero. Por exemplo:

FF00:4502:0:0:0:0:0:42

O endereço acima pode ficar assim, ocultando os espaços com 0:

FF00:4502::42

É importante frisar que essa ocultação não pode acontecer mais de uma vez no mesmo endereço em pontos não sequenciais. Por exemplo:

805B::DC28::D4C8:1FFF => Errado!

Neste exemplo, somente uma das abreviações poderá permanecer no endereço.


Tipos de endereços IPv6

De modo geral, um endereço IPv6 faz parte de uma das seguintes categorias: unicast, multicast e anycast. Tal caraterística serve, basicamente, para permitir uma distribuição otimizada de endereços e possibilitar que estes sejam acessados mais rapidamente, de acordo com as circunstâncias. Vejamos brevemente cada um dos tipos:

- Unicast: tipo que define uma única interface, de forma que os pacotes enviados a esse endereço sejam entregues somente a ele. É apropriado para redes ponto-a-ponto;

- Multicast: neste tipo, pacotes de dados podem ser entregues a todos os endereços que pertencem a um determinado grupo;

- Anycast: semelhante ao multicast, com a diferença de que o pacote de dados é entregue à interface do grupo que estiver mais próxima. Esse tipo é apropriado para servidores de DNS, por exemplo.

Vale frisar que, assim como acontece com o IPv4, o IPv6 também pode ter seus endereços divididos em "cotas" ou "categorias", de forma que hierarquias possam ser criadas para determinar a distribuição otimizada de endereços.

 

Cabeçalho do IPv6

O padrão IPv4 possui um cabeçalho (header) com várias informações essenciais para a troca de informações entre sistemas e computadores. No IPv6, no entanto, o cabeçalho sofreu alterações. A principal é o seu tamanho, que passa a ser de 40 bytes, o dobro do padrão do IPv4. Além disso, alguns campos foram retirados, enquanto outros tornaram-se opcionais. Essa simplificação pode tornar a comunicação mais eficiente e reduzir o processamento necessário para isso.

A imagem abaixo mostra o cabeçalho padrão do IPv6:

Cabeçalho IPv6

Vejamos os campos:

- Version: campo que identifica a versão do protocolo. No caso do IPv6, é preenchido com 6. No IPv4, com 4;

- Traffic class: indica a qual classe o pacote de dados pertence, podendo definir sua prioridade;

- Flow label: identifica pacotes que pertecem ou não ao mesmo fluxo de dados;

- Payload length: informa o tamanho do pacote em bytes;

- Next header: identifica qual o próximo cabeçalho que segue o atual (um cabeçalho de extensão, por exemplo) ou o protocolo da próxima camada;

- Hop limit: indica a quantidade máxima de roteadores pelos quais o pacote pode passar. Caso exceda o limite, o pacote é descartado;

- Source address: informar o endereço de origem do pacote;

- Destination addres: informa o destino do pacote, isto é, o endereço final.

Note que o cabeçalho do IPv6 pode ser "estendido" com campos adicionais, que oferecem, por exemplo, recursos para autenticação ou confidencialidade dos pacotes de dados transmitidos. São os chamados "cabeçalhos de extensão", tal como menciona a explicação do campo "Next header".


IPv6 e IPv4

O elevadíssimo número de endereços IPv6 permite que apenas esse protocolo seja utilizado na internet. Acontece que essa mudança não pode acontecer de uma hora para outra. Isso porque roteadores, servidores, sistemas operacionais, entre outros precisam estar plenamente compatíveis com o IPv6, mas a internet ainda está baseada no IPv4. Isso significa que ambos os padrões vão coexistir por algum tempo.

Seria estupidez criar dois "mundos" distintos, um para o IPv4, outro para o IPv6. Portanto, é necessário não só que ambos coexistam, mas também se que comuniquem. Há alguns recursos criados especialmente para isso que podem ser implementados em equipamentos de rede:

- Dual-Stack (pilha dupla): faz com que um único dispositivo - um roteador, por exemplo - tenha suporte aos dois protocolos;

- Tunneling (tunelamento): cria condições para o tráfego de pacotes IPv6 em redes baseadas em IPv4 e vice-versa. Há várias técnicas disponíveis para isso, como Tunnel Broker e 6to4, por exemplo;

- Translation (tradução): faz com que dispositivos que suportam apenas IPv6 se comuniquem com o IPv4 e vice-versa. Também há várias técnicas para tradução, como Application Layer Gateway (ALG) e Transport Relay Translator (TRT).

Felizmente, praticamente todos os sistemas operacionais da atualidade são compatíveis com ambos os padrões. No caso do Windows, por exemplo, é possível contar com suporte pleno ao IPv6 desde a versão XP (com Service Pack 1). Versões posteriores, como Vista e 7, contam com suporte habilitado por padrão. Também há compatibilidade plena com o Mac OS X e versões atuais de distribuições Linux.

É bom que saiba: já é possível obter endereços IPv6, o que mostra que essa é uma tecnologia estável, usável. No Brasil, por exemplo, as solicitações podem ser feitas no endereço http://registro.br.


Segurança

No IPv6, houve também a preocupação de corrigir as limitações de segurança existentes no IPv4. Um dos principais mecanismos criados para isso - talvez, o mais importante - é o IPSec (IP Security), que fornece funcionalidades de criptografia de pacotes de dados, de forma a garantir três aspectos destes: integridade, confidencialidade e autenticidade.

Na verdade, o IPSec pode ser utilizado também no IPv4, mas não em comunicação baseada em NAT. Não há necessidade deste último no IPv6, portanto, a utilização do IPSec ocorre sem limitações.

Para efetuar sua função, o IPSec faz uso, essencialmente, de um cabeçalho de extensão chamado Authentication Header (AH) para fins de autenticação, de outro denominado Encapsulating Security Payload (ESP) para garantir a confidencialidade, e do protocolo Internet Key Exchange (IKE) para criptografia.

Vale a pena observar que o protocolo IPv6, por si só, já representa um grande avanço de segurança, uma vez que a sua quantidade de endereços é tão grande que, por exemplo, torna inviável o uso técnicas de varredura de IP em redes para encontrar possíveis computadores com vulnerabilidades de seguranças.

É importante frisar, no entanto, que o fato de o IPv6 oferecer mais proteção que o IPv4 não significa que diminuir os cuidados com a segurança não trará problemas: sistema de controle de acesso, firewall, antivírus e outros recursos devem continuar sendo aplicados.


ICMPv6

O padrão IPv4 faz uso de um protocolo chamado Internet Control Message Protocol (ICMP) para obtenção de dados referentes à rede e para a identificação de erros de comunicação por meio de mensagens, ajudando, evidentemente, numa possível correção, quando for o caso. O IPv6 também utiliza o mesmo recurso, só com que as devidas adaptações: o ICMPv6.

Em relação ao ICMP, o ICMPv6 se diferencia, essencialmente, por permitir uma quantidade maior de mensagens que o primeiro. O motivo para isso é simples: o ICMPv6 incorpora funções que no ICMP eram destinadas a outros protocolos. É importante frisar que o ICMPv6 não é um cabeçalho de extensão do IPv6, mas sim um protocolo que trabalha com este.

Entre as mensagens oriundas do ICMPv6 estão as que informam "destino inacessível", indicando que ao emissor que o receptor não pôde receber o pacote de dados; "requisição de eco", que consiste em uma mensagem informativa para determinar se um determinado integrante da rede - um servidor, por exemplo - está ativado; entre outros.

O cabeçalho do ICMPv6 é composto, essencialmente, pelos seguintes campos:

Type: tipo de mensagem, isto é, se é erro ou informação;

Code: informa um código que é atrelado a determinados tipos de mensagem;

Checksum: informa o valor de uma determinada soma, que indicará algum problema caso sua verificação acuse outro resultado;

Data: fornece dados relacionados à mensagem.


Finalizando

Como você pode ter percebido, o protocolo IPv6 representa muito do que será a internet em um futuro próximo, uma vez que não só elimina as limitações existentes no IPv4, como também abre um leque de possibilidades para deixar o mundo ainda mais conectado.

E é claro, o assunto aqui foi abordado de maneira introdutória. IPv6 é, considerando todos os seus aspectos, um assunto bastante amplo, ao ponto de existir cursos e livros exclusivos sobre o protocolo. E se você é ou pretende ser um profissional especializado em redes, considere como uma obrigação aprofundar seus conhecimentos em IPv6.

Antes, a resposta para uma pergunta que você pode ter feito durante a leitura do texto: por que IPv6 e não IPv5? O IPv5, na verdade, existe, mas é uma tecnologia praticamente em desuso. Trata-se de uma versão experimental de um protocolo chamado Internet Stream Protocol, criado para testar transmissões de áudio e vídeo, e para simular situações referentes à internet. Não passou disso...

Para saber mais sobre IPv6, consulte os sites que serviram de referência para este artigo:

- ipv6.br;
- www.ipv6forum.com;
- www.6deploy.com;
- www.6diss.org;
- en.wikipedia.org/wiki/IPv6;
- www.microsoft.com/ipv6.

Escrito por Emerson Alecrim - Publicado em 24/08/2010 - Atualizado em 26/08/2010



Endereços IP (Internet Protocol)

Introdução