Skip to content

4 Concepto de Socket

Concepto de Socket

Las aplicaciones que hacen uso de Internet utilizan habitualmente la conocida como arquitectura, que descompone el problema en dos componentes distintos: por un lado el servidor, que ofrece (sirve) el servicio y, por otro lado, el cliente, que interactúa con el usuario y hace uso del servicio proporcionado por el servidor. El correo electrónico o la World Wide Web son ejemplos de este patrón de diseño.

Para poder implementar esta arquitectura cliente/servidor en nuestras aplicaciones es necesario que exista alguna herramienta para establecer a través de la red la conexión necesaria entre cliente y servidor, y en concreto los puntos extremos de dicha conexión.

Como sabemos, la comunicaciones en red se realizan a través de una pila de protocolos que trabajan de forma coordinada, de manera que los protocolos de una capa hacen uso de los protocolos de la capa inferior. La capa de transporte define dos protocolos muy importantes: el protocolo TCP, orientado a conexión, y el protocolo UDP, no orientado a conexión.

Pues bien, los protocolos TCP y UDP utilizan el concepto de socket para definir y proporcionar los conectores o puntos extremos de la comunicación entre aplicaciones o procesos. Un conector vendrá determinado por las siguientes propiedades:

  • La dirección IP de la máquina en la que la aplicación está ejecutándose.
  • El puerto local a través del cual se comunica la aplicación. Un puerto es un punto de destino que identifica a qué aplicación o proceso deben dirigirse los datos recibidos

Socket

Conector extremo de conexión entre aplicaciones o procesos a través de la red

Los protocolos TCP y UDP son los encargados de transmitir la información necesaria desde el conector de la aplicación emisora al conector de la aplicación receptora, de manera que los mensajes enviados a dicha IP y puerto se entreguen al proceso receptor.

Si queremos utilizar los sockets en una aplicación cliente/servidor debemos tener en cuenta que el cliente debe conocer de antemano la IP del servidor y el puerto en el que espera recibir la solicitud de conexión, para que ésta pueda llevarse a cabo.

Podemos clasificar los sockets en dos tipos distintos, atendiendo al protocolo de la capa de transporte que utilicen:

  • Sockets orientados a conexión o stream sockets, que utilizan el protocolo TCP para la comunicación.
  • Sockets no orientados a conexión o datagram sockets, que usan el protocolo UDP para la comunicación.