Ir al contenido principal
Todas las coleccionesGuías de desarrollador
Envío de paquetes TCP/UDP usando Netcat
Envío de paquetes TCP/UDP usando 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 2 semanas

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.

Tableros IoT para TCP/UDP

Envía datos de sensores a Ubidots a través de protocolos TCP/UDP.

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:

  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 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! :)

Tableros IoT para TCP/UDP

Envía datos de sensores a Ubidots a través de protocolos TCP/UDP.

¿Ha quedado contestada tu pregunta?