Um soquete é uma das tecnologias mais fundamentais de programação de redes de computadores. Os soquetes permitem que os aplicativos de software de rede se comuniquem usando mecanismos padrão integrados ao hardware e aos sistemas operacionais da rede.
Embora soe como outro recurso de desenvolvimento de software para Internet, a tecnologia de soquete já existia antes da web. Muitos aplicativos de software de rede populares dependem de soquetes.
O que a tecnologia de soquete pode fazer pela sua rede
Um soquete representa uma única conexão entre exatamente duas peças de software (uma conexão ponto a ponto). Mais de duas peças de software podem se comunicar com cliente / servidor ou sistemas distribuídos usando vários sockets. Por exemplo, muitos navegadores da web podem se comunicar simultaneamente com um único servidor da web usando um grupo de sockets criados no servidor.
O software baseado em soquete geralmente é executado em dois computadores separados na rede, mas os soquetes também podem ser usados para se comunicar localmente (interprocessos) em um único computador. Os soquetes são bidirecionais, o que significa que qualquer um dos lados da conexão é capaz de enviar e receber dados.
Às vezes, o aplicativo que inicia a comunicação é denominado cliente e o outro aplicativo é o servidor, mas essa terminologia leva à confusão na rede ponto a ponto e geralmente deve ser evitada.
Programação de soquetes: Socket APIs e bibliotecas
Existem várias bibliotecas que implementam interfaces de programação de aplicativos (APIs) padrão na Internet. O primeiro pacote principal, a Berkeley Socket Library, é amplamente usado em sistemas UNIX.
Outra API comum é a biblioteca Windows Sockets (WinSock) para sistemas operacionais Microsoft. Em relação a outras tecnologias de computador, as APIs de soquete estão maduras. WinSock está em uso desde 1993 e os soquetes Berkeley desde 1982.
As APIs de soquete são relativamente pequenas e simples. Muitas das funções são semelhantes às usadas em rotinas de entrada / saída de arquivo, como <tt> read () </tt>, <tt> write () </tt> e <tt> close () </tt> . As chamadas de função reais a serem usadas dependem da linguagem de programação e da biblioteca de soquetes escolhidas.
Tipos de interface de soquete
As interfaces de soquete podem ser divididas em três categorias:
- Soquetes de fluxo: este é o tipo mais comum. As duas partes que se comunicam primeiro estabelecem uma conexão de soquete, após a qual todos os dados passados por essa conexão têm a garantia de chegar na mesma ordem em que foram enviados (usando um modelo de programação orientado à conexão).
- Soquetes de datagrama: oferecem semântica sem conexão. Com os datagramas, as conexões são implícitas, em vez de explícitas, como acontece com os fluxos. Qualquer uma das partes envia datagramas conforme necessário e espera a resposta da outra. As mensagens podem ser perdidas na transmissão ou recebidas fora de ordem; o aplicativo lida com esses problemas, não os soquetes. Implementar soquetes de datagrama pode dar a alguns aplicativos um aumento de desempenho e flexibilidade adicional em comparação com o uso de soquetes de fluxo.
- Soquetes brutos: ignora o suporte embutido da biblioteca para protocolos padrão, como TCP e UDP. Soquetes brutos são usados para desenvolvimento de protocolo de baixo nível personalizado.
Programação de soquetes e suporte de soquete em protocolos de rede
Os soquetes de rede modernos são normalmente usados em conjunto com os protocolos de Internet IP, TCP e UDP. Bibliotecas que implementam sockets para protocolo de internet usam TCP para streams, UDP para datagramas e IP para sockets raw.
Para se comunicar pela Internet, as bibliotecas de soquete IP usam o endereço IP para identificar computadores específicos. Muitas partes da Internet funcionam com serviços de nomenclatura, para que os usuários e programadores de soquete possam trabalhar com computadores por nome (por exemplo, thiscomputer.wireless.lifewire.com) em vez de por endereço (por exemplo, 208.185.127.40).
Os soquetes de fluxo e de datagrama também usam números de porta IP para distinguir vários aplicativos uns dos outros. Por exemplo, os navegadores da Internet sabem usar a porta 80 como padrão para comunicações de soquete com servidores da web.