4. Puertos y Sockets

4.2. Socket

El socket es una de varias interfaces de programación de aplicaciones para protocolos de comunicación 

Diseñado para ser una interfaz de programación de comunicación genérica.

Las API de socket se introdujeron por primera vez en 4.2 Berkeley Software Distribution (BSD).
Aunque no se ha estandarizado, la API de socket de Berkeley se ha convertido en un Abstracción estándar de la industria facto para la implementación de socket TCP/IP de red.

  • Un socket es un tipo especial de identificador de archivo, que utiliza un proceso para solicitar servicios de red del sistema operativo.
  • Una dirección de socket son tres datos : <protocolo, dirección local, puerto local>
    Por ejemplo, en la suite TCP/IP (versión 4): <tcp, 192.168.14.234, 8080>
  • Permite una comunicación o intercambio, es el vínculo de comunicación entre dos procesos. Locales o Distantes.
  • Una asociación es la tupla de 5 que especifica completamente los dos procesos que
    comprenden una conexión: <protocolo, dirección local, puerto local, dirección extranjera, puerto extranjero>
    • En la suite TCP/IP (versión 4), la siguiente podría ser una asociación válida:
      <tcp, 192.168.14.234, 1500, 192.168.44, 22>.
  • Una media asociación es una de las siguientes, cada una de las cuales especifica la mitad de una
    conexión:
    <protocolo, dirección-local, proceso-local>
    O:
    <protocolo, dirección extranjera, proceso extranjero>.
  • La media asociación también se denomina socket o dirección de transporte. Eso es un socket es un punto final para la comunicación que se puede nombrar y direccionar en una red.
Dos procesos se comunican a través de sockets TCP. El modelo de enchufe o sockets proporciona
un proceso con una conexión de flujo de bytes de dúplex completo a otro proceso.
La aplicación no necesita preocuparse por la gestión de este flujo; estas son proporcionadas por TCP .
TCP utiliza el mismo principio de puerto que UDP para proporcionar multiplexación. como UDP,
TCP utiliza puertos conocidos y efímeros.
Cada lado de una conexión TCP tiene un socket que se puede identificar por el triple <TCP, dirección IP, número de puerto>.
Si dos procesos se comunican a través de TCP, tienen una conexión lógica ("circuito virtual") que es identificable únicamente por los dos sockets involucrados, es decir, por la combinación
TCP, dirección IP local, puerto local, dirección IP remota, puerto remoto>.

Los procesos en un  Servidor pueden gestionar múltiples conversaciones a través de un único puerto, es el caso por ejemplo de un Servidor Web, TODOS los procesos son desde y al puerto 80 o 443 por ejemplo.