Sunday, June 17, 2012

Conceitos de Redes Sem Fio - 1

Dando sequência ao nosso estudo de redes sem fio, vamos apresentar hoje alguns conceitos básicos dessa tecnologia.

   A primeira coisa que iremos dizer é que o objetivo primário de uma rede sem fio é enviar a maior quantidade de dados  o mais longe e os mais rápido possível.
  Para que os fabricantes não se percam nesse objetivo,criando um caos,existem or orgãos  reguladores que determinam os limites para que as diferentes redes sem fio possam coexistir.
  No nosso caso,vamos falar das redes Wi-fi,ou, 802.11,segundo o IEEE.

 Abaixo, temos o espectro eletromagnetico:




Dentro do Espectro, as redes sem fio situam-se entre  UHF e SHF.
 Ou seja, quanto mais para a direita no Espectro, maior a quantidade de informação enviada.

Os padrões de redes mais conhecidos são o Americano,europeu e Japonês. O Americano certamente é o mais relevante por ter os maiores fabricantes de equipamentos de redes, como a própria Cisco,por exemplo.
  O padrão americano chama uma parte do Espectro como  "Unlicenced",ou,não licenciado, não precisam de licença para operar. Ele também é chamado de ISM : Industry,Scientific e Midical.
  Se você quiser desenvolver seu próprio Access Point,o poderá fazê-lo desde que obedeça essas determinações. Obviamente que para vendê-los é outra história. Existe a legislação brasileira e a Anatel possui também suas regras.
  No Brasil, um caso comun de quebra das regras são as Rádio Piratas. Elas invadem frequências que já foram vendidas causando interferências. Fabricar um Access Point que não siga as regras de transmissão sem fio, causaria o mesmo problema, podendo,incluvive,provocar sérios riscos a todos.
  Dentro da faixa ISM temos as frequências de 900 MHz, 2.4 GHz e 5 GHz. A faixa de 900 MHz é muito usada para aparelhos telefônicos sem fio,enquanto que 2.4 e 5 GHz são comumente usados para Wi-fi.

   A Frequência de 2.4 GHz.

Vamos fazer uma parágrafo para explicar melhor essa tecnologia,afinal, ela é o objeto de nosso estudo.
Na verdade, trata-se de um range de frequências que estende desde 24000 até 24835 GHz,onde estão definidos os padrões 802.11, 802.11b,802.11g e 802.11n.
  Nos EUA o range é dividos em canais, 11 canais de 22 MHz. Sendo que três canais não sofrem interferência,como demonstra a figura abaixo:







Dessa forma, em uma implantação de redes sem fio onde mais de um AP será instalado, faz se necessário uma divisão do espectro,colocando os APs subjecentes em canais diferentes.

 A Frequência de 5 GHz.

A outra faixa definida para redes sem fio é a de  5 GHz. Esse range possibilita até 23 canais sem interferência,contra os três em 2.4 GHz. Os padrões 802.11a, 802.11n e o novíssimo 802.11ac estão nessa faixa de frequência. As velocidades aqui já chegam a 1 Gbps.
  O padrão 802.11ac está sendo sitado aqui por curiosidade. Ele não aparece no CCNA Wireless,inclusive, mesmo o padrão 802.11n é citado como sendo Draft standard ( Rascunho).
  Provalvelmente na próxima atualização da Cisco, ambos já devem estar presentes. Grandes fabricantes com a Cisco são mais resistentes para essas atualizações, afinal, o investimento feito em um padrão como o 802.11n é muito alto e o lançamento de uma padrão novo, gera todo um processo novamente.
  Fabricantes como a NetGear, que correm atrás de mercado, geralmente apressam esses novos padrões como forma de merchandising.
  Como meu intuito é o estudo para o CCNA, a linha definida pela Cisco será a seguida.

 Técnicas de Modulação.

Como definição para modulação podemos dizer que é a variação provocado em uma portadora com o objetivo de transmitir informação de um ponto 'a' para um ponto 'b'.
  Essa variação pode ser na Amplitude,como os Rádios AM, na Frequência,como os Rádios FM e na Fase.
Dentro das redes sem fio nos temos as técnicas de modulação chamadas FHSS,DSSS,OFDM e MIMO.

 FHSS.

 Frequêncy Hopping Spread Spectrum  foi o padrão original das redes sem fio ainda no padrão 802.11. Permite transmissão a apenas 1 e 2 Mbps e como o nome sugere ele funciona 'saltando' dentro de uma faixa pré-definida de frequências,  79 precisamente. O tempo de permanência em cada freqûencia é definido em 100 ms,podendo variar entre países.
  Na verdade, FHSS não é discutido no material oficial do CCNA.

DSSS.

 Direct Sequency Spread Spectrum é a técnica mais largamente usada nos dias de hoje devido ao fato de ser a técnica de modulação usada pelo padrão 802.11 b. Nessa técnica, se um AP está configurado para transmitir no canal 1, ele usará os 22 MHz do canal,ou seja, de 2401 até 2423 GHz.

OFDM

Essa não é uma técnica do tipo Spread Spectrum, ou seja, Espalhamento de Espectro. Nesse caso, o AP divide o canal em canais menores  de 300 KHz. Dessa forma, são usados 52 sub-canais enviando dados simultaneamente, possibilitando um alto trhoughput.
  Essa técnica é usada pelos padrões 802.11g e 802.11a .


MIMO.

MIMO significa Multiple Input Multiple Output, Multiplas entradas e multiplas saídas. Os equipamentos são facilmente conhecidos por terem mais de uma antena.
 Foi o primeiro padrão a vencer a barreira dos 100 Mbps.
  Equipamentos usando MIMO podem se comunicar com equipamentos usando 802.11a/b/g,porém, não com a mesma velocidade,obviamente.


Encoding ou Codificação.


Se modulação é a técnica de provocar variação na portadora para transmitir informação. Codificação é a técnica de transformar informação de um formato para outro.
 Dentre as técnicas de Codificação conhecidas podemos citar :

Chipping code:

Chip tem o mesmo significado de bit. Nessa técnica, um bit é enviado como sendo uma string. Isso reduz a possibilidade de perda de informação. A proxima figura ilustra bem o processo:



No caso para o envio do bit 1 é preciso nada menos que 11 bits,ou chips. O mesmo ocorre para o envio do zero. Isso confere robustez ao DSSS,permitindo comunicação mesmos em meios onde existam muito ruídos. Entretanto, o custo disso é uma baixa taxa de transferência de dados.
  Esta técnica de modulação é conhecida como Barker Code e atinge entre a 1 e 2 Mbps. Outra técnica empregada é Complementary code keying. Essa técnica é bem mais produtiva que a anterior. Ela usa o conceito de Code Words sendo que existem 64 possíveis. Um único code words representa até 6 bits, ou seja, ao invés de um bit sendo transportado, como no 11-Barker Code, agora temos 6 bits. Isso melhora a performance e possibilita DSSS atingir taxas de 5.5 a 11 Mbps.
  A figura abaixo trás um resumo da relação Modulação X Codificação:




Vamos ver a seguir duas técnicas de modulação:

BPSK

Um bom exemplo de modulação é Amplitude Modulation, ou, Modulação por amplitude de onda. As conhecidas Rádios AM existem a muitos anos. Essa técnica permite transmitir informação apenas variando a amplitude da onda transmitida. É uma forma simples porém eficaz de transmissão. Porém, não seria eficaz para transmissão de alto montante de dados.
 Na figura acima, podemos ver BPSK , Binary Phase Shift Keying, sendo empregada com  Barker code para a transmissão de 1 Mbps. Isso é inconcebível nos dias atuais,mas já foi uma evolução no passado.


QPSK

Quadrature Phase Shift Keying

É uma evolução considerável em termos de modulação do sinal. Ela permite dois bits por vez, isso dobra a capacidade de transmissão. Melhorando a Codificação, QPSK pode atingir taxas de 5.5 e 11 Mbps,como ilustrado acima.

Desta forma, discutimos em linhas gerais, as técnicas empregadas para transmissão através do ar. Toda as peripécias encontradas ao longo do tempo para cumprir o objetivo original das redes sem fio: enviar quanto mais dados, mais rápido e mais longe.
  Cada tecnologia possui sua limitação e sua vantagem. Ainda hoje temos FHSS sendo usado em tecnologias novas como Bluetooth. Isso porque é eficiente quanto a ruídos. Porém, em tecnologias de transmissão em altas taxas ela é inconcebível.
  Em suporte de redes Wireless, certamente todos esses processos nos são quase que transperentes. A tecnologia nos permite ignorar grande parte do que ocorre  ao nível de camada física,de forma que podemos nos dedicar a camadas superiores. Mas, o conhecimento dessas teorias nos torna mais concientes do processo como um todo.
   Nos próximos post vamos discutir alguns tipos de redes Wireless e como os equipamentos começam sua aventura em carrregar informação através do ar.

 Até a próxima!!


Thursday, June 7, 2012

Desafio em C

Estudando uma apostila sobre a linguagen C, na parte que ensina sobre 'if', em um dado momento o autor expôs um código e como tarefa pediu para que o código fosse alterado. Eu quebrei a cabeça por horas até conseguir!
 Segue o código original:


#include <stdio.h>
int main()
{
int index = 0, contador;
char letras[5] = "Joao";
for (contador=0; contador < 1000; contador++)
{
printf("\n%c",letras[index]);
(index==3) ? index=0: ++index;
}
}


E segue o desafio:


AUTO-AVALIAÇÃO
Veja como você está:
Altere o último exemplo para que ele escreva cada letra 5 vezes seguidas. Para isto, use
um ’if’ para testar se o contador é divisível por cinco (utilize o operador %) e só então realizar
a atualização em index.



Fonte: 
Este documento foi retirado do Curso de C, ministrado via Internet pela UFMG. Os
interessados podem acessar http://ead1.eee.ufmg.br/curso/C


Provavelmente se algum programador passar por esse blog por esses dias, irá se sentir bem melhor consigo mesmo!
 Deve ser cômico para um deles imaginar que alguem tenha dificuldade para compreender e alterar um código assim. Mas eu tive e bastante!

Uma parte realmente interessante vou mostrar  abaixo:




char letras[4] = "Joao";

            0                                    1                                     2                     3                              4
             J
           o
             a
               o



for(contador=0; contador < 5; contador++)

{
  (index==0) ? index=0: ++index;
  printf("\n%c",letras[index]);
}










 Com a variável char, nós criamos a figura mostrada acima. Da forma com que foi criada e inicializada, char definirá uma quantidade de espaços que será preenchido quando damos a váriável um valor, como em nosso exemplo, joao.

O programinha proposto acima escreve j,o,a,o tantas vezes nós definirmos em nosso laço criado com 'for'. É bem fácil de compreender essa parte:

 for(contador=0; contador < 5; contador++)

 Após declararmos a variável contador, criamos um laço com 'for' para que uma determinada instrução seja repetida 5 vezes.  A instrução contador++ é o mesmo que dizer contador=contador +1. Ou seja, partindo do zero a até 4 vezes, iremos acrestar 1 a variavel contador.

  Eu compilei o programinha tal qual está na apostila, apenas alterei o tamanho do laço que na apostila está 1000. Segue o resultado:

c:\>notepad joao.c

c:\>gcc joao.c -o joao

c:\>joao

J
o
a
o
J
o
a
o
J
o
c:\>


 Eu chamei o programinha de 'joao' e o resultado do compilador foi a palavra 'joao' sendo escrita até 'estourar' o limite do laço criado com for que foi igual a 10.


Para resolver o desafio, eu fiz algumas alterações no código que provavelmente não é das melhores. Eu acredito piamente que alguém a faria com um terço das linhas que eu coloquei. E isso server como exemplo,inclusive,como as coisas funcionam nesse mundo dos softwares. Quanto melhor esscrito um código,menos linhas,menos memória,processamento e assim vai.

 Segue minha versão de como eu consegui escrever da forma solicitada pelo autor.




/* Codigo que repete letras ordenadamente*/


#include <stdio.h>

int main()

{

int index = 0, contador;
char letras[5] = "Joao";


/*primeiro for*/


    for(contador=0; contador < 5; contador++)

{


  (index==0) ? index=0: ++index;
   

 printf("\n%c",letras[index]);


}


for (contador=0; contador < 5; contador++)

{

  (index==1) ? index=1: ++index;


  printf("\n%c",letras[index]);


}



for (contador=0; contador < 5; contador++)

{

    (index==2) ? index=2: ++index;

    printf("\n%c",letras[index]);


}


for (contador=0; contador < 5; contador++)
{


   (index==3) ? index=3: ++index;

   printf("\n%c",letras[index]);


}

}//main


Considerando que a matriz criada por 'char' possui  um valor que indentificada cada 'quadradinho', e que nós criamos uma varíável chamada 'index' para representá-los. Eu repeti meu laço para cada 'quadradinho'. Ou seja, o programa irá escrever 5 vezes cada letra que está armazenada em cada posição do meu 'char'.

Como disse, uma solução mais compacta provavelmente deva existir e eu ainda devo achá-la,mas,com as ferramentas que eu tenho até aqui, essa foi uma solução. Pode não ser a mais elegante,mas consegui cumprir a tarefa. Vamos ver como fica a saída:

c:\>
c:\>notepad contadorcircular.c

c:\>gcc contadorcircular.c -o contadorcircular

c:\>contadorcircular

J
J
J
J
J
o
o
o
o
o
a
a
a
a
a
o
o
o
o
o
c:\>


Aqui está. Eu chamei de contadorcircular e ele apresentou as 4 letras 5 vezes.

Alguns pontos interessantes do código é por exemplo:
  (index==0) ? index=0: ++index;

Isso equivale,na verdade, á:

if(index==0);
{
 index=0
}
else
{
++index
}

Ou seja, é uma forma resumida de escrever todas essas linhas. E o que ambas querem dizer é o seguinte:

Estamos buscando um ponto de partida para processarmos o código. Aliáis, estamos sempre fazendo isso em programação. Ou seja, trabalhamos com variáveis,mas em um dado ponto do programa, temos que passar algum ponto em que as instruções se baseam.
  O '==' é diferente de' ='. Enquanto no segundo caso nós iremos dizer algo do tipo a=0,ou seja, estamos partindo com um valor zero para 'a',  no primeiro caso nós estamos nos referindo a possibilidade de 'a' ser zero. Se a for zero faça isso , se não foi faça aquilo.

 Aplicando ao nosso programa, iniciando de um valor x para nosso index,ou seja, "pegue o valor que está no 'quadradinho' 'x' e repita ele quantas vezes o nosso laço determinar".

 Como tenho feito em relação aos posts de C, vou repetir novamente. Minhas conclusões aqui podem não estarem totalmente corretas. Se alguem, que seja programador  tenha lido o que escrevi e encontrar algum absurdo, por favor me corrija e eu postarei com certesa para que outros também aprendam.
 Até um próximo.


Monday, June 4, 2012

Primeiros passos com C

Dando sequencia aos meus estudos de C, vou apresentar hoje alguns conceitos que já aprendi sobre a linguagem.
 Vou mostrar um programinha que compilei e baseado nele, apresento algumas teorias:



/*Programa para somar dois numeros digitados pelo usuario*/

#include <stdio.h>


int SomeDoisNumeros(int a,int b)

{

  printf("O numeros %d mais o numero %d igual a %d",a,b,(a+b));

return(0);

}

int main()
{


int a,b,Num;

printf("Digite o primeiro numero");
   
scanf("%d",&a);

printf("Digite o segundo numero");

scanf("%d",&b);

SomeDoisNumeros    (a,b);
return(0);

}


Apesar da idéia do programinha ser ridiculamente simples e sem utilidade prática, o que precisa ser considerado é o porque de cada coisa.
 Iniciamos com um comentário. Comentários são sempre importantes. Nos orienta caso um código precise ser lido futuramente . Quanto mais comentado for um códico, mais facilmente ele será interpretado por outras pessoas ou por nós mesmo no futuro. Isso não serve apenas para um programa,obviamente.

A linha:
#include <stdio.h>
Tem a mesma função do "import", para quem já viu alguma coisa em Java. Dessa forma voce pode usar várias funções que são pertinentes a 'stdio', que é uma abreviação de Standard Input Output. Java,por exemplo, usa o conceito de classes. Ao invés de escrever um monte de linha de códigos, é possível importar uma classe que já foi criada por alguém e desta forma otimizar seu trabalho.É o que está acontecendo aqui.

Vaja agora as linhas abaixo:

int SomeDoisNumeros(int a,int b)

{

  printf("O numeros %d mais o numero %d igual a %d",a,b,(a+b));

return(0);

}


Essas linhas acima representam uma parte muito legal na programação. Que tem tudo a ver com o que eu explicava . Eu criei uma função, um módulo, que faz alguma coisa específica. Na verdade, ele recebe dois parâmetros e faz a soma destes. Ele faz apenas isso. Mas o legal é que essa função pode ser usada em qualquer parte do meu programa e até em outro programa dependendo de como for construído. Esse é um conceito muito valorizado em programação porque economiza tempo e linhas de códicos.
  Por outro lado, é um conceito bastante complexo para nós iniciantes..
Veja que  minha função foi declarada como sendo do tipo 'int'. Int é um tipo de dado em C. Não é diferente de outras linguagens. Se voce declara algo como int, voce estará limitando ele a receber apenas alguns tipos de dados. Em geral int está relacionado a numeros inteiros. Não vou explicar aqui todos os tipos de dados, mas essa informação pode ser encontrada facilmente no google.
  Printf tem a função de mostrar algo na tela. Tem a mesma função de Println em Java. O que vier dentro do parênteses e dentro de aspas, será mostrado na tela.
 Podemos perceber a presença de %d. Quando aparece essa string, o  programa compreende que deverá substitui-lo por um dos dados que está sendo trabalhado. No caso o primeiro dado, ou seja, 'a'. Da mesma formar, as outras vezes que aparece a string no código, ocorrerá a mesma coisa,porém, para o segundo dado e depois pelo resultado. O seja, o programa irá concatenar o '%d' com as informarções dispostas após as aspas : a,b,(a+b).

  Queria ressaltar que apesar de programinhas assim serem encontrados facilmente no google, esse eu fiz com o que eu estudei durante o dia. Nâo faria o menor sentido tentar passar um conceito aqui que fosse simplesmente copiado de algum lugar.
  Meu objetivo aqui é tão somente estudar e não enganar a min mesmo.

int main()
{


Main. Essa parte do código, também presente em Java, é dita a mais importante do programa. Sem ela o programa não fará nada. Podemos ver ainda que ela também está definida com 'int', mas poderia ser apenas 'main'.

int a,b;

printf("Digite o primeiro numero");
   
scanf("%d",&a);

printf("Digite o segundo numero");

scanf("%d",&b);

SomeDoisNumeros (a,b);
return(0);

}


Dentro de Main, assim com dentro do parêntese da função que eu criei :
int SomeDoisNumeros(int a,int b)
Está acontecendo o que chamamos de 'declaração de variáveis'. Não vamos considerar um curso de C aqui. Por isso, não vou iniciar explicando cada detalhe da mesma. Considere esses posts como apenas uma discussão do meu ponto de vista dos conceitos de C. Mas, variável, é, como o nome indica, algo variável. Ou seja, um dado que eu quero usar em meu programa e que só fará sentido para ele. E só fará sentido para o compilador do programa se eu fizer essa declaração.
  Eu declarei aqui duas variáveis e eu posso usá-las quantas vezes eu quiser.
Aqui também estou usando a função printf. Estou usando-a para interagir com o usuário do programa. Enviando a ele uma mensagem do que seja esperado que ele faça. No caso, que ele entre com um valor no teclado.
 Assim que ele digitar alguma coisa, a função 'scanf' armazena o dado digitato pelo usuário em minha variável 'a'.
 Da mesma forma acontece abaixo com 'b'.
E por fim, minha função é 'chamada por 'main' para fazer aquilo que ela sabe fazer. Ou seja, com scanf eu recebi dois dados do usuário, digitado no teclado,por exemplo, e armazenei eles em uma posição específica da memória. Em seguida, eu estou passando para a minha função os dois dados para que ela faça seu trabalho, ou seja, faça a unica coisa que ela sabe fazer que é somar os dois números e mostrar o resultado.

  Bem, concluindo. Como iniciante em programação,aliais,mesmo Java que tive um pouco mais de contato ainda assim não sei fazer nada com a linguagem, acredito que esse seja o caminho a seguir. Ou seja, existe o conceito por trás da linguagem e a lógica da programação. Conhecer os conceitos é a forma que se tem para construir algo usando a lógica.  Quando eu postar algo sobre C, entenda-se como uma exposição de como eu capitei o conceito. Isso muitas vezes pode ajudar uma outra pessoa que pode estar estudando C e pode não estar compreendendo algo. Não tenho a menor intenção de ensinar C,mesmo porque eu também não sei.
 O que eu estou postando aqui segue a mesma filosofia de tudo o que eu tenho postado. Mostrar meu ponto de vista, minha interpretação, meu parecer sobre algo que eu absorvi de outras pessoas usando minhas palavras.

Para finalizar, segue a saída do meu compilador:
C:\>
C:\>
C:\>soma_doi_numeros.exe
Digite o primeiro numero5
Digite o segundo numero5
O numeros 5 mais o numero 5 igual a 10
C:\>


 Pela CLI do Windows 7 eu chamei o programinha, quando fui salvá-lo cometi um typo e digitei "doi" ao invés de "dois".
Ele me solicita para entrar com um número, depois outro e por último me mostra o resultado.

É isso aí. Entender os conceitos. Dar um passo, ir longe de passo em passo.

Abraço a todos!!



Sunday, June 3, 2012

Programador: Ser ou não Ser

O primeiro contato que eu tive com uma linguagem de programação foi em 2001 no meu curso de técnico em Telecom. Tive aulas de assembly quase no mesmo momento que estava descobrindo o computador. Infelizmente não consegui aproveitar nada da matéria.
  Mais tarde em 2006, já na faculdade de redes, tive contato com Java. Foi um ano aprendendo, ou tentando aprender, essa linguagem. Todos da turma de redes, principalmente aqueles que já haviam se deparados com alguma linguagem de programação antes, eram contrário a ter programação em um curso de redes. Eu não tinha parâmetros e não consegui absorver muito do que foi passado. Não dei sequência nos estudos de Java e procurei apenas 'passar' na matéria. Eu até enxergava algo incrível em programação e sempre admirei os programadores porque no fim de tudo, em computação, eles são os que constroem as coisas.
  Mas redes esteve sempre como meu principal objetivo e eu procurei seguir dessa forma. Entretando, muitas vezes em que estava lendo algum artigo,algum conceito mais complexo, eu me via diante de alguma coisa de programação. Quando procurei me informar sobre pós-graduação, um dos pré-requisitos que me foi mencionado era saber programar em pelo menos uma linguagem de programação.
 Mesmo nos troubleshooting de redes, não são raras as vezes que nos deparamos tentando entender os caminhos seguidos por um dado protocolo,ou olhando para tela de um syslog,quantas mensagens estruturadas nos é passado. No fundo de tudo isso, algo tenta se comunicar conosco. Quando mais você é capaz de se aproximar da linguagem da máquina, mais você é capaz de compreender o que ela está tentando te dizer. Não que uma linguagem de programação seja a forma que uma máquina fala, ela fala por '0' e '1',mas uma linguagem de programação é racionalmente o mais próximo que conseguimos falar com ela.
 Diante dessas ponderações e diante do meu ojetivo de fazer uma Pós em 2013, estou iniciando meu estudo em 'C'.
 Escolhi C por ser a linguagem da maioria dos sistemas operacionais,inclusive Unix/Linux. Além do mais, não ojetivo ser nenhum programador. Nâo tenho a menor prenteção de enveredar pelos caminhos de construir software ou coisas assim. Gostaria de ter um conhecimento suficiente para compreender a fundo um protocolo por exemplo. Ser capaz de olhar a implentação e ver o que ele realmente precisa fazer.
  Ontem baixei um compilador chamdo MinGW para Windows 7. Configurei de acordo com alguns tutoriais na Net e hoje,como meu start em C,contruí o famoso "Hello World". rsrs:
 Segue a compilação:
C:\>gcc hello_world.c -o hello_world

E a execução:

C:\>hello_world.exe
Hello World
C:\>
Ridiculamente simples, é a melhor definição desse programa,mas não deixa de ser um programa em C. Como Java teve origem em C, eu poderei aproveitar muitas coisas que aprendi na Faculdade.
E assim seguiremos nosso estudo!!!







Tuesday, May 29, 2012

Redes Sem Fio

Pensar que as redes sem fio são redes iguais as todas as outras, porém, usando como meio de transmissão o ar, é um erro enorme.
 Redes sem fio possui diferenças gigantescas em relação as demais tecnologias de redes e merecem um estudo mais detalhado.
  As redes sem fio são relativamente antigas. Basta dizer que foi estudando redes sem fio no Hawaii que Bob Metcalfe desenvolveu o protocolo Ethernet nos Labs da Xerox. Nessa época se falava em protocolo aloha,mas, sem dúvidas influenciou os protocolos atuais.
  Apesar das redes sem fio também serem ditas redes Ethernet, elas quase nada tem haver com as redes Ethernet cabeadas. Não apenas por não usarem o protocolo CSMA/CD e sim o CSMA/CA, mas existem mais diferenças que semelhanças entre ambas.
 Outro aspecto a ser considerado é que as redes sem fio são de longe a tecnologia de redes mais importante nos dias de hoje. A filosofia de vida moderna clama por comunicação a qualquer hora e em qualquer lugar. Mobilidade e comunicação juntas é a palavra de ordem no nosso mundo e apenas as redes sem fio são capazes de fornecer isso.
  
  Eu diria ainda que a diferença entre as redes sem fio tem diminuído da mesma forma que a rede Ethernet cabeada tem se tornado um padrão quase dominante sobre os demais tipos de redes: ATM,Frame Relay,DSL,etc tem sucumbido ao enorme crescimento das redes Ethernet que, com o auxílio das Fibras ópticas, não se limita mais aos 100 metros do cabo UTP.

  Acredito que em um futuro bem próximo, teremos um tipo comun de redes sem fio ou dispositivos que sejam capazes de facilmente operar entre elas.  Propostas como Wimax e o novo protocolo 802.11ac, dão indícios que as redes sem fio Wan e Lan tornarão cada vez mais próximas, quebrando a divisão de Indoor e outdoor.
  Baseado nessas perspectivas, pretendo iniciar uma série de Post sobre essa tecnologia e pretendo culminar como a obtenção do meu CCNA Wireless.
  Acho uma pena que a linha de certificação Cisco para redes Wireless não vá além da tecnologia 802.11,mesmo a nível CCIE,mas, ainda assim, pode-se considerar uma ótima abordagem sobre as redes sem fio.
  
 

 

Wednesday, April 25, 2012

SPAN, Port Mirroring ou Port Monitoring




        Hoje vamos falar de mais uma feature incrível dos devices Cisco. Esse assunto não é escopo de CCNA e sim de CCNP,porém, não é nada complicado e é muito importante.
  Imagina que você é Analista ou administrador de uma rede e alguém reclama de lentidão para acesso a um servidor ou coisa do tipo. Você acessa o switch em que esse servidor está conectado e verifica que realmente a interface em questão apresenta uma taxa altíssima de tráfego. Como saber se o tráfego é legítmo,por exemplo um backup sendo realizado na rede, ou é um ataque de DoS ou um vírus na sua rede?.
 Uma boa forma de validar a legitimidade do tráfego é através de um sniffer.
 Sniffers são softwares que possuem a capacidade de analisar o tráfego em um dado segmento e te mostrar quais os pacotes que estão trafegando nele. Existem equipamentos especializados que fazem isso,bem como softwares   proprietários, porém, temos ainda um ótimo software freeware que faz um execelente trabalho. Estamos falando do Wireshark. Proveniente no mundo Linux, esse software é estremamente eficiente e existe também para Windows.
   Pois bem, voce vai até o CPD,mais especificamente até o switch em questão com um notebook que possua um sniffer instalado e pretende analisar o tráfego. Qual a forma correta de se fazer isso ? Veja bem, se você espetar seu notebook a uma porta do switch, você irá escutar apenas o tráfego broadcast  do mesmo. Isso pode até ajudar no caso de um loop na rede ou algum outro problema.Porém, se a idéia for analisar um tráfego unicast, ou seja, um tráfego entre portas específicas, isso não vai funcionar. Como já devemos saber, o switch trabalha fechando um comunicação full duplex entre as portas, ponto a ponto,de forma que, apenas as portas envolvidas irão receber tráfego unicast. Essa é uma das vantagens de um switch sobre um Hub que inunda todas as portas, exceto aquela que originou o tráfgo. Em um Hub, se você espetar seu notebook com o Sniffer, perfeito,você "ouvirá" toda a comunicação entre os hosts. Porém, como estamos falando de um switch, isso não irá acontecer.
 Bem, você pode até desconectar o referido servidor do switch e espetar ele em um Hub, juntamente com seu notebook e ambos ao switch novamente, isso possibilitará que você "ouça" todo o tráfego que o servidor está recebendo e enviando.
 Entretando, essa é uma solução muito pouco nobre. Se estamos falando de switches Cisco, podemos usar uma feature muito bacana do IOS: SPAN, Port Mirroring ou Port Monitoring.

 Essa figura retirada do site da Cisco, mostra um exemplo de como podemos fazer o procedimento usando um Hub.






 

Fonte:http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a008015c612.shtml


Abaixo, o switch:



Muito bem, para que possamos, de forma elegante, intruzir um sniffer em nossa rede, escutar o tráfego que nos interessa sem ter que apelar para o já em extinção HUB, podemos e devemos usar SPAN.
 Com essa facilidade, nós dizemos ao Switch que enviei para uma terceira porta, todo o tráfego que está passando entre duas determindas portas.
   Vamos supor que nosso servidor está na porta 0/2 do switch, se comunicando com a porta 0/5,que pode ser a porta que possui saída para outro switch ou até mesmo para a internet. Vamos instalar nosso notebook com o sniffer na porta 0/1. Para as configurações, faremos o seguinte:

  
Switch(config)#interface fastethernet 0/1
Switch(config-if)#port monitor fastethernet 0/2
Switch(config-if)#port monitor fastethernet 0/5

Pronto. Com essas três linhas de comando, dissemos ao switch: Envie para a porta 0/1 uma cópia dos quadros (pacotes) que serão trocados entre as portas 0/2 e 0/5. Dessa forma, nosso sniffer poderá analisar todo esse tráfego.
 Essa feature pode ficar ainda mais bacana se você possui um ambiente de rede complexo e grande e não pretende ir até o local onde está o tráfego para fazer esse procedimento. Os switches cisco possibilitam que através de VLANs, você monitore de um switch uma porta que está em outro switch da sua rede. Porém, esse é um assunto que vamos deixar para um outro artigo.

 É isso ai, uma função importante, útil e bem simples.




Tuesday, April 17, 2012

CCNA 640-802

Hoje fiz minha prova  CCNA 640-802. Passei, graças a Deus! Sem ser arrogante, poderia ser CCNA a bem mais tempo, na verdade nem tive uma score tão boa assim, tirei quase que o suficiente para passar, mas confesso que adiei demais essa certificação, nem sei exatamente mais porque motivo.
  Durante muito tempo essa certificação era tão 'distante' para  mim pelo fato de não conviver com pessoas que fossem certificadas. Além do mais, não existia nenhuma exigência ou estímulo para isso por parte das empresas onde passei, apenas minha própria vontade de ser CCNA.
   Acredito que minha vinda  para a AT&T foi determinante nessa tomada de decisão. Além do estímulo que recebi da empresa com reembolso do valor pago, que diga-se de passagem está bem caro. Tem ainda o fato de todas as pessoas da parte técnica na empresa ter essa e várias outras certificações.
  O quão fácil ou difícil é a prova vai depender de cada um. Cada pessoa é a medida de si mesmo, não adianta querer se basear nesse fato. Eu achei questões bastante fáceis e questões bastante difíceis.
  Das 48 questões, foram dois Labs, um de EIGRP e um de ACL e uma questão com simulador para descobrir status de Spanning tree e VTP. No mais, foram questões de multipla escolha, drag and drop e por ai vai. Nada diferente dos muitos simuladores de provas que podem ser encontrados pela net.
   O Lab de ACL foi de certa forma tranquilo mas o Lab de EIGRP foi bem complicado. No Lab de EIGRP eu encontrei coisas erradas e corrigi mas como o tempo começou a ficar apertado, salvei o que eu tinha feito e passei adiante. Não sei se é considerado alguma coisa  mas é fato que não se pode sacrificar uma prova em função de uma questão.
  Em termos de materiais a dica que eu dou é os livros ICND 1 e ICND2 do Weldon Odom. O simulador que vem com os livros é muito bom. Tem um nível bem parecido com o CCNA real e ainda trás Labs. Não sei quanto esta custando mas vale a penas ter. Diria inclusive que nem precisa de outros materiais.
 Esses livros são em inglês, da mesma forma que minha prova. Se alguém disser: Mas eu não manjo de inglês!
Ai eu digo o seguinte: Então ao invés de CCNA, dedique algum tempo ao inglês antes. Na minha modesta consepção, não vale a pena correr atrás de certificações sem ser capaz de pelo menos compreender um material em inglês. Mesmo que o ambiente de trabalho não exiga que você fale inglês, todos sabemos que praticamente todo bom material na área de TI, para citar apenas uma área, estão em inglês!
 Então é isso. Eu pretendo marcar minha próxima prova assim que determinar qual será a próxima, estou entre fazer Wireless, voice ou partir para CCNP R&S. Mas vou usar a tática de marcar porque considerei essa tática muito eficaz. Saber que existe uma data te ajuda a se organizar e te força a estudar.
  Qualquer pergunta pode ser endereçada ao meu e-mail que terei prazer em ajudar.