Sockets - O Que É e Para Que Serve
Mas como essas informações saem de um processo para chegar até o outro, ao longo da rede?
Isso é feito através de software, de uma interface muito importante e usada na internet, os sockets.
Como existem diversos tipos de processos, rodando sob os mais diversos tipos de sistemas operacionais e sistemas finais, a comunicação entre os processos precisa ser padronizada.
Ou seja, quem envia e quem recebe informações, deve fazer de uma maneira mais padrão possível, e quem cuida disso é o socket, que é uma espécie de 'intermediador' entre o processo e a rede de transporte.
Assim, os processos clientes e processos servidores apenas tem que se preocupar em enviar e receber informações para e do sockets, e este vai cuidar de todo resto. É uma interface, ela faz a 'conversa' entre os processos e o protocolo da camada de transporte.
Transporte Entre as Camadas de Aplicação
Ok, sabemos que o socket é uma interface entre o processo e o transporte de dados pela rede.Mas, com é feito esse transporte?
Ao criar uma aplicação, você pode escolher as características de transporte, que dependem de:
- Confiança no Tráfego
- Segurança
- Velocidade
- Atraso
Você precisa ter certeza e garantia que os dados vão chegar no outro processo?
Sua aplicação deve ter nenhum ou o mínimo possível de perda de pacotes? (como no caso de e-mails e transações financeiras). Isso vai exigir protocolos mais rígidos e softwares mais elaborados, acarretando mais lentidão.
Se for uma aplicação para um banco ou loja online, por exemplo, além de ter certeza da chegada dos pacotes, você precisa garantir a segurança deles, que não vão ser espionados ou clonados.
Talvez você queira apenas que o transporte seja rápido, mesmo que perca alguns pacotes (como um serviço de streaming de vídeo, onde não há problema perder alguns pacotes) ? Então você pode 'afrouxar' a segurança dos dados, do tanto que receba uma boa vazão de pacotes, tendo uma ótima velocidade de troca de dados.
E se for um jogo online em tempo real? Aí precisa dos dois! Troca rápida de dados e com o máximo de confiança possível. Não pode ter atraso, senão foca simplesmente impossível de jogar.
Que protocolo usar? Vai depender da aplicação que você vai criar, você vai ter que balançar