Um soquete é uma das tecnologias mais fundamentais da programação de redes de computadores. Os soquetes permitem que aplicativos de software de rede se comuniquem usando mecanismos padrão incorporados em hardware e sistemas operacionais de rede.
Embora possa parecer apenas mais uma característica do desenvolvimento de software da Internet, a tecnologia de soquete existia muito antes da Web. E muitos dos aplicativos de software de rede mais populares atualmente contam com soquetes.
O que os soquetes podem fazer pela sua rede
Um soquete representa uma única conexão entre exatamente duas partes de software (a chamada ponto a ponto conexão). Mais de dois softwares podem se comunicar com clientes / servidores ou sistemas distribuídos usando vários soquetes. Por exemplo, muitos navegadores da Web podem se comunicar simultaneamente com um único servidor Web por meio de um grupo de soquetes feitos 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 ( interprocesso ) em um único computador. Soquetes são bidirecional , o que significa que cada lado da conexão é capaz de enviar e receber dados. Às vezes, o único aplicativo que inicia a comunicação é denominado "cliente" e o outro aplicativo, o "servidor", mas essa terminologia leva a confusão na rede ponto a ponto e geralmente deve ser evitada.
APIs de soquete e bibliotecas
Várias bibliotecas que implementam interfaces de programação de aplicativos (APIs) padrão existem na Internet. O primeiro pacote mainstream - o Berkeley Socket Library ainda é amplamente usado em sistemas UNIX. Outra API muito comum é a biblioteca Windows Sockets (WinSock) para sistemas operacionais da Microsoft. Em relação a outras tecnologias de computador, as APIs de soquete são bastante maduras: o WinSock está em uso desde 1993 e os soquetes de Berkeley desde 1982.
As APIs de soquete são relativamente pequenas e simples. Muitas das funções são semelhantes àquelas usadas em rotinas de entrada / saída de arquivos, como ler(), escrever()e perto(). As chamadas de funções reais para usar dependem da linguagem de programação e da biblioteca de soquetes escolhida.
Tipos de interface de soquete
Interfaces de soquete podem ser divididas em três categorias:
- Corrente sockets, o tipo mais comum, requer que as duas partes de comunicação estabeleçam primeiro uma conexão de soquete, após a qual qualquer dado transmitido através dessa conexão será garantido para chegar na mesma ordem em que foi enviado - o chamado modelo de programação orientado à conexão .
- Datagrama soquetes oferecem semântica "sem conexão". Com os datagramas, as conexões são implícitas e não explícitas, como acontece com os fluxos. Qualquer das partes simplesmente envia datagramas conforme necessário e espera que o outro responda; mensagens podem ser perdidas na transmissão ou recebidas fora de ordem, mas é de responsabilidade do aplicativo e não dos sockets lidar com esses problemas. A implementação de soquetes de datagrama pode dar a algumas aplicações um aumento de desempenho e flexibilidade adicional em comparação ao uso de soquetes de fluxo, justificando seu uso em algumas situações.
- O terceiro tipo de soquete - o cru soquete - ignora o suporte interno da biblioteca para protocolos padrão, como TCP e UDP. Soquetes brutos são usados para o desenvolvimento de protocolo de baixo nível personalizado.
Suporte de soquete em protocolos de rede
Soquetes de rede modernos são normalmente usados em conjunto com os protocolos da Internet - IP, TCP e UDP. As bibliotecas que implementam soquetes para o Protocolo da Internet usam TCP para fluxos, UDP para datagramas e o próprio IP para soquetes brutos.
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 pelo nome ( por exemplo. , "thiscomputer.wireless.about.com") em vez de por endereço ( por exemplo. , 208.185.127.40). Os soquetes de fluxo e datagrama também usam números de porta IP para distinguir vários aplicativos uns dos outros. Por exemplo, navegadores da Web na Internet sabem usar a porta 80 como o padrão para comunicações de soquete com servidores da Web.