Red de conocimiento informático - Problemas con los teléfonos móviles - Socket Unix: ¿Qué es un socket?

Socket Unix: ¿Qué es un socket?

Los sockets permiten la comunicación entre dos procesos diferentes en la misma o diferentes máquinas. Más precisamente, es un método para comunicarse con otras computadoras utilizando descriptores de archivos estándar de Unix. En Unix, cada operación de E/S se realiza escribiendo o leyendo un descriptor de archivo. Un descriptor de archivo es simplemente un número entero asociado con un archivo abierto, que podría ser una conexión de red, un archivo de texto, una terminal u otra cosa.

Para un programador, un socket se ve y se comporta de manera muy similar a un descriptor de archivo de bajo nivel. Esto se debe a que comandos como read() y write() funcionan con sockets de la misma manera que archivos y canalizaciones.

Los sockets se introdujeron originalmente en 2.1BSD y posteriormente se refinaron a su forma actual en 4.2BSD. La mayoría de las versiones actuales del sistema UNIX proporcionan funciones de socket.

Uso de sockets Unix en el marco de la aplicación CS. Un servicio es un proceso que realiza determinadas funciones en función de las solicitudes de los clientes. La mayoría de los protocolos a nivel de aplicación, como FTP, SMTP y POP3, utilizan sockets para establecer una conexión entre un cliente y un servidor y luego intercambiar datos.

Existen cuatro tipos de enchufes a disposición de los usuarios. Los dos primeros son los más utilizados y los dos últimos rara vez se utilizan.

Se supone que los procesos se comunican sólo entre sockets del mismo tipo, pero no existen restricciones que impidan la comunicación entre sockets de diferentes tipos.

Stream socket - Entrega garantizada en un entorno de red. Si envía tres elementos "A, B, C" a través de un conector de flujo, llegarán en el mismo orden: "A, B, C". Estos sockets utilizan TCP (Protocolo de control de transmisión) para la transferencia de datos. Si la entrega no es posible, el remitente recibirá un indicador de error. Los registros de datos no tienen límites.

Packet Socket: no se garantiza su entrega en un entorno de red. No tienen conexión porque no necesitas una conexión abierta como en un socket de transmisión: creas un paquete con la información de destino y lo envías. Utilizan UDP (Protocolo de datagramas de usuario).

Raw Sockets: proporcionan a los usuarios acceso a protocolos de comunicación subyacentes que admiten la abstracción de sockets. Estos sockets suelen estar orientados a paquetes, aunque sus características exactas dependen de la interfaz proporcionada por el protocolo. Los sockets sin formato no están diseñados para el usuario general; se proporcionan principalmente para aquellos interesados ​​en desarrollar nuevos protocolos de comunicación o acceder a algunas de las funciones más arcanas de los protocolos existentes.

Sockets de paquetes secuenciales: son similares a los sockets de flujo, excepto que se conservan los límites de los registros. Esta interfaz solo se proporciona como parte de la abstracción del socket del sistema de red (NS) y es muy importante en la mayoría de las aplicaciones NS serias. Los sockets de paquetes secuenciados permiten al usuario manipular los encabezados de secuencia de protocolo de paquetes (SPP) o protocolo de paquetes de Internet (IDP) de un paquete o conjunto de paquetes, escribiendo un encabezado estándar, junto con cualquier dato a enviar, o especificando un El encabezado predeterminado se utiliza para todos los datos salientes y permite al usuario recibir encabezados para los paquetes entrantes.