Baseado na minha resposta sobre Qual é a diferença entre socket e porta?

Antes de mais nada, vamos analisar as palavras?

  • socket

    Em Português, soquete. A palavra originou do inglês socket mesmo, que por sua vez veio do do francês antigo soc… no final, a origem significa “nariz de porco”. Em questões de conexões elétricas, é a parte fêmea da conexão. [1], [2], [3]

    Soquete em formato de soc/nariz de porco

  • porta

    Ou porto em Português de Portugal. A palavra nesse uso veio da especificação em inglês, onde estava escrito port. Pelo que está descrito na origem da palavra no Wiktionary, vem do francês antigo porte/latim porta, no sentido de portão, passagem por onde coisas podem entrar. Também usado em alguns lugares como a parte fêmea de uma conexão (porta serial/ethernet, por exemplo). [1] (etimologia 2), [2]

    portas de computador

Bem, ambos significam a parte fêmea de uma conexão, então isso acaba que não ajudou 100% a diferenciá-los.

Bem, então vamos para uma metáfora com tomadas?

Imagine que você tem a seguinte tomada suíça:

tomada de 3 entradas, superior, esquerda inferior e direita inferior, padrão suíço

Você tem 3 portas de entrada:

  1. a superior
  2. a esquerda inferior
  3. a direita inferior

Se você tentar estabelecer uma conexão com uma dessas portas, você precisa de um cabo de plugue adequado para entrar na porta. Se o soquete estiver ligado na rede elétrica, então haverá uma corrente elétrica (haverá comunicação) entre o servidor de energia (sua casa, que é na Suíça para ter uma tomada dessas) e quem está consumindo a energia, o aparelho cliente.

Mas e se não tiver ligação no soquete? Então a porta é vacuosa. Você pode ligar o que for nela que não haverá comunicação.

A porta, então, é o identificador de onde quero me encaixar. O plugue é o meu padrão de conexão, definida no nível 4 (transporte) no modelo TCP/IP de redes. O socket seria a ligação dessa porta com a aplicação, que pode ser um servidor web, FTP, SSH ou qualquer outra aplicação (a aplicação aqui seria a rede elétrica).

Berkley sockets

Uma coisa que vale a pena mencionar é sobre socket Unix, e é de bom tom para tal falar dos sockets Berkley.

Esses tais sockets Berkley, na verdade, é uma API para se ter acesso a um ponto de comunicação. Ela prevê dois tipos de sockets comumente usados:

  • socket de rede
  • socket Unix

Ambos são pontos de conexão para se realizar IPC e são usados da mesma maneira: lê-se e escreve-se dados. A diferença entre os dois sockets é com quem a comunicação será feita. Sockets Unix são para conexões dentro do mesmo computador (como pipes), já sockets de rede são para computadores em rede.