Está en la página 1de 7

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS

ESCUELA DE CIENCIAS DE LA COMPUTACIÓN

ASIGNATURA: Redes y Comunicación - Laboratorio

DOCENTE: LUCY ANGELA DELGADO BARRA

Cano Luque, Alvaro Sergio (20202231)

Arequipa – Perú
Sockets

1. Definición

Un socket, en el contexto de las tecnologías de la información y las comunicaciones, es

una abstracción de software que permite la comunicación entre dos dispositivos o

programas a través de una red, como Internet. Es una interfaz de programación que

facilita el intercambio de datos y la transmisión de información entre un cliente y un

servidor, o entre dos nodos de una red, independientemente de su sistema operativo o

arquitectura.

2. Estructura

La estructura de un socket puede variar dependiendo del lenguaje de programación o del

sistema operativo que se esté utilizando, pero en general, se compone de una serie de

atributos y métodos que permiten su configuración y manipulación para la

comunicación en red. Su estructura típica es la siguiente:

● Familia de direcciones (Address Family): Especifica el tipo de direcciones que el

socket utilizará para la comunicación. Las familias de direcciones más comunes

son IPv4 (AF_INET) e IPv6 (AF_INET6). También pueden existir otras familias de

direcciones para protocolos más especializados.

● Tipo de socket (Socket Type): Define el tipo de comunicación que se llevará a

cabo. Los dos tipos principales son:

● SOCK_STREAM: Representa un socket de flujo (stream socket) basado en el

protocolo TCP. Proporciona una comunicación confiable, ordenada y sin pérdidas

de datos.

● SOCK_DGRAM: Representa un socket de datagrama (datagram socket) basado


en el protocolo UDP. Ofrece una comunicación no confiable y sin garantías de

entrega, pero con menor latencia.

● Protocolo: Indica el protocolo de transporte que se utilizará. Para los sockets de

flujo, se suele utilizar IPPROTO_TCP, y para los sockets de datagrama, se utiliza

IPPROTO_UDP. En algunos casos, este parámetro puede omitirse, ya que el

sistema operativo seleccionará automáticamente el protocolo adecuado en

función del tipo de socket y la familia de direcciones.

● Dirección IP y puerto: Para establecer una conexión, se debe especificar la

dirección IP y el puerto al que el socket debe enlazarse o conectarse. Para el

servidor, esto implica que el socket escuchará en una dirección IP específica y un

puerto determinado. Para el cliente, se utilizará la dirección IP y el puerto del

servidor al que desea conectarse.

Una vez que se ha creado un socket, se pueden utilizar diversos métodos para

interactuar con él y llevar a cabo la comunicación.

● bind(): Asocia una dirección IP y un puerto al socket, lo que permite que otros

dispositivos se conecten a él (en el caso del servidor) o que el cliente se enlace a

una dirección y puerto local específico antes de enviar datos.

● listen(): Solo se aplica a los sockets de flujo (TCP). Coloca el socket en modo de

escucha para aceptar conexiones entrantes de los clientes.

● accept(): Solo se aplica a los sockets de flujo (TCP). Acepta una conexión

entrante de un cliente, creando un nuevo socket que representa la conexión

establecida.

● connect(): Solo se aplica a los sockets de flujo (TCP). Permite al cliente

conectarse a un servidor especificando la dirección IP y el puerto del servidor.


● send() y recv(): Estos métodos se utilizan para enviar y recibir datos a través del

socket. Para sockets de flujo, se utilizan para el envío y recepción de flujo

continuo de datos. Para sockets de datagrama, se utilizan para enviar y recibir

paquetes de datos individuales.

● close(): Cierra el socket y finaliza la conexión o liberación de recursos asociados.

La estructura y los métodos de los sockets pueden variar según el lenguaje de

programación utilizado. Por ejemplo, en lenguajes como C o Python, se utilizan llamadas

al sistema o funciones específicas para crear y manipular sockets, mientras que en

lenguajes de más alto nivel, como Java o C#, se proporcionan clases y métodos más

abstractos para trabajar con sockets.

3. Funcionamiento

El funcionamiento de los sockets se basa en el modelo cliente-servidor, donde un

programa actúa como el servidor que escucha las solicitudes de conexión de los

clientes, y otros programas actúan como clientes que desean establecer una

comunicación con el servidor. A continuación,los pasos sobre el funcionamiento de un

socket.

● Creación del socket: Tanto el servidor como el cliente deben crear su propio

socket antes de iniciar la comunicación. El socket se crea utilizando una

combinación de la familia de direcciones, el tipo de socket y el protocolo

adecuado para el tipo de comunicación requerida.

● Enlace y escucha del socket (solo para el servidor): El servidor enlaza el socket a

una dirección IP y un puerto específicos utilizando la función bind(). Después,

coloca el socket en modo de escucha mediante la función listen(). El servidor

ahora está preparado para recibir solicitudes de conexión de los clientes.


● Solicitud de conexión (solo para el cliente): El cliente intenta establecer una

conexión con el servidor utilizando la función connect(). Proporciona la dirección

IP y el puerto del servidor al que desea conectarse.

● Aceptación de conexión (solo para el servidor): Cuando un cliente intenta

conectarse, el servidor acepta la solicitud de conexión utilizando la función

accept(). Esto crea un nuevo socket específico para la comunicación con ese

cliente, mientras el socket original del servidor sigue escuchando para nuevas

conexiones.

● Establecimiento de conexión: Si el servidor acepta la solicitud de conexión del

cliente o si la conexión del cliente con el servidor se establece correctamente, se

establece una conexión bidireccional entre ambos extremos. A partir de este

punto, los datos pueden fluir entre el cliente y el servidor.

● Transferencia de datos: Una vez que se ha establecido la conexión, los datos

pueden ser enviados y recibidos entre el cliente y el servidor utilizando las

funciones send() y recv() (para sockets de flujo) o enviando y recibiendo

paquetes de datos mediante sendto() y recvfrom() (para sockets de datagrama).

Los datos se transmiten a través de la red, permitiendo la comunicación entre los

dispositivos.

● Cierre de conexión: Cuando la comunicación ha terminado o el cliente/servidor

ya no requiere más la conexión, se cierra el socket utilizando la función close().

Esto libera los recursos asociados al socket y finaliza la conexión.

4. Niveles

Los sockets se encuentran en el nivel de transporte del modelo TCP/IP. El modelo

TCP/IP, también conocido como el modelo de referencia TCP/IP, es una estructura de

protocolos utilizada en redes de computadoras para facilitar la comunicación entre


dispositivos y aplicaciones a través de Internet y otras redes. El modelo se divide en

cuatro capas, cada una con un propósito específico:Capa de Aplicación: Esta es la capa

superior del modelo TCP/IP y es donde se encuentran las aplicaciones y servicios que

interactúan directamente con los usuarios. Aquí es donde ocurre la interacción más

cercana con el usuario, y es donde los protocolos específicos de aplicación, como HTTP

(para la web), SMTP (para el correo electrónico) y FTP (para la transferencia de

archivos), se implementan para proporcionar servicios de red.

● Capa de Transporte: Esta capa es donde se encuentran los protocolos de

transporte, como TCP (Transmission Control Protocol) y UDP (User Datagram

Protocol). Es el nivel donde los sockets operan. TCP proporciona una

comunicación confiable y orientada a la conexión, garantizando que los datos se

entreguen correctamente y en orden. UDP, por otro lado, ofrece una

comunicación no confiable y sin conexión, adecuada para aplicaciones donde la

velocidad y la latencia son más importantes que la fiabilidad.

● Capa de Internet: En esta capa, se encuentran los protocolos de enrutamiento,

como IP (Internet Protocol), que es responsable de encaminar los paquetes de

datos desde la fuente hasta el destino a través de la red. Esta capa también se

encarga de dividir y reensamblar los datos en paquetes que se envían entre los

dispositivos.

● Capa de Acceso a la Red: Es la capa más baja del modelo TCP/IP y abarca los

protocolos y tecnologías específicas de la red física utilizada para la transmisión

de datos, como Ethernet, Wi-Fi, DSL o cable.

En el contexto de los sockets, los programadores trabajan principalmente en la capa de

transporte. Utilizan los sockets para establecer conexiones y transmitir datos a través de
la red, aprovechando los protocolos TCP o UDP para garantizar una comunicación

efectiva entre las aplicaciones cliente y servidor.

5. Bibliografía

- Introduction to Sockets Programming in C using TCP/IP (2011)

https://www.csd.uoc.gr/~hy556/material/tutorials/cs556-3rd-tutorial.pdf

- Sockets and Connections (2012)http://mtovar.cs.buap.mx/doc/PCP/Sockets.pdf

- http://sopa.dis.ulpgc.es/ii-dso/leclinux/ipc/sockets/sockets.pdf

- COMUNICACIÓN ENTRE PROCESOS SOCKETS Starlinux.net (2014)

https://www.ibm.com/docs/en/ssw_ibm_i_72/rzab6/rzab6pdf.pdf

También podría gustarte