O que é um soquete da Internet?
Um soquete da Internet é um termo usado para identificar um ponto de conexão que qualquer programa de software de computador pode usar para transmitir dados pela Internet. Eles não são uma construção física, como uma tomada elétrica, mas são um conceito de software de computador. Com esse soquete, qualquer dado necessário pode ir e voltar de um programa em execução em um computador para um programa em outro; em muitos casos, isso é de e para um cliente e servidor. O termo também é usado para se referir a uma interface de programação de aplicativos (API) que os programadores de computador podem usar para criar esses aplicativos sensíveis à rede, capazes de enviar e receber dados pela Internet.
Os soquetes funcionam nas camadas superiores da pilha do protocolo Internet (IP), conhecida como camada de transporte, onde os dados são transmitidos de um aplicativo para a rede através do sistema operacional. Quando um aplicativo no computador deseja enviar e receber dados de uma conexão de rede, solicita que o sistema operacional abra um soquete de Internet. O soquete é configurado com informações do protocolo, como UDP (protocolo de datagrama do usuário) ou TCP (controle de transmissão), além dos endereços de envio e recebimento dos computadores e do número da porta IP da conexão. Também é possível criar um soquete da Internet que ignora o sistema operacional e envia os pacotes brutos sem primeiro permitir que o sistema operacional do computador lide com as informações adicionais do soquete.
Como normalmente usado em um servidor da Internet, o software do servidor é iniciado e abre um soquete de escuta. À medida que o servidor recebe uma solicitação de dados, ele cria um soquete exclusivo para o cliente solicitante, que é usado para transmitir quaisquer dados solicitados. Esses tipos de conexões também são chamados de sessão, pois o soquete é fechado pelo servidor após a conclusão do cliente. Dessa maneira, o servidor pode criar qualquer número de soquetes simultâneos com outros clientes, cada um com seu próprio identificador exclusivo, e fornecer dados exclusivos para cada cliente.
Como tal, existem três tipos gerais de soquete da Internet. Um desses tipos é o soquete de datagrama. Trata-se de uma conexão rápida de soquete que não requer comunicação adicional para estabelecer uma conexão dedicada antes de enviar pacotes de dados. Por esse motivo, eles geralmente são chamados de soquetes sem conexão e usam o UDP como seu protocolo de transporte. Eles são uma espécie de método de acionar e esquecer, pois não há verificação de sequência de pacotes ou correção de erros.
Os soquetes orientados à conexão, no entanto, chamados de soquete de fluxo, passam por algumas etapas adicionais para estabelecer o link de comunicação entre o cliente e o servidor. Eles usam TCP, ou outro protocolo conhecido como SCTP (Stream Control Transmission Protocol), para transporte. Esse tipo de soquete da Internet é mais confiável e possui meios para lidar com erros como pacotes ausentes.
Um outro tipo exclusivo de soquete da Internet é usado principalmente para o roteamento de rede de computadores. Esse tipo de soquete ignora a camada de transporte da pilha IP, passando o pacote da rede diretamente para o aplicativo com as informações do soquete ainda intactas. Esses soquetes brutos permitem uma entrega muito mais rápida de pacotes ao aplicativo, uma vez que o sistema operacional do computador não consegue lidar com os pacotes primeiro. O protocolo ICMP (Internet Control Message Protocol) usa esses soquetes brutos quando um computador simplesmente deseja "executar ping" em outro.