Existen varios 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 quizás simplemente 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á bien. Este artículo te mostrará cómo simular un cliente usando una herramienta útil llamada Netcat y realizar la conexión inmediata utilizando la terminal de tu propio ordenador.
Para aprender cómo enviar datos a Ubidots usando estos protocolos, consulta Enviar Datos a Ubidots a través de TCP o UDP.
¿Qué es Netcat?
Netcat es una utilidad de red con muchas características que lee y escribe datos a través de conexiones de red, utilizando el protocolo TCP/IP. Diseñado para ser una herramienta fiable de "back-end", Netcat se puede utilizar directamente con otros programas y scripts para enviar archivos desde un cliente a un servidor y viceversa. Al mismo tiempo, es una herramienta de depuración y exploración de redes rica en características que puede especificar los parámetros de la 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 interesante.)
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, se pueden usar 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: establecer el modo "escucha", espera conexiones entrantes.
-p: puerto local
-u: establecer 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.
Cliente TCP
Con Netcat tu PC se puede convertir en un servidor, deseas comenzar como un servidor que escucha en el puerto 2399:
$ nc -l 2399
Además, podemos usar el servidor para conectarnos al puerto (2399) recientemente abierto, 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
Hello Server
En la terminal donde el servidor está ejecutándose, tus archivos de texto aparecerán sin problemas.
$ nc -l 2399
Hello Server
Cliente UDP
Por defecto, Netcat utiliza el protocolo TCP para sus comunicaciones, pero también puede utilizar UDP con 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 siguiente comando. Como puedes ver, el comando establece la conexión UDP, solo requiere agregar la opción -u:
$ 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 terminal de computadora (3ra).
$ netstat
| grep
2399
udp 0 0 localhost:2399 localhost:57508 ESTABLISHED
Como puedes ver en las imágenes a continuación, el mensaje es recibido por el servidor y la transmisión se verifica por la conexió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 información adicional, consulta este enlace.
¡Feliz hacking! :)
Este artículo fue publicado originalmente en el Blog de Ubidots el 22 de junio de 2017.