terça-feira, 13 de novembro de 2012

Sub-redes(Subnetting)

Vou compartilhar neste post um problema que surgiu na rede de onde trabalho e a solução que encontrei para contornar em partes meu problema.

Problema: Possuímos 1 link de internet de 2MB e só tinhamos um computador que estava fazendo o nat, dhcp e servindo de proxy ao mesmo tempo.
Isto causava instabilidade, pois todos os pools de endereços liberados pelo dhcp estavam na mesma faixa. As quedas eram constantes e precisava de alguma solução que ao menos conseguisse manter a instabilidade, a velocidade é outra história...rsrsrs
Solução: Em pesquisa ao nosso famoso oráculo Google, achei uma solução intermediária que talvez resolvesse meu problema, a divisão da rede em sub-redes.

Vamos a uma breve explicação do conceito de sub-redes, sub-nets e outros nomes que pode encontrar.

Como todos sabemos uma rede possui uma máscara de sub-rede que é utilizada para fazer a divisão das redes em redes menores.
Você pode verificar, facilmente, as configurações do protocolo TCP/IP que estão definidas para o seu computador (Windows 2000, Windows XP ou Windows Vista). Para isso siga os seguintes passos:
1.       Faça o logon com uma conta com permissão de Administrador.
2.       Abra o Prompt de comando: Iniciar -> Programas -> Acessórios -> Prompt de comando.
3.       Na janela do Prompt de comando digite o seguinte comando:
ipconfig/all
e pressione Enter.


Você encontrará por aí endereços ip representados na forma 192.168.1.1/24.
O /24 destacado ao final do endereço ip deve-se a máscara de sub-rede. Se convertermos esta máscara para a notação binária, notação esta que é usada pelos equipamentos, a numeração passa a ser: 11111111.11111111.11111111.00000000.
Note que a representação binária é dividida em grupos de oito bits(dígitos). Por isso diz-se que a máscara de rede é dividida em octetos.
Veja que a contagem de números 1 encontrados é 24.
Os números 1 da máscara de sub-rede representam a rede em si e os 0's os hosts(dispositivos da nossa rede, ou seja, computadores, impressoras etc...).

Para encontrar o número de sub-redes basta utilizar a fórmula 2^n, onde n é o número de 1's da máscara de sub-rede;
Para encontrar o número de hosts basta utilizar a fórmula 2^n - 2, onde n é o número de 0's da máscara de sub-rede.

O símbolo(^) significa elevado à, ou seja, 2 elevado a potência n.

Vendo como exemplo a máscara acima, temos que o número de computadores é igual a 2^8 - 2 = 256-2 = 254 hosts disponíveis em nossa rede.
Aí surge a pergunta, porque podemos usar só 254 ao invés de 256 números ip para endereçar nossos equipamentos.
Como sabemos na área de computação a contagem dos números começa em 0 ao invés de começar em 1.
Então nosso primeiro endereço ip seria 192.168.1.0 e o último 192.168.1.255.
O primeiro endereço é utilizado para representar a rede em si, muito útil para efetuar bloqueios, por exemplo, se quiser bloquear o tráfego de rede para todos equipamentos da rede 192.168.1.x é só bloquear o endereço 192.168.1.0, com isso não é necessário bloquear um por um.
O último número, 255 é utilizado para Broadcast.O Broadcast é utilizado para enviar mensagens para todos equipamentos da rede, portanto se um switch por exemplo enviar uma mensagem para 192.168.1.255, todos os equipamentos da rede receberam esta mensagem.

Caso minha explicação não tenha sido clara, consulte o endereço: http://www.juliobattisti.com.br/artigos/windows/tcpip_p1.asp, do nosso mestre Júlio Batisti, ele possui um dom didático invejável.

 No caso da minha rede, como estou utilizando um exemplo de rede classe C, a máscara de sub-rede padrão é 255.255.255.0 = 11111111.11111111.11111111.00000000. Se alterarmos os primeiros 3 octetos já não teremos uma rede de classe C e sim de classe B. Portanto, no nosso caso podemos alterar somente o último octeto.

Percebe-se que no último octeto não temos números 1, somente 0's que são utilizados para os hosts.

Suponhamos que você precise dividir esta rede em setores: Gerência, Administração, TI, Almoxarifado, Logística e Direção e cada rede terá seu controle de sites permitidos, banda de internet entre outros, como fazer esta divisão?
Aí entra o pulo do gato, divida em sub-redes, para isso basta acrescentarmos 1's ao último octeto, utilizando a forma 2^n. Como acima precisaremos de 6 sub-redes, se elevarmos 2^3 teremos 8 sub-redes, suficientes para abrigarmos os 6 setores. Para cada sub rede teríamos 2^5-2 = 32 - 2 = 30 hosts(equipamentos).
Então nossa máscara de rede ficaria 255.255.255.224 = 11111111.11111111.11111111.11100000.
Não é permitido a utilização da primeira e última redes, pelo mesmo motivo que expliquei acima, a primeira rede contém o endereço de rede, ex: 192.168.x.0 e a última tem o broadcast 192.168.x.255, portanto, se utilizarmos a primeira e última sub-redes, o tráfego vai passar por todos equipamentos o que não é útil se necessitamos de sub-redes.
Portanto, para a máscara de rede que temos agora com 30 equipamentos por rede, a primeira sub-rede seria o intervalo 192.168.x.0 até 192.168.x.31 e a última  192.168.x.224 até 192.168.x.255. Estes intervalos não devem ser utilizados.
Os outros intervalos possíveis são:
 Rede                   Broadcast
192.168.x.32 até  192.168.x.63
192.168.x.64 até  192.168.x.95
192.168.x.96 até  192.168.x.127
192.168.x.128 até 192.168.x.159
192.168.x.160 até 192.168.x.191
192.168.x.192 até 192.168.x.223

Podemos observar que o primeiro e último número de cada sub-rede também não são utilizados, pois desempenham o papel de número de rede e broadcast para cada sub-rede, portanto que fossemos utilizar uma regra para bloquear o acesso do intervalo 32 ao 63, basta bloquearmos o endereço da rede 192.168.x.32

Espero que este post tenha sido útil e caso haja dúvidas, basta deixar sua pergunta que responderei dentro dos limites do meu conhecimento.






segunda-feira, 5 de novembro de 2012

Como colocar acentuação em alerts javascript


Me deparei com um problema ao programar um site com funções em javascript que me tirou o sono para resolver.
Ao escrever um alert com acentuação eis que o javascript tem problemas para formatar. Tentei usar o estilo html para ver se resolveria e nada.
Pesquisando a internet consegui encontrar uma tabela de códigos que substituem os acentos, segue abaixo:

á = \u00e1
à = \u00e0
â = \u00e2
ã = \u00e3
ä = \u00e4
Á = \u00c1
À = \u00c0
 = \u00c2
à = \u00c3
Ä = \u00c4
é = \u00e9
è = \u00e8
ê = \u00ea
ê = \u00ea
É = \u00c9
È = \u00c8
Ê = \u00ca
Ë = \u00cb
í = \u00ed
ì = \u00ec
î = \u00ee
ï = \u00ef
Í = \u00cd
Ì = \u00cc
Î = \u00ce
Ï = \u00cf
ó = \u00f3
ò = \u00f2
ô = \u00f4
õ = \u00f5
ö = \u00f6
Ó = \u00d3
Ò = \u00d2
Ô = \u00d4
Õ = \u00d5
Ö = \u00d6
ú = \u00fa
ù = \u00f9
û = \u00fb
ü = \u00fc
Ú = \u00da
Ù = \u00d9
Û = \u00db
ç = \u00e7
Ç = \u00c7
ñ = \u00f1
Ñ = \u00d1
& = \u0026
' = \u0027

Basta substituir o código acima onde deveria haver a acentuação.
Ex:
Na frase:  alert("O campo nome é de preechimento obrigatório ") escreva;
                alert("O campo nome \u00e9 de preenchimento obrigat\u00f3rio");
Dica retirada do blog: http://infoblemas.blogspot.com.br/2012/08/acentos-em-alert-box-javascript.html