Thursday, November 20, 2008

Bibliotecas Javascript para trabalhar com Imagens

http://odyniec.net/projects/imgareaselect/examples.php

http://www.defusion.org.uk/demos/060519/cropper.php?demoType=ratioFourThree&image=castle&formSubmit=Load+demo

Classes de endereços IPv4

Os endereços IPv4 são padronizados pelo instituto Iana, e são divididos em algumas classes bem definidas:

Classe A: De 1.0.0.0 a 126.0.0.0
Classe B: De 128.0.0.0 até 191.255.0.0
Classe C: De 192.0.0.0 até 223.255.255.254
Classe D: De 224.0.0.0 até 239.255.255.255
Classe E: De 240.0.0.0 até 255.255.255.255

Alguns endereços reservados:

10.0.0.0
14.0.0.0
39.0.0.0
127.0.0.0
172.16.0.0
192.168.0.0
169.254.0.0
191.255.0.0
191.88.99.0

Remontagem

Devido à comutação de pacotes, os dados que são enviados por um emissor a um receptor tendem a percorrer caminhos diferentes para chegar ao mesmo destino.

Assim, cabe ao receptor realizar a remontagem destes pacotes, seguindo algumas regras:

- Há um tempo limite para realizar a remontagem;
- Caso os pacotes já tenham sido recebidos e, ainda assim, falte um pacote para completar a remontagem, caso o tempo limite expire, o receptor enviará ao emissor destes pacotes uma ICMP de time exceeded.

A remontagem de pacotes exige processamento e consumo de memória por parte do receptor.

Fragmentação

Cada padrão de rede possui um MTU (Maximum Transfer Unit) próprio.

Assim sendo, caso um datagrama seja maior que o MTU da rede, este será fragmentado, de forma que seus fragmentos compartilhem o mesmo cabeçalho (com o valor de alguns campos alterados) e cada um receba uma porção de seus dados.

Frame IP

O frame utilizado no protocolo IP possui uma grande quantidade de campos, que serão detalhados nesta postagem.

Version: Campo de 4 bits que especifica a versão do frame;

HLEN: Campos que definem propriedades sobre o tamanho do cabeçalho. Indicam o tamanho em quantidade de palavras de 32 bits.

Service Type: Informações sobre precedência, confiabilidade, atraso e throughput;

Total Length: Tamanho da do cabeçalho mais a área de dados;

ID: identificador único do pacote IP;

Flags: reserved, more fragmented, no fragmented;

Fragment Ouset: Número de 13 bits múltiplo de byte;

Time to Live: Tempo de vida do pacote. Se o pacote entrar em ciclo (looping infinito), o TTL é decrementado a cada salto e quando chega a zero, o pacote é expirado e o roteador o elimina da rede, não o passando para frente.

Protocolo: Indica qual o protocolo superior de transporte utilizado (TCP/UDP);

Header checksum: Campo de 16 bits que permite verificar a integridade dos dados do cabeçalho;

Endereços de origem e destino: De onde o pacote partiu e onde quer chegar;

Padding: Ajuste técnico, para compensar a conversão do sinal, pois, quando surgiram os primeiros protocolos, o tamanho do frame era variável. Com isso, não se otimizavam os buffers, pois se perdia o sinal quando não era possível alocar um buffer. O padding permite que o buffer seja feito em múltiplos de 4. O protocolo IPv6 dispensa seu uso, pois ao invés de utilizar tamanhos variáveis e múltiplos de 4, faz o uso de octetos de tamanho fixo.

Data: São os dados transportados pelo pacote;

Time of Service (ToS):
T: Alto throughput;
D: Baixo atraso;
R: Elevada confiabilidade

IPv4 x IPv6

O IPv4 (RF791) é o protocolo mais utilizado para a camada de rede do modelo OSI. Entretanto, é um protocolo antigo, criado na década de 70, que deixa a desejar em diversos recursos, como, por exemplo, na implementação nativa do controle da qualidade do serviço.

Embora antigo, o protocolo IPv4 continua a ser utilizado em larga escala e não há previsões de que será atualizado pelo protocolo mais recente, o IPv6 (RF2460). Isto se deve ao fato de que a grande maioria das redes ainda utiliza IPv4 e a migração entre os protocolos exigiria investimentos demasiadamente grandes, uma vez que muitos computadores e roteadores não suportariam o protocolo mais atual.

Atualmente, o protocolo IPv6 tem sido utilizado apenas em backbones, sendo convertido para IPv4 antes de chegar até o usuário final.

O IPv6 utiliza o endereçamento de 128 bits, que permite que sejam endereçados 2^128 endereços, uma capacidade significantemente maior que a do IPv4, que utiiza 32 bits para endereçar, provendo até 2^32 endereços.

IP - Internet Protocol: Características

O protocolo IP é o protocolo mais utilizado atualmente, correspondendo à camada de rede do modelo OSI.

Versões do protocolo:
IPv4 (RF791)
IPv6 (RF2460)

Suas principais características são:

Serviço de entrega best-effort: Pacotes não são descartados sumariamente, o que torna o protocolo confiável em condições adequadas; O protocolo se torna não-confiável apenas quando há exaustão de recursos;

Datagramas de tamanho variável: Desde que seja respeitado o limite de 64Kb.

Provimento de envio e recebimento;

ICMP (Internet Control Message Protocol): Em caso de erro na entrega, faz uso do ICMP para enviar um relatório dos erros ocorridos ao emissor dos pacotes.

Tunelamento (tunneling)

Tunnelamento é criar uma única rede virtual que atravesse mais de uma rede real.

Os roteadores das diversas redes estão sincronizados e os hosts podem interagir como se estivessem em uma mesma rede real, embora estejam em uma mesma rede virtual.

A Rede Privada Virtual (VPN) utiliza o tunelamento para estabelecer uma interface virtual criptografada entre dois roteadores.

Wednesday, November 19, 2008

NAT - Network Address Translation

Network Address Translation (NAT) é a tradução existente entre endereços internos da rede e endereços externos.
Como benefícios, o NAT proporciona uma economia na utilização de endereços IPs reais, visto que é possível que vários hosts saiam para a rede externa com o mesmo endereço IP. No mesmo sentido, a segurança proporcionada à rede interna também é significativamente maior, pois as conexões têm início no interior da rede.

Caso seja necessário explorar recursos presentes no interior da rede a partir de redes externas, será necessário um servidor virtual, também conhecido como NAT reverso.

Moldagem de tráfego (traffic shapping)

O traffic shapping, ou moldagem de tráfego, consiste na adequação do tráfego da rede a fim de evitar ou amenizar futuros problemas de congestionamentos.

O traffic shapping pode ser realizado por pré-locação de buffers, descarte de pacotes ou pelo Algoritmo do Balde.

Pré-locação de buffers: Um pacote de sinalização é enviado sempre antes que um pacote de prioridade alta seja enviado, permitindo, deste modo, que o pacote prioritário encontre caminho livre para seguir seu caminho com maior velocidade.

Descarte de pacotes: Pacotes são sumariamente descartados.

Algoritmo do Balde: Há uma entrada de volume variável, um buffer de tamanho limitado e uma saída, que pode possui vazão constante (sem token) ou variável (com token), na qual há uma variação no valor do jitter.

Redes de Computadores: Congestionamentos

Congestionamentos ocorrem em uma rede de computadores quando a quantidade de pacotes enviados é maior do que a quantidade de pacotes recebidos, degradando a qualidade do serviço e podendo condenar nós e subredes.

A prevenção de congestionamentos é realizada através do monitoramento da rede e da identificação de gargalos.

Políticas de prevenção de congestionamentos podem ser aplicadas às camadas de enlace, rede e transporte.

Enlace
Cache fora de ordem;
Confirmações;
Retransmissão;
Controle de fluxo;

Rede
Serviço de enfileiramento de pacotes;
Tempo de vida dos pacotes;
Destruição dos pacotes;
Algoritmos de roteamento;

Transporte
Controle de fluxo;
Retransmissão;
Cache fora de ordem;
Confirmação;
Determinação do time-out;

Quality of Service (QoS)

Algumas aplicações apresentam um certo grau de severidade em relação ao desempenho das redes de computadores para que funcionem corretamente.

É possível implementar no roteamento políticas que priorizem a passagem de pacotes considerados prioritários em relação aos demais. Estes pacotes de maior prioridade passam à frente dos demais e são despachados primeiro pelo roteador.

Algumas variáveis relacionadas à QoS:
Delay: Corresponde ao atraso que há entre o envio e o recebimento dos dados;

Jitter: É calculado a partir do delay, sendo um cálculo de desvio padrão.

Confiabilidade: É a garantia de que todos os pacotes que partem da origem serão entregues corretamente no destino.

Algoritmo Flooding

É um algoritmo muito simples, que consiste em um roteador repassar os dados que recebe para todos os seus roteadores vizinhos, exceto para aquele de quem recebeu o pacote.

É pouco utilizado em redes maiores, pois gera sobrecarga.

Classificação de Algoritmos de Roteamento

Os algoritmos de roteamento são adotados pelos protocolos de roteamento, que podem optar em possuir um ou vários algoritmos para roteamento.

Os algoritmos de roteamento podem ser classificados em duas categorias:

Algoritmos de roteamento globais

Algoritmos de roteamento descentralizados

Os algoritmos de roteamento globais trabalham com o objetivo de determinar o menor caminho entre os nós de origem e de destino. Para que possam trabalhar, os algoritmos de roteamento globais devem ter pleno conhecimento da topologia da rede e seu enlace. O envio e recebimento de numerosa quantidade de mensagens em broadcast informando o estado dos roteadores é uma das principais características de seu funcionamento, o que o torna inadequado para redes maiores.

Um exemplo de algoritmo de roteamento global é o algoritmo de Dijkstra, que tem como objetivo determinar o menor caminho entre dois nós. Seu funcionamento constitui em uma etapa de inicialização seguida por um looping, o qual possui quantidade de iterações equivalente ao tamanho de hosts na rede. Ao seu término, é retornado o menor caminho possível entre dois nós.
Com freqüência, o roteador dispara mensagens em broadcast para os demais roteadores, informando sobre seu estado e também recebe informações sobre o estado de outros roteadores, a fim de atualizar suas tabelas de roteamento. Isso torna o algoritmo de Dijkstra inadequado para redes maiores, sendo utilizado apenas em segmentos menores da rede, em casos específicos.

Os algoritmos de roteamento descentralizados são algoritmos iterativos e distribuídos. O algoritmo Distance-Vector é um algoritmo dinâmico, distribuído e iterativo, utilizado em protocolos de roteamento como IPX, Apple Talk e RIP. Nele, os roteadores conhecem seus vizinhos imediatos e trocam tabelas de retardos entre si.
O algoritmo de Bellman-Ford é utilizado para calcular a distância métrica de Distance Vector.

Princípio de otimização: árvore de escoamento

A árvore de escoamento é um princípio de otimização que define que a melhor rota de A até B também será a melhor rota de B até A.

Pelo fato de a Internet não ser uma malha regular, muitas vezes há a formação de loopings no roteamento dos dados.

Tabelas de roteamento

Nas tabelas de roteamento os roteadores armazenam as informações necessárias para realizarem seu trabalho.

Os campos presentes nas tabelas de roteamento variam de acordo com o protocolo de roteamento que está sendo utilizado. Todavia, os mais comumente encontrados são:

Destino: Para onde os dados irão;
Gateway: Por onde sairão da rede atual;
Saltos: Número de pulos para chegar até o destino;
Interface: Por qual interface os dados sairão do host (PC ou roteador) onde se encontram.

Redes de computadores: Sistemas autônomos

Sistemas autônomos consistem em um grupo de redes e roteadores controlados por uma única autoridade administrativa.


Em um sistema autônomo, todos os roteadores seguem as mesmas "regras" de roteamento.

Os protocolos de roteamento aplicados variam de acordo com a atuação dos roteadores, que pode ser interna ou externa.

Para os roteadores internos, que são aqueles que se comunicam apenas com outros roteadores internos, são adotados protocolos de roteamento interiores IGP (Interior Gateway Protocol). Roteadores internos tendem a ser mais confiáveis quando se comunicam com outros roteadores internos.

Para os roteadores externos, também conhecidos como roteadores de borda, aplicam-se protocolos de roteamento externos, os EGP (Exterior Gateway Protocol), que são mais adequados para que estes roteadores se comuniquem com roteadores de outras redes.
Os roteadores de borda apresentam custo mais elevado e possibilitam que um sistema autônomo possua interfaces externas com outras redes.

Exercícios de roteamento

Links para download dos exercícios de roteamento utilizados na aula de redes.

Download aqui

O que é roteamento? Quais os possíveis tipos de algoritmos de roteamento?

O roteamento é uma atividade realizada na camada de rede, cujo objetivo é definir qual será o caminho trilhado pelos dados (empacotados) até chegarem ao seu destino.
O dispositivo responsável por esta atividade é o roteador, que possui em sua memória tabelas com as informações necessárias para determinar o destino dos pacotes que recebe. As informações desta tabela variam de acordo com o protocolo de roteamento utilizado.

Os algoritmos de roteamento são a lógica aplicada pelos roteadores na definição do caminho pelo qual os pacotes seguirão. Os algoritmos utilizados nestes dispositivos podem ser divididos em duas categorias:

Algoritmos de roteamento estáticos ( ou não-adaptativos): são aqueles em que as tabelas de roteamento são definidas manualmente pelo administrador da rede. As rotas são fixas e não se alteram em virtude de qualquer fator que não seja a ação do administrador.

Algoritmos de roteamento dinâmicos (ou adaptativos): Os algoritmos de roteamento dinâmico definem as tabelas de roteamento através da utilização de protocolos de roteamento.

Redes de Computadores: Diferenças entre datagramas e circuitos virtuais

Na camada de rede, existem dois serviços possíveis para entregar os pacotes em seus respectivos destinos: datagrama e circuito virtual.

Um serviço de datagrama é aquele em que os diversos roteadores são autônomos ao decidir qual será o caminho adotado pelos pacotes. Cada pacote que parte de uma mesma origem para um mesmo destino pode seguir pode diferentes rotas. O serviço de datagrama dispensa a configuração de circuitos virtuais e, em caso de paralização de um roteador, os serviços mantêm-se ativos, sendo os pacotes desviados por outras rotas. Neste serviço, cada pacote traz em seu cabeçalho as informações sobre sua origem e seu destino e os roteadores não armazenam as informações das conexões que se mantém ativas. Em contrapartida, devido a sua autonomia ao decidir qual a rota aplicada a cada pacote, os roteadores necessitam de um maior processamento para executar seus algoritmos de roteamento. O controle da rede, em um serviço de datagrama, também é mais complexo, visto que a implementação de políticas de controle de congestionamento e Qualidade do Serviço (QoS) é mais complicada.

No serviço de circuito virtual, o primeiro passo a ser realizado é a configuração do circuito pelo qual os pacotes serão transportados. Cada pacote possui em seu cabeçalho a informação sobre a qual circuito pertence e, independentemente do seu ponto de partida, fará o mesmo caminho até chegar a um destino específico. As informações sobre conexões são mantidas em tabelas pelo roteador e, caso este pare de funcionar, todas as conexões que passam por ele também deixarão de funcionar. Como pontos positivos, os circuitos virtuais podem facilmente ter implementados mecanismos de controle de congestionamentos e Qualidade do Serviço (QoS). O processamento no processo de transporte dos pacotes também é inferior ao do datagrama, uma vez que não há preocupação sobre qual destino os pacotes tomarão.

Monday, October 27, 2008

Conversor On-line para imagens

Ótima ferramenta para quem necessita converter rapidamente imagens entre diversos formatos.

Online-Utility.org Image Converter

Tuesday, October 14, 2008

Validador rápido para XML usando XMLSchema

Ferramenta que permite validar rapidamente um XML contra um XML Schema. Basta enviar os dois arquivos que a ferramenta executa a validação, exibindo um relatório completo sobre os erros encontrados.

Site: XML Schema Validator (DecisionSoft)

Monday, September 29, 2008

Mouse USB sem fio (wireless)



Cansado de ter problemas com mouses USB para notebook, adquiri um outro mouse USB, só que desta vez, sem fio. O aparelho consiste em um receptor, compatível a porta USB, e o próprio mouse, que é o transmissor do sinal. No mouse, há duas pilhas AAA (palito) que garantem o funcionamento do dispositivo.
O aparelho se comunica com o receptor por meio de ondas de rádio, na freqüência de 27Mhz e não gera qualquer interferência na internet sem fio (wireless) ou com qualquer outro aparelho (telefone sem fio, rádio, etc).
Falando particularmente do produto que comprei, cuja procedência é duvidosa (made in china), achei o mouse muito bem acabado e com excelente funcionamento. É anatômico, emborrachado e possui bom tempo de resposta, semelhante a um mouse com fio, para a maior parte das aplicações.
Dentre certos intervalos de tempo, é necessário realizar a sincronização entre o mouse e o receptor. Este procedimento é feito pressionando-se simultaneamente um botão presente na parte inferior do mouse e outro botão presente na parte superior do receptor. Cerca de 1 segundo após isto ser feito, o mouse já está perfeitamente sincronizado e pronto para ser utilizado.

Thursday, September 18, 2008

XHTML vs HTML

O XHTML foi criado a partir do XML, com o intuito de substituir a linguagem HTML, agregando à linguagem já existente as principais vantagens do XML.
As marcações de apresentação do HTML foram mantidas no XHTML, entretanto, as restrições léxicas e sintáticas do XML lhe foram acrescidas.

As principais vantagens do uso do XHTML sobre o uso do HTML tradicional:

- Compatibilidade futura: Por ser um padrão da W3C, é natural que os navegadores sigam-no, ao contrário do que ocorre com as tags "deprecated" que existem no HTML, que no futuro poderão não mais ser interpretadas pelos navegadores.

- Velocidade de carregamento: Por não ter a necessidade da uso de "hacks" para contornar "bugs", o XHTML garante uma intepretação muito mais veloz de seu código, que tende a ser menos extenso que um código HTML repleto de ajustes para contornar imcompatibilidades; Por utilizar uma forma padronizada para a marcação, o carregamento das páginas se torna mais rápido, uma vez que o navegador não necessita decidir sobre como renderizar um documento com erros de escrita.

- Facilidade de edição: O código XHTML é, assim como XML, padronizado e bem estruturado, seguindo a idéia de "documento bem-formado", o que melhora a legibilidade do código pelo editor.

- Código consistente: Há apenas os dados necessários para a exibição do documento pelo navegador, eliminando ajustes necessários para tornar o documento compatível com diversos navegadores.

Monday, September 15, 2008

Como resolver problemas com acentos no teclado ao usar o Adobe Photoshop

Se o seu teclado funciona normalmente em outros programas, mas fica desconfigurado quando está utilizando o Adobe Photoshop ( acentos trocam de teclas, o "ç" some, etc ), isto ocorre porque o padrão de teclado no Windows é alterado automaticamente para o inglês enquanto você está trabalhando com o Photoshop.

Para solucionar, siga os seguintes passos, no Windows XP:

  1. Abra o Painel de controle, através do menu iniciar ou atalho de sua preferência;
  2. Escolha o modo clássico de exibição ( caso ainda não esteja selecionado );
  3. Vá em "Opções regionais e de idioma";
  4. Na janela que abrir, clique na aba "idioma";
  5. Clique no botão "Detalhes...";
  6. Na aba "Configurações", no grupo "Serviços instalados", apague todos exceto o Português ( Brasil );
  7. Clique em "Ok" nesta janela e na janela aberta anteriormente.
Pronto! Seu Photoshop estará agora trabalhando perfeitamente com todos os caracteres da língua portuguesa presentes no seu teclado.

Saturday, September 13, 2008

Validadores de XML / XML Validators

[PT]
É útil contar com ferramentas na web para analisar se um documento XML é bem formado ou é válido.
Encontrei estas duas ferramentas, que têm se mostrado bastante eficientes.

ValidHome XML Validator
http://www.validome.org/xml/
Verifica se o documento está bem formado e é válido de acordo com o XML Schema ou DTD.

W3C XML Validator
http://www.w3schools.com/xml/xml_validator.asp
Validação de documento bem formado e válido, separadamente.

[EN]
It's useful when you can check if your XML document is well-formed or valid.
I've found these two good websites which can do this work for you.

ValidHome XML Validator
http://www.validome.org/xml/
This website checks if the document is well-formed and valid according your XML Schema or DTD.

W3C XML Validator

http://www.w3schools.com/xml/xml_validator.asp
It verifies the syntax and checks validation in two forms separately.