Diferencia entre revisiones de «Socket»

(Página creada con '{{Definición |nombre = Sockets |imagen = Sockets.png |concepto = Un socket es un método para la comunicación entre un programa del cliente y un programa del servidor en una r...')
 
m (Texto reemplazado: «<div align="justify">» por «»)
 
(No se muestran 12 ediciones intermedias de 6 usuarios)
Línea 1: Línea 1:
 
{{Definición
 
{{Definición
 
|nombre = Sockets
 
|nombre = Sockets
|imagen = Sockets.png
+
|imagen = Socket2.jpg
 
|concepto = Un socket es un método para la comunicación entre un programa del cliente y un programa del servidor en una red.
 
|concepto = Un socket es un método para la comunicación entre un programa del cliente y un programa del servidor en una red.
 
}}  
 
}}  
<div align="justify">
 
Un '''socket''' (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red, se define, por tanto, como el punto final en una conexión.
 
  
Este mecanismo surge a principios de los 80 con el sistema [[Unix]] de Berkeley, para proporcionar un medio de comunicación entre procesos y presentan la misma funcionalidad que tiene la comunicación por correo o por teléfono (de un buzón se extraen mensajes completos, mientras que el teléfono permite el envío de flujos de información que no tienen una estructura claramente definida), es decir permiten que un proceso hable (emita o reciba información) con otro incluso estando estos en distintas máquinas. Esta característica de ínterconectividad hace que el concepto de socket sea de gran utilidad.  
+
Un '''socket''' (enchufe), es un método para la comunicación entre un programa del cliente y un programa del [[Servidor|servidor]] en una [[Red|red]], se define, por tanto, como el punto final en una conexión.
 +
 
 +
Este mecanismo surge a principios de los [[1980|80]] con el sistema [[Unix]] de Berkeley, para proporcionar un medio de [[Comunicación institucional|comunicación]] entre procesos y presentan la misma funcionalidad que tiene la comunicación por [[Correo electrónico|correo]] o por teléfono (de un buzón se extraen mensajes completos, mientras que el teléfono permite el envío de flujos de información que no tienen una estructura claramente definida), es decir permiten que un proceso hable (emita o reciba información) con otro incluso estando estos en distintas máquinas. Esta característica de ínterconectividad hace que el concepto de socket sea de gran utilidad.  
  
 
== Principio de funcionamiento  ==
 
== Principio de funcionamiento  ==
  
Un socket queda definido por un par de [[IP|direcciones IP]] local y remota, un protocolo de transporte y un par de números de puerto local y remoto. Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:  
+
Un socket queda definido por un par de [[Protocolo de Internet|direcciones IP]] local y remota, un protocolo de transporte y un par de números de puerto local y remoto. Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:  
  
 
*Que un programa sea capaz de localizar al otro.  
 
*Que un programa sea capaz de localizar al otro.  
Línea 19: Línea 19:
  
 
*Un protocolo de comunicaciones, que permite el intercambio de octetos.  
 
*Un protocolo de comunicaciones, que permite el intercambio de octetos.  
*Un par de direcciones del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica la computadora de origen y la remota.  
+
*Un par de direcciones del [[Protocolos de red|Protocolo de Red]] (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica la computadora de origen y la remota.  
 
*Un par de números de puerto, que identifica a un programa dentro de cada computadora.
 
*Un par de números de puerto, que identifica a un programa dentro de cada computadora.
  
Línea 28: Línea 28:
 
Cuando un cliente conecta con el servidor se crea un nuevo socket, de esta forma, el servidor puede seguir esperando conexiones en el socket principal y comunicarse con el cliente conectado, de igual manera se establece un socket en el cliente en un puerto local.  
 
Cuando un cliente conecta con el servidor se crea un nuevo socket, de esta forma, el servidor puede seguir esperando conexiones en el socket principal y comunicarse con el cliente conectado, de igual manera se establece un socket en el cliente en un puerto local.  
  
Una aplicación servidor normalmente escucha por un puerto específico esperando una petición de conexión de un cliente, una vez que se recibe, el cliente y el servidor se conectan de forma que les sea posible comunicarse entre ambos. Durante este proceso, el cliente es asignado a un número de puerto, mediante el cual envía peticiones al servidor y recibe de este las respuestas correspondientes.  
+
Una [[Servidor de Aplicaciones|aplicación servidor]] normalmente escucha por un puerto específico esperando una petición de conexión de un cliente, una vez que se recibe, el cliente y el servidor se conectan de forma que les sea posible comunicarse entre ambos. Durante este proceso, el cliente es asignado a un número de puerto, mediante el cual envía peticiones al servidor y recibe de este las respuestas correspondientes.  
  
Similarmente, el servidor obtiene un nuevo número de puerto local que le servirá para poder continuar escuchando cada petición de conexión del puerto original. De igual forma une un socket a este puerto local.  
+
Similarmente, el servidor obtiene un nuevo número de puerto local que le servirá para poder continuar escuchando cada petición de conexión del puerto original. De igual forma une un socket a este puerto local.
  
 
== Tipos de socket  ==
 
== Tipos de socket  ==
Línea 47: Línea 47:
 
Las propiedades de un socket dependen de las características del protocolo en el que se implementan. Generalmente la comunicación con sockets se realiza mediante un protocolo de la familia TCP/IP (Protocolo de Control de Transmisión/Protocolo de Internet). Los dos más utilizados son: TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagrama de Usuario)  
 
Las propiedades de un socket dependen de las características del protocolo en el que se implementan. Generalmente la comunicación con sockets se realiza mediante un protocolo de la familia TCP/IP (Protocolo de Control de Transmisión/Protocolo de Internet). Los dos más utilizados son: TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagrama de Usuario)  
  
Cuando se implementan con el protocolo TCP, los sockets tienen las siguientes propiedades: • Orientado a conexión.
+
Cuando se implementan con el protocolo TCP, los sockets tienen las siguientes propiedades:  
  
 +
*Orientado a conexión.
 
*Se garantiza la transmisión de todos los octetos sin errores ni omisiones.  
 
*Se garantiza la transmisión de todos los octetos sin errores ni omisiones.  
 
*Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha transmitido. Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información.
 
*Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha transmitido. Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información.
  
El protocolo UDP es un protocolo no orientado a la conexión. Sólo se garantiza que si un mensaje llega, llegue bien. En ningún caso se garantiza que llegue o que lleguen todos los mensajes en el mismo orden que se mandaron. Esto lo hace adecuado para el envío de mensajes frecuentes pero no demasiado importantes, como por ejemplo, mensajes para los refrescos (actualizaciones) de un gráfico..  
+
El protocolo UDP es un protocolo no orientado a la conexión. Sólo se garantiza que si un mensaje llega, llegue bien. En ningún caso se garantiza que llegue o que lleguen todos los mensajes en el mismo orden que se mandaron. Esto lo hace adecuado para el envío de mensajes frecuentes pero no demasiado importantes, como por ejemplo, mensajes para los refrescos (actualizaciones) de un gráfico..
  
 
== Variantes  ==
 
== Variantes  ==
Línea 58: Línea 59:
 
Existe una variante de los sockets denominada Unix domain sockets, o bien, Interprocess communication sockets (IPC sockets). Éstos se encuentran especificados en la norma POSIX y tienen como propósito la intercomunicación entre programas dentro de la misma computadora, facilitando así la optimización de recursos para este caso en concreto.  
 
Existe una variante de los sockets denominada Unix domain sockets, o bien, Interprocess communication sockets (IPC sockets). Éstos se encuentran especificados en la norma POSIX y tienen como propósito la intercomunicación entre programas dentro de la misma computadora, facilitando así la optimización de recursos para este caso en concreto.  
  
== Bibliografía ==
+
== Fuente ==
 
+
*Lenguajes y Ciencias de la Computación. Disponible en http://www.lcc.uma.es/~eat/services/i_socket/i_socket.html#link2.
*masadelante.com. [Online] [Cited: Enero 16, 2009.] http://www.masadelante.com/faqs/socket.
+
*Comunicacion entre procesos distribuidos. Disponible en http://es.tldp.org/Universitarios/seminario-2-sockets.html.
*Lenguajes y Ciencias de la Computación. [Online] 2008. [Cited: Enero 16, 2009.]
+
*Sun. Programación en castellano. Disponible en http://programacion.com/java/tutorial/red/11/.
 
+
*Ciencia e Ingeniería de la Computación. Programación en redes. Disponible en http://www.mcc.unam.mx/~cursos/Algoritmos/javaDC99-1/resumen2.html#TCP.
http://www.lcc.uma.es/~eat/services/i_socket/i_socket.html#link2.  
+
[[Categoría:Redes de computadoras]]
 
 
*Barranco, Miguel Rueda. TLDP-ES/LuCAS. Doctorado en informatica Sockets: Comunicacion entre procesos
 
 
 
distribuidos. [Online] Junio 1996. [Cited: Enero 16, 2009.] http://es.tldp.org/Universitarios/seminario-2- sockets.html.  
 
 
 
*Sun. Programación en castellano. Java en castellano. [Online] [Cited: Enero 16, 2009.]
 
 
 
http://programacion.com/java/tutorial/red/11/.  
 
 
 
*Ciencia e Ingeniería de la Computación. Programación en redes. [Online] Septiembre 20, 1998. [Cited: Enero 16,
 
 
 
2009.] http://www.mcc.unam.mx/~cursos/Algoritmos/javaDC99-1/resumen2.html#TCP.  
 
 
 
*Departamento de Arquitectura y Tecnologías de Computadores. Universidad de Granada. Comunicación de
 
Socket. Tipo SOCKET_STREAM. [Online] [Cited: Enero 20, 2009.] http://atc.ugr.es/~hcamacho/socket.pdf.</div>
 
[[Category:Redes_de_Computadoras]]
 

última versión al 10:46 3 sep 2019

Sockets
Información sobre la plantilla
Socket2.jpg
Concepto:Un socket es un método para la comunicación entre un programa del cliente y un programa del servidor en una red.

Un socket (enchufe), es un método para la comunicación entre un programa del cliente y un programa del servidor en una red, se define, por tanto, como el punto final en una conexión.

Este mecanismo surge a principios de los 80 con el sistema Unix de Berkeley, para proporcionar un medio de comunicación entre procesos y presentan la misma funcionalidad que tiene la comunicación por correo o por teléfono (de un buzón se extraen mensajes completos, mientras que el teléfono permite el envío de flujos de información que no tienen una estructura claramente definida), es decir permiten que un proceso hable (emita o reciba información) con otro incluso estando estos en distintas máquinas. Esta característica de ínterconectividad hace que el concepto de socket sea de gran utilidad.

Principio de funcionamiento

Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto. Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:

  • Que un programa sea capaz de localizar al otro.
  • Que ambos programas sean capaces de intercambiarse cualquier secuencia de octetos, es decir, datos relevantes a su finalidad.

Para ello son necesarios los tres recursos que originan el concepto de socket:

  • Un protocolo de comunicaciones, que permite el intercambio de octetos.
  • Un par de direcciones del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica la computadora de origen y la remota.
  • Un par de números de puerto, que identifica a un programa dentro de cada computadora.

Los sockets permiten implementar una arquitectura cliente-servidor o peer to peer. La comunicación debe ser iniciada por uno de los programas que se denomina programa cliente. El segundo programa espera a que otro inicie la comunicación, por este motivo se denomina programa servidor.

Un socket es un proceso o hilo existente en la máquina cliente y en la máquina servidora, que sirve en última instancia para que el programa servidor y el cliente lean y escriban la información. Esta información será la transmitida por las diferentes capas de red.

Cuando un cliente conecta con el servidor se crea un nuevo socket, de esta forma, el servidor puede seguir esperando conexiones en el socket principal y comunicarse con el cliente conectado, de igual manera se establece un socket en el cliente en un puerto local.

Una aplicación servidor normalmente escucha por un puerto específico esperando una petición de conexión de un cliente, una vez que se recibe, el cliente y el servidor se conectan de forma que les sea posible comunicarse entre ambos. Durante este proceso, el cliente es asignado a un número de puerto, mediante el cual envía peticiones al servidor y recibe de este las respuestas correspondientes.

Similarmente, el servidor obtiene un nuevo número de puerto local que le servirá para poder continuar escuchando cada petición de conexión del puerto original. De igual forma une un socket a este puerto local.

Tipos de socket

En la actualidad existen varios tipos de socket y cada uno por lo regular se asocia a un tipo de protocolo, por ejemplo:

  • SOCK_STREAM: está asociado al protocolo TCP, este brinda seguridad en la transmisión de datos, seguridad en la recepción, en la integridad y en la secuencia, entre otros.
  • SOCK_DGRAM: está asociado al protocolo UDP, e indica que los paquetes viajarán en tipo datagramas, el cual tiene una comunicación asíncrona.

Ventajas

Su principal ventaja radica en que son muy eficientes a la hora de enviar un número elevado de mensajes y datos.

Propiedades inherentes a los sockets

Las propiedades de un socket dependen de las características del protocolo en el que se implementan. Generalmente la comunicación con sockets se realiza mediante un protocolo de la familia TCP/IP (Protocolo de Control de Transmisión/Protocolo de Internet). Los dos más utilizados son: TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagrama de Usuario)

Cuando se implementan con el protocolo TCP, los sockets tienen las siguientes propiedades:

  • Orientado a conexión.
  • Se garantiza la transmisión de todos los octetos sin errores ni omisiones.
  • Se garantiza que todo octeto llegará a su destino en el mismo orden en que se ha transmitido. Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información.

El protocolo UDP es un protocolo no orientado a la conexión. Sólo se garantiza que si un mensaje llega, llegue bien. En ningún caso se garantiza que llegue o que lleguen todos los mensajes en el mismo orden que se mandaron. Esto lo hace adecuado para el envío de mensajes frecuentes pero no demasiado importantes, como por ejemplo, mensajes para los refrescos (actualizaciones) de un gráfico..

Variantes

Existe una variante de los sockets denominada Unix domain sockets, o bien, Interprocess communication sockets (IPC sockets). Éstos se encuentran especificados en la norma POSIX y tienen como propósito la intercomunicación entre programas dentro de la misma computadora, facilitando así la optimización de recursos para este caso en concreto.

Fuente