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 un mes

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?