Socket

Um socket é conhecido como um tipo de software que atua como um endpoint que funciona como um link de comunicação de rede bidirecional entre o fim do servidor e o programa receptor do cliente.[1] Também é frequentemente referido como um endpoint em um canal de comunicação bidirecional. Estes soquetes são feitos e mobilizados em conjunto com um conjunto de pedidos de programação que são identificados como as chamadas de função, que é tecnicamente denominado como a interface de programação da aplicação (API). Um socket é capaz de simplificar o funcionamento de um programa porque os programadores agora só têm de se preocupar em manipular as funções do socket e isto permite-lhes confiar no sistema operativo para transportar correctamente as mensagens através da rede.[2]

Funcionalidade

Tipicamente, um socket obedece a um fluxo específico de eventos para que funcione. Para um modelo cliente-servidor orientado para a conexão, o soquete no processo do servidor aguarda a solicitação de um cliente. Para fazer isso, o servidor precisa primeiramente estabelecer um endereço que os clientes possam usar para encontrar e se conectar ao servidor. Quando uma conexão é estabelecida com sucesso, o servidor aguardará que os clientes solicitem um serviço. A troca de dados cliente-para-servidor ocorrerá se o cliente se conectar ao servidor através do socket. O servidor irá então responder ao pedido do cliente e enviar uma resposta.[3]

Na maioria das vezes, os URLs e suas conexões são usados para acessar a internet. Os programas exigirão uma simples ligação de comunicação entre o cliente do programa e o lado do servidor. Esta função está associada a um socket que ajudará a ligar o cliente do programa ao servidor. Se um cliente começar a estabelecer comunicação com o servidor, uma conexão confiável entre servidor e cliente será feita através do canal de comunicação TCP. Com este tipo de comunicação, tanto o cliente como o servidor podem ler ou escrever em sockets que estão ligados a um canal de comunicação específico.[^04]

Tipos de soquetes

Os seguintes são tipos diferentes de soquetes:

Soquetes Datagramas

Este é um tipo de soquete de rede que fornece um ponto sem conexão para enviar e receber pacotes de dados. Cada pacote que é enviado de um soquete de datagrama é encaminhado e entregue individualmente. Também pode ser usado para enviar e receber mensagens de difusão.

Soquetes crus

Esta tomada permite o acesso à operadora de transporte subjacente. Estes são capazes de fornecer aos usuários acesso aos protocolos de comunicação subjacentes que suportam abstrações de socket. Normalmente, estes são datagrama orientado, embora suas características exatas são dependentes da interface fornecida pelo protocolo. Estes não são destinados ao uso geral mas foram fornecidos principalmente para aqueles que estão interessados em desenvolver novos protocolos de comunicação ou uso para ganhar o acesso a algumas facilidades crípticas de protocolos que já existem.

Pacote seqüenciado Soquetes

Isto é semelhante a um soquete de fluxo, no entanto, com a exceção de que os limites dos registros são preservados. Esse tipo de soquete permite que os usuários manipulem os cabeçalhos do protocolo de pacote de sequência (SPP) ou do protocolo de datagrama da Internet (IDP) em um pacote ou mesmo em um grupo de pacotes. Este soquete também permite que o usuário receba cabeçalhos para pacotes recebidos.

Soquetes Stream

Este tipo de socket depende do TCP para transmitir dados. Se o fornecimento de dados for impossível, o remetente receberá um indicador de que a conexão resultou em um erro. Os registros de dados não têm limites.[4] Este soquete fornece um fluxo de dados orientado para a conexão, sequenciado e único, sem limites de registro, com mecanismos bem definidos para criar e/ou destruir conexões e detectar erros. Ele transmite dados confiáveis, em ordem e sem capacidades fora da banda. Presume-se que os processos se comunicam apenas entre soquetes do mesmo tipo, mas não há nenhuma restrição que impeça a comunicação entre esses soquetes de tipos diferentes.

Tomada activa

Esta é uma conexão de soquete com os soquetes ativos remotos através de uma conexão de dados aberta. Se esta conexão for fechada, os soquetes ativos em cada ponto também serão destruídos. Isto é usado pelos clientes que gostariam de iniciar pedidos de conexão para conectar. No entanto, este soquete ativo também pode ser transformado em soquete passivo através da ligação de um nome ao soquete com o bind-macro e indicando a disposição de aceitar conexões com o listen-macro.

Tomada passiva

Este socket não está ligado mas, em vez disso, espera por uma ligação de entrada que irá gerar um novo socket activo. Isto é usado pelos servidores para aceitar pedidos de conexão com o connect-macro. Esta tomada passiva não pode ser utilizada para iniciar pedidos de ligação. Os conceitos de soquetes ativos e passivos para soquetes de fluxo não se aplicam a outros tipos de soquetes, como o soquete datagrama.[5]

Portos e soquetes

Um soquete é uma interface para enviar e receber dados em uma porta específica, enquanto uma porta é um valor numérico atribuído a um processo específico ou a um aplicativo no dispositivo.[6] Mesmo que haja uma relação próxima entre um soquete e uma porta, o soquete não é realmente uma porta. Cada porta pode ter um único soquete passivo aguardando as conexões de entrada e vários soquetes ativos, cada um correspondente a uma conexão aberta na porta.[1:1] Hoje em dia, a tomada torna a comunicação mais fácil e eficiente. Permite o estabelecimento de uma conexão entre dois processos diferentes em máquinas iguais ou diferentes. Simplificando, é uma forma de falar com outro computador.

História da empresa

O uso do termo "Socket" começou em 1971 onde foi usado durante o desenvolvimento da ARPANET. A maior parte das tomadas aplicadas actualmente baseiam-se nas tomadas Berkerley, que foram desenvolvidas em 1983. Os soquetes usados para estabelecer uma conexão com a internet, no entanto, são modelados com base nos modelos Winsock que foram feitos em 1991. Os soquetes Berkerley também são conhecidos como soquetes BSD. Em 1989, a Berkerley lançou versões de seu sistema operacional e sua biblioteca de rede como livres de restrições de licenciamento. Outras implementações iniciais foram escritas para TOPS-20, MVS, VM e IBM-DOS.


  1. https://www.techopedia.com/definition/16208/socket ↩︎ ↩︎

  2. https://www.webopedia.com/TERM/S/socket.html ↩︎

  3. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzab6/howdosockets.htm ↩︎

  4. https://www.tutorialspoint.com/unix_sockets/what_is_socket.htm ↩︎

  5. https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.hala001/astream.htm ↩︎

  6. http://pediaa.com/difference-between-socket-and-port/ ↩︎