¿Cuál es la necesidad de programación de socket y cuáles son sus ventajas?

Editar: se agregó “Cómo funciona”.
¿Qué es la programación de socket?

Es un campo de programación que permite que dos o más hosts se comuniquen entre sí.


¿Por qué la programación de socket?

Bueno, a menos que esté haciendo una aplicación independiente, la comunicación con “pares” es una necesidad. Por lo tanto, el uso de los protocolos básicos como TCP / UDP o sus protocolos subyacentes (HTTP / DHCP) se encuentran en la programación de sockets.


¿Cuáles son sus alternativas?

-> TUBOS CON NOMBRE
Las tuberías con nombre se utilizan generalmente en la comunicación entre procesos. Estos procesos de ayuda (en la capa de aplicación) también se comunican a través de redes.

(Agregaré más una vez que mire a mi alrededor un poco).


VENTAJA:

La programación de sockets generalmente pertenece a los protocolos de comunicación básicos como TCP / UDP y sockets sin procesar como ICMP. Estos protocolos tienen una pequeña sobrecarga de comunicación en comparación con los protocolos subyacentes como HTTP / DHCP / SMTP, etc.


Cómo funciona:

El tipo de sockets que desea usar depende de sus requisitos, y el método de comunicación es principalmente half duplex porque una vez que se pasa un mensaje, los datos se procesan y la respuesta se devuelve.

Hay situaciones en las que la comunicación es full duplex. Los mensajes deben intercambiarse en tiempo real. Aquí es donde entran en juego los protocolos RTP / RTSP. Estos protocolos permiten la transmisión de audio / video en vivo.

(En un apuro ahora, pronto agregaré más detalles)

Conocemos la pila de red como el modelo OSI. Entonces, cuando estamos desarrollando nuestra ‘aplicación de red’, una aplicación que usará la red, necesitamos usar esta arquitectura en capas. Cada programa en ejecución debe tener un número de puerto, al igual que el número de casa en una sociedad. Cada sistema debe tener una dirección IP como el nombre de la sociedad. Para que los datos puedan fluir dentro y fuera correctamente.
Entonces, si tuviéramos que escribir todo esto a mano, la mayoría de las veces sería más grande que la aplicación misma. Entonces, para evitar esta molestia, utilizamos la programación de socket, que tiene servicios bien definidos relacionados con la red. Podemos usarlo directamente sin preocuparnos por los detalles minuciosos.

Así que veo muchas respuestas aquí que explican para qué se utilizan los enchufes, pero me parece que quieres saber por qué los usamos. Los sockets en sí mismos son solo una interfaz desde el código de usuario hasta el código kernal (OS). Todos sus protocolos como HTTP y SMP se implementan en la capa de aplicación de la pila de Internet. El zócalo es la conexión del código de usuario de la capa de aplicación a la pila de Internet del núcleo.

Lo que los sockets no hacen es implementar ninguno de los mecanismos IP o TCP / UDP (observe que no digo protocolos) porque el sistema operativo lo hace más profundamente en la pila de Internet.

Hay otras formas de establecer la comunicación de red, pero los sockets son la forma más sencilla para que un programador tenga acceso a los recursos proporcionados por el sistema operativo.

Los sockets son la forma en que puede hacer que las aplicaciones se comuniquen a través de la red.

Su navegador usa programación de socket. Establece una conexión con el servidor en el puerto 80 (solo para solicitudes HTTP) y obtiene datos del servidor y los muestra de acuerdo con el marcado.

Si hubiera jugado algún juego en línea como Counter-Strike, por ejemplo, donde había sido anfitrión, entonces habría entendido su uso. Se establece como un host con cierto puerto asignado para comunicarse. El juego luego pasa datos usando ese socket a otras computadoras.

Al igual que Ankit Singhaniya, dijo que las bibliotecas de programación de sockets ofrecen todas las utilidades que necesita para programar una aplicación de red, sin que tenga que reinventar la rueda.

Básicamente, establece un puerto en el que debe realizarse la comunicación y luego establece la conexión. Después de eso, el uso de E / S es casi similar al de E / S estándar. Debe cumplir con los protocolos si está utilizando un número de puerto reservado.

Por ejemplo, supongamos que está creando su propio servidor y navegador. Para el código del servidor, usted programa de modo que mantenga un puerto abierto y acepte las conexiones entrantes. Estas conexiones entrantes se ejecutan como subprocesos para que pueda atender a varios clientes a la vez. Después de enviar datos, cierra la conexión.
En el lado del cliente (navegador), establece la conexión con el servidor. Solicita el archivo HTML y lo muestra de acuerdo con el marcado. El archivo HTML que solicitó se envía desde el servidor a través de sockets. Cierra la conexión después de obtener el archivo. En el servidor y en el cliente, puede mantener la conexión abierta, si se van a enviar más datos.