Full transcript
0:00En esta clase vamos a hablar de Sockets.
0:02A nivel de la programación,
0:03un socket corresponde al mecanismo que nos permite hacer que dos procesos pesados se comuniquen entre sí.
0:08"Socket" viene del inglés "enchufe", la idea es que "yo enchufo algo y pasa electricidad, lo desenchufo y ya no pasa".
0:15La electricidad va de un lado a otro.
0:17Pero en redes de comunicaciones lo que tenemos es información.
0:20Los sockets como los conocemos tienen sus orígenes en la Universidad de Berkeley, en el área de la bahía.
0:25Esta zona tiene muchos puertos, camiones, trenes, etc. Muchas redes de distribución.
0:32Estas mueven containers.
0:33Por lo que en su inicio los desarrolladores pensaron en estos paquetes de información cómo “containers de información”.
0:39Entonces, ¿cómo mandamos estos containers de información de un lugar hacia otro?
0:43Veamos lo que tenemos.
0:45Cuando tenemos camiones necesitamos un centro de distribución con zonas de carga y descarga.
0:50En el caso de trenes tenemos el nombre de la estación de trenes y el andén.
0:54Para el caso de puertos tenemos el nombre del puerto y los muelles.
0:57La misma idea se usa más o menos para redes de comunicaciones.
1:01Es decir, hay cuatro valores para saber desde dónde vamos a enviar la información y quiénes la van a recibir.
1:06Los valores serían: la dirección desde donde se envía la información, el puerto de envío,
1:12la dirección de quien lo va a recibir y el puerto en que va a recibirse la información.
1:16Esta información nos va a ayudar a definir un socket según su tipo.
1:21Hay una variedad de tipos de socket, con sus respectivas APIs y servicios.
1:25Pero aquí vamos a estudiar dos:
1:27Sockets orientados a conexión y no orientados a conexión.
1:31Los sockets orientados a conexión se preocupan de establecer un canal de comunicación
1:35que confirme que recibí los mensajes y que confirme si los recibe o no en orden, o que los trate de ordenar.
1:41Luego estos socket quedan definidos en base a los cuatro valores mencionados anteriormente,
1:46es decir, en base a su origen y su destino.
1:49Este tipo de sockets se puede ver en el caso de descargas de videos donde vemos que se va llenando un buffer.
1:55Aquí el canal de comunicación va enviando pedazos de video y al otro lado se va rearmando en orden.
2:02Los sockets no orientados a conexión
2:04simplemente envían la información con su dirección y puerto estampadas y esperan que (ojalá) llegue al otro lado.
2:12En este caso no se establece un canal que pueda asegurarse que llegó todo o que la información llegó en orden,
2:18los datos se enviaron y listo, si llega… llega.
2:21Es por esto que un socket no orientado a conexión va a quedar completamente definido simplemente por su propia dirección,
2:29o la dirección de origen.
2:30Al no establecer canal, su dirección de destino puede cambiar sin problemas.
2:34Este tipo de sockets se utiliza cuando nos interesa que la información llegue lo más rápido posible
2:39y perder un poco de información no es tan terrible.
2:42Un ejemplo de esto son los servicios de videollamadas como Zoom,
2:45donde lo más importante es mantener una comunicación en “tiempo real”
2:50y perder un par de milisegundos no altera demasiado la utilidad del servicio.
2:55¿Cómo funcionan en la práctica estos sockets? Veámoslo con diagramas.
2:59En el caso de sockets orientados a conexión tenemos un servidor quien se encuentra escuchando o esperando conexiones.
3:05Por otro lado, tenemos un cliente, el cual cuenta con su propio socket para comunicarse con el servidor.
3:10Cuando el cliente intenta comunicarse con el servidor, este va a recibir la petición en la dirección establecida
3:16y en caso de aceptar la petición, el servidor establece el canal de comunicación en otro socket con otro puerto
3:22para poder hablar tranquilamente sin dejar el puerto de conexión tomado.
3:26Con esto cliente y servidor comienzan a comunicarse hasta que alguno decida cerrar el canal de comunicación.
3:32Aquí podemos ver un poco más del detalle de cada una de las interacciones mostradas en el diagrama.
3:37Cuando usamos sockets no orientados a conexión, el servidor también va a estar escuchando en un puerto.
3:42Aquí el cliente simplemente manda su mensaje indicando la dirección y el puerto.
3:47Si llega este mensaje al servidor, este va a contener la dirección y puerto del cliente
3:52y, si el servidor quiere, va a poder responderle al cliente en dicha dirección.
3:57De esta forma puede mantener la comunicación entre ambos hasta que alguno decida dejar de contestar.
4:02Como no se estableció un canal de comunicación basta con cerrar el socket,
4:06sin la necesidad de avisarle a nadie que ya no voy a recibir mensajes.
4:11Aquí tenemos el detalle de cada una de las interacciones mostradas en el diagrama.
4:16En esta clase hemos visto
4:17qué son los sockets,
4:18sus orígenes,
4:19cómo funcionan los sockets orientados a conexión y cómo funcionan los sockets no orientados a conexión.
4:26Cualquier duda o consulta, ¡no duden en contactar al equipo docente!