Introdução a Sockets

Iniciado por branco, 18 de Junho , 2008, 09:34:40 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

branco

Introdução a Sockets
Oque são?
Sockets são canais utilizados para comunicação entre computadores.

Como funcionam?
Quando você se conecta em um site por exemplo, acontecem três processos:

1 - o Socket se conecta no site
2 - o Socket faz o pedido doque deseja
3 - o Socket recebe o pedido

Na operação 1, acontece um processo de inicialização da comunicação, onde é garantido que tanto o lado de quem pede, como o de quem serve está apto a "trabalhar".
Por exemplo, para você se conectar em um site, é preciso que exista um servidor que esteja preparado para te servir.

Após o processo 1, onde tanto você, quanto o servidor já sabem que estão prontos para se comunicarem, acontece o processo 2.
No processo 2, você pode fazer uma requisição, ou seja, pode pedir por exemplo, uma página.
O servidor vai analisar o seu pedido, se a página existir, ele vai te enviar, caso contrário vai te dizer que a pagina não existe.

No processo 3, após ter pedido ao servidor por uma página, você tem que receber a resposta dele, correto?

O seu nevegador faz todo esse processo, e quando termina, o resultado é mostrado na tela, que é o site.
O site está com erro, quando não consegue processar oque você pediu.

O Servidor também utiliza Sockets para te servir.
Ele faz os seguintes processos:

1 - Inicia a escuta
2 - Recebe pedidos do Cliente
3 - Responde pedidos

Qual a importância deles?
Sem sockets a própria Internet não existiria.
Eles são utilizados na maioria das comunicações.

Quando alguém derruba um site por exemplo, ele está controlando centenas de milhares de máquinas através de Sockets.
Se você tem 100 máquinas ao seu dispor, pode pedir a elas, através de Sockets, para fazer qualquer tarefa.
Para isso, é necessário programar elas para receberem o seu pedido.
Você pode por exemplo, dividir as possibilidades de adivinhar uma senha, entre todas as suas máquinas.
Todas elas serão servidoras, porque vão te servir.
Você será o cliente, que vai fazer um pedido para elas.
Para elas te servirem, vão precisar saber quais possibilidades devem tentar adivinhar.
Então, você vai precisar dividir essas possibilidades e enviar pra cada uma delas.
Quando elas terminarem, devem te avisar através do canal que você criou com Sockets.

Para cada tipo de necessidade temos uma arquitetura diferente.
Analogicamente a essa distribuição das possibilidades entre as suas máquinas, temos o projeto SETI, que busca por sinais de rádio através de radiotelescópios, tentando encontrar sinais de vida extraterrestre.

Esse projeto utiliza milhares de computadores ao redor do mundo para processar os sinais de rádio encontrados.
Esses sinais são divididos e enviados a esses computadores, que são em sua maioria, de voluntários.
Quando o computador do voluntário está com capacidade de processamento sobrando, essa capacidade é utilizada para processar sinais enviados pelo SETI.
Depois do processamento, os resultados são enviados para o SETI.

A arquitetura utilizada tanto pelos hackers, quanto pelo SETI é a mesma.
A diferença é que o SETI, e muitos outros projetos que utilizam o BOINC, conseguem as suas máquinas com essas idéias 'interessantes', que persuadem milhares de voluntários a instalarem o software que sede o controle da própria máquina.
Enquanto isso os hackers tentam pegar as máquinas a 'força'.

Numa 'guerra' essa quantidade de máquinas pode ser de fundamental importância.

Como criá-los?
Para você utilizar Sockets, necessitará aprender uma linguagem de programação.
Você vai precisar de muito azar para encontrar uma que não te deixe usar Sockets.

Básicamente, o sistema operacional prove as funções, que desempenham determinada tarefa, para você utilizar.
Você pode por exemplo, chamar a função que conecta um Socket ao seu destino, depois chama a função que envia um pedido para o Socket onde você conectou, e depois chamar outra função para receber a resposta.
É claro que para você conectar o seu Socket em um destino, vai precisar primeiro, criá-lo.

O uso de Sockets é muito importante na informática, e principalmente na segurança.
Nos próximos tutoriais me aprofundarei mais na matéria, mostrando como utilizá-los em PHP e C++.
Até
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?