Hay una serie de protocolos que impulsan el Internet de las Cosas. Elegir el adecuado dependerá de las necesidades de seguridad, ancho de banda y fiabilidad de tu proyecto, o tal vez solo de las limitaciones de computación de tu dispositivo. En algunos casos, como la transmisión celular, la buena y vieja transmisión de paquetes TCP/UDP funcionará perfectamente. Este artículo te mostrará cómo simular un cliente utilizando una herramienta útil llamada Netcat y realizar la conexión inmediata utilizando la terminal de tu propia computadora.
Para aprender cómo enviar datos a Ubidots utilizando estos protocolos, consulta Enviar datos a Ubidots a través de TCP o UDP.
¿Qué es Netcat?
Netcat es una utilidad de red con características que lee y escribe datos a través de conexiones de red, utilizando el protocolo TCP/IP. Diseñada para ser una herramienta "back-end" confiable, Netcat puede ser utilizada directamente con otros programas y scripts para enviar archivos de un cliente a un servidor y viceversa. Al mismo tiempo, es una herramienta rica en funciones para depuración y exploración de redes que puede especificar los parámetros de red mientras también establece una conexión con un host remoto a través de un túnel.
Aunque Netcat puede hacer muchas cosas, su propósito principal y función más deseable es:
Crear un socket inicial para establecer una conexión del servidor al cliente.
Una vez conectado, Netcat generará automáticamente un segundo socket para transmitir archivos del servidor al cliente y viceversa. (Esta es la parte realmente genial.)
Consulta a continuación un diagrama de la arquitectura del protocolo de datos de Netcat.
Algo tan simple resulta ser extraordinariamente poderoso y flexible, como verás a continuación. Para simplificar, se utilizan conexiones locales, aunque, por supuesto, pueden usarse entre diferentes máquinas.
Sintaxis
nc [-opciones] nombre_del_host puerto[s] [puertos]
nc -l -p puerto [-opciones] [nombre_del_host] [puerto]
Parámetros básicos
-l: establece el modo "escuchar", espera las conexiones entrantes.
-p: puerto local
-u: establece el modo UDP
Prueba tu comprensión de Netcat como cliente-servidor
Abre dos terminales de computadora, la primera actuará como el servidor y la segunda será el cliente.
1. Cliente TCP
Con Netcat tu PC puede convertirse en un servidor, quieres comenzar como un servidor que escucha en el puerto 2399:
$ nc -l 2399
Además, podemos usar el servidor para conectarnos al puerto (2399) que se acaba de abrir, desde el lado del cliente:
$ nc localhost 2399
Como puedes ver en la imagen a continuación, la conexión se establece:
Con la conexión establecida, ahora puedes escribir al servidor desde el cliente:
$ nc localhost 2399
Hola Servidor
En la terminal donde se está ejecutando el servidor, tus archivos de texto aparecerán sin problemas.
$ nc -l 2399
Hola Servidor
2. Cliente UDP
Por defecto, Netcat utiliza el protocolo TCP para sus comunicaciones, pero también puede usar UDP utilizando la opción -u.
Como mencionamos en el paso anterior, Netcat te permite convertir tu PC en un servidor. En este caso, vamos a establecer la conexión entre el servidor y el cliente, pero utilizando UDP.
Desde el lado del servidor, ejecuta el comando a continuación. Como puedes ver, el comando establece la conexión UDP solo requiere que se agregue -u al comando:
$ nc -u -l 2399
Una vez que inicies el servidor, establece la conexión con el cliente:
$ nc -u localhost 2399
Ahora el cliente y el servidor están utilizando el protocolo UDP para su comunicación. Puedes verificar la comunicación utilizando el comando netstat en una nueva (tercera) terminal de computadora.
$ netstat
| grep
2399
udp 0 0 localhost:2399 localhost:57508 ESTABLECIDO
Como puedes ver en las imágenes a continuación, el mensaje es recibido por el servidor, y la transmisión es verificada por la conexión:
Conclusión
Con esta introducción a Netcat, ahora tienes una mejor comprensión de esta herramienta avanzada para enviar datos de manera rápida y eficiente entre cliente y servidor. Para más información sobre Netcat, consulta este enlace.
¡Feliz Hackeo! :)