Ir al contenido principal
Todas las coleccionesGuías de desarrollador
Envío de paquetes TCP/UDP utilizando Netcat
Envío de paquetes TCP/UDP utilizando Netcat

¿Qué es Netcat? Y cómo usarlo para enviar paquetes TCP/UDP a un servidor remoto.

David Sepúlveda avatar
Escrito por David Sepúlveda
Actualizado hace más de una semana

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:

  1. Crear un socket inicial para establecer una conexión del servidor al cliente.

  2. 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.

¿Ha quedado contestada tu pregunta?