Socket
Um socket é um componente de software que ajuda programas de computador a se comunicarem por meio de uma rede. O termo "socket" lembra um soquete físico no qual você conecta um cabo de rede e pelo qual todos os dados passam. Aplicativos estabelecem sockets de rede de software para uma finalidade semelhante — todos os dados que um aplicativo envia e recebe por uma conexão de rede passam pelo socket.
Os sockets fornecem um método padrão para um programa estabelecer conexões de rede. Desenvolvedores de software podem usar uma API para criar um socket gerenciado pelo sistema operacional, sem precisar criar seu próprio método do zero. Quando o aplicativo precisa enviar dados pela rede, ele grava esses dados no socket como se estivesse gravando um arquivo em um disco. O sistema operacional detecta isso e encaminha automaticamente o pacote de dados pela rede até o destino.
Cada socket tem um endereço de socket exclusivo que combina um endereço IP e um número de porta. Esse endereço identifica tanto o computador específico no qual o socket está sendo executado quanto o aplicativo que o criou. Os aplicativos executados em um servidor criam sockets quando são iniciados e os mantêm em estado de escuta, enquanto os aplicativos em clientes podem abrir e fechar sockets conforme necessário. Enquanto um socket está aberto, o sistema operacional monitora os pacotes de dados recebidos e enviados por ele e verifica o endereço de socket de cada pacote para saber para onde encaminhá-lo.
Por exemplo, quando você visita um site com seu navegador da web, ele cria um socket que se conecta a outro em um servidor web remoto usando seu endereço IP e número de porta 80 para conexões (HTTP e 443 para conexões HTTPS). O navegador envia uma solicitação de uma página da web específica para esse socket, que o sistema operacional detecta e encaminha ao servidor web. Quando o servidor web envia a página solicitada de volta ao seu computador, o sistema operacional verifica o endereço de socket e sabe que deve enviá-la de volta ao navegador da web.
Teste seus conhecimentos