quarta-feira, 27 de maio de 2015

Roteador IP - Funcionamento

A função do roteador como já foi mostrado no artigo sobre funcionamento da internet, é interligar redes internas à redes externas, ele possui portas para redes internas e portas para redes externas, o conhecimento sobre a externalidade ou internalidade se dá pelo endereçamento IP. A animação abaixo mostra o funcionamento básico do roteador. Computer -> Computador, IP Packet -> Pacote IP, Router -> Roteador.



Mas se um computador na rede externa envia pacote direcionado ao IP da porta do roteador que se encontra na rede externa, como é que um computador destino recebe o pacote na rede interna? E como o roteador do Google sabe qual o computador da rede interna que deve receber requisições pela porta 80?
A resposta é o NAT, Network Address Translation, que opera somente por TCP ou UDP pelo fato de utilizar portas de conexão (assunto explicado melhor no artigo sobre TCP e UDP) como base de funcionamento.
Como a explicação sobre o NAT é um pouco extensa, um artigo (futuro) será dedicado somente para esse dispositivo.

quarta-feira, 6 de maio de 2015

Endereçamento IPv4

Esse artigo aborda preliminarmente o conceito de protocolo ARP e mais extensamente como a máscara de sub-rede atua.

Foi visto no artigo sobre protocolo IPv4 que os computadores utilizam endereço IP como credencial para poder se identificar e se comunicar, foi visto no artigo sobre switches e sobre o que é a Internet, que os computadores utilizam a rede interna para se comunicar entre si e até para acessar a Internet.
Mas como um computador saber que determinado IP destinatário ou remetente pertence ou não à rede interna (seu escritório ou casa) ou externa (possivelmente a Internet)?
O que o computador faz quando ele sabe que determinado IP destino faz parte de uma rede externa e ele quer enviar dados para o computador com esse IP externo?
A resposta está na máscara de sub-rede, um registro que o computador tem do quanto o endereço do IP destino ou remetente deve ser parecido com o dele para ser considerado o IP de uma máquina da mesma rede.

A máscara permite um computador saber que o IP do site do google.com por exemplo é diferente do dele, fazendo com que ele envie o pacote para a porta Ethernet interna do roteador para o roteador enviar o pacote para a porta externa (Internet).
O computador sabe o endereço MAC (descrito no artigo sobre Switch) da porta Ethernet interna do roteador para poder enviar um pacote IP para ele, mas como? É nessa hora que o protocolo ARP atua, o computador que não conhece o endereço MAC (é bom relembrar que o MAC é uma credencial utilizada para se comunicar na rede interna) envia pacotes ARP para toda a rede interna perguntando o endereço MAC de quem possui o IP de porta interna de roteador (essa porta interna é também chamada de Gateway, que significa portão, no caso um portão para o mundo externo, o mundo da Internet), quem possuir esse IP, retorna um pacote ARP com destino à máquina que fez o questionamento, como o ARP estará encapsulado em um quadro Ethernet contendo endereço MAC como remetente, a questão estará respondida.
E como a máscara de sub-rede funciona exatamente?

A máscara de sub-rede possui o mesmo tamanho de um endereço IP, são 4 octetos, ou seja, 4 campos com 8 bits (logo, 2 elevado a 8 ou 256 possibilidades em cada octeto), se um bit de uma determinada posição for 1 (valor binário um), nesta mesma posição o bit do IP de outro computador deve ser igual da máquina com esta máscara de sub-rede, é recomendável uso de calculadora para converter decimal em Binário (o Windows possuiu uma, é só abrir a calculadora e ativar o modo programador), nos exemplos abaixo os bits 1 da máscara e os bits iguais dos IPs diferentes de cada comparação entre dois computadores diferentes está marcada em vermelho e os que devem ser iguais estão em verde,  para facilitar o entendimento:


decimal
binário
Máscara de sub-rede computador do Renato
255.255.254.0
11111111.11111111.11111110.00000000
IP do computador do Renato
192.168.0.3
10100010.10101000.00000000.00000011
IP do computador do Márcio
192.168.3.7
10100010.10101000.00000011.00000111
Computador do Renato considera o do Márcio como sendo da mesma rede?
Não, veja que o sétimo bit do terceiro octeto não é igual para os dois IPs, como manda a mascara de subrede.



decimal
binário
Máscara de sub-rede computador do Jorge
255.255.255.0
11111111.11111111.11111111.00000000
IP do computador do Jorge
192.168.0.3
10100010.10101000.00000000.00000011
IP do computador do Lucas
192.168.0.7
10100010.10101000.00000000.00000111
Computador do Jorge considera o do Márcio como sendo da mesma rede?
Sim, para todas as posições marcadas pelos bits 1 da máscara os dois IPs são iguais

O caso mais comum em que um computador percebe que outro faz parte de outra rede é quando há diferença entre localidade das redes, e o caso mais comum pra isso acontecer, é uma rede ser interna e a outra ser externa voltada para o provedor (que conecta à internet), como por exemplo:


decimal
binário
Máscara de sub-rede computador do Renato
255.255.255.0
11111111.11111111.11111111.00000000
IP do computador do Renato (Rede Interna)
192.168.0.3
10100010.10101000.00000000.00000011
IP do Google.com
216.58.219.100
11011000.00111010.11011011.01100100
Computador do Renato considera o do Márcio como sendo da mesma rede?
Não, novamente há vários bits diferentes nas posições marcadas pela máscara, agora perceba também todos os 3 primeiros octetos pertencem a redes diferentes.


segunda-feira, 4 de maio de 2015

Paint do Windows 7 - Básico

Eis um tutorial ensinando a mexer nas ferramentas mais básicas do Paint para Windows 7
Para colocar na área de desenho ou ajustar o tamanho da ação ou do desenho feito (retângulo, recorte, etc...) segure o botão esquerdo do mouse e arraste ele até o local que te fará ter o efeito desejado.
As setas indicam onde você deve clicar, os números a ordem, e as cores o tipo de desenho.
Bom divertimento!



sexta-feira, 1 de maio de 2015

quarta-feira, 29 de abril de 2015

Roteador IP - Introdução

Um roteador é um aparelho de redes de computadores que trabalha a nível 3 da camada OSI/ISO (Rede), utilizando o protocolo IP (explicado aqui), é por isso que o roteador é capaz de conectar máquinas de redes distintas, essa função faz do roteador o aparelho que torna a internet possível de existir.

A maioria dos roteadores são domésticos e possuem apenas duas portas de roteador, e estão embutidos em um aparelho híbrido, hoje em dia esse aparelho híbrido é um modem+roteador+switch+AP Wifi. Em um aparelho híbrido moderno doméstico uma das portas é ligada a um switch (clique aqui pra entender esse termo), logo esta porta representa a rede interna do local, a outra porta é conectada ao modem interno do aparelho como a função do modem é se conectar a internet, que é a rede externa, essa outra porta representa a internet.

Veja uma foto de um aparelho desses com as partes supracitadas destacadas:




segunda-feira, 27 de abril de 2015

O que é um computador (Software)

Um programa de computador é toda e qualquer sequência programável de ações (daí o nome programa) que o computador vai fazer, por isso robôs são computadores, eles fazem o que lhes foi designado fazer.
O que seria um programa na vida real e natural?
Poderia ser na sequência:
1-    Sair de casa
2-  Pegar o ônibus
3- Se encontrar com a namorada no shopping
4- Tomar sorvete juntos
5- Cinema
6- Casa
Reparou que envolve toda uma sequência de eventos? No computador, acontece a mesma coisa, eis uma situação em que vários programas entram em ação, um após o outro:
(1) Busca pelo Sistema Operacional (no caso, Windows) efetuado pelo software da BIOS na placa mãe:
1-  Um programa instalado na placa mãe do computador segue um algoritmo, para que ele procure por um Sistema Operacional em uma ordem definida, através de um método definido e repetitivo.
2- O Windows é encontrado e o software da placa mãe passa o controle do processador para o Windows.
 (2) Windows se preparando para uso:
1- O Windows inicia procedimentos diversos (o que o define como um programa) pra permitir que o usuário possa utilizar o computador de forma cômoda e com acesso a todos os recursos (rede, teclado, mouse).
2- Término da inicialização do Windows.

domingo, 26 de abril de 2015

Linguagem C - Matriz unidimensional - Exemplo 1

O objetivo desse programa em C é preencher uma matriz unidimensional inteira (int) qualquer e imprimir seus números distintos na tela (ou seja, sem repeti-los).
Nível de dificuldade: 3 (difícil)
O código (verde) está explicado com comentários (em azul), pronto para ser copiado e colado no seu ambiente de edição favorito:
#include <stdio.h>

int main( void)
{
    int i; int j;
    int iguais; /* para contar quantos numeros do numerosjalidos [] sao iguais a detemrinado numero em determinada posicao do                     vetornumeros[]*/
    int posicaonumerosjalidos=0; /* inteiro auxiliar que guarda a posicao no vetor do numerosjalidos[] */
    int vetornumeros[9];   /* o vetor com todos os números */
    int numerosjalidos[9]; /* o vetor que vai ter todos os numeros do vetornumeros[] e na mesma ordem,
so que sem repetir nenhum numero*/

            /* Esse programa tem como funcao receber numeros de um vetor de numeros e imprimir a tela esses numeros sem repeti-los e na ordem em que entraram no vetor */

    printf ("declare agora os numeros do vetor de numeros: \n");

    for (i=0;i<=9;i++)
        {
            printf ("\nEntre com o valor do numero na posicao %d no vetor de numeros: ",i);
            scanf ("%d", &vetornumeros[i]);
        }

     

    numerosjalidos[0]=vetornumeros[0];


    for (i=0;i<=9;i++)
        {
            iguais=0;
            for (j=0;j<=posicaonumerosjalidos;j++) /* hora de fazer a varredura (loop ou laco de repeticao) */
            {
                if  (vetornumeros[i]==numerosjalidos[j])
                {
                    
                    iguais++;
                }
              
            }
            if (iguais == 0 )
            {

                numerosjalidos[posicaonumerosjalidos +1] = vetornumeros[i];

                posicaonumerosjalidos++;
             
            }
               
        }
    for (i=0;i<=posicaonumerosjalidos;i++)
        {
            printf ("\n Numero posicao %d eh: %d",i,numerosjalidos[i]);

        }
    printf ("\n\n Seu programa terminou! \n",i,numerosjalidos[i]);
    system ("pause");

}