Cómo simular un cliente TCP/UDP usando Netcat
En esta guía, presentaremos el modelo cliente-servidor y le mostraremos cómo simular un cliente TCP/UDP usando una herramienta útil llamada Netcat , para que pueda establecer una conexión usando la propia terminal de su computadora.
Entonces, ¿cómo funciona el modelo cliente-servidor dentro del Internet de las cosas? El cliente es el dispositivo que inicia la comunicación. El servidor es Ubidots (o cualquier otra conexión de servidor), que aceptará conexiones y gestionará las transferencias de datos a través de un protocolo simple como TCP o UDP.
Para obtener más información sobre cómo administrar sus datos con Ubidots , descubra cómo enviar datos a Ubidots a través de TCP o UDP .
¿Qué es Netcat?
Netcat es una utilidad de red destacada que lee y escribe datos a través de conexiones de red, utilizando el protocolo TCP/IP. Diseñado como una herramienta "back-end" confiable, Netcat se puede usar directamente con otros programas y scripts para enviar archivos desde un cliente a un servidor y viceversa. Al mismo tiempo, es una herramienta de exploración y depuración de redes rica en funciones que puede especificar parámetros de red y al mismo tiempo establecer una conexión a un host remoto a través de un túnel.
Aunque Netcat puede hacer muchas cosas, su objetivo principal y sus funciones más deseables son:
1.Cree un socket inicial para establecer una conexión desde el servidor al cliente.
2.Una vez conectado, Netcat generará automáticamente un segundo socket para transmitir archivos desde el servidor al cliente y viceversa. (Esta es la parte realmente interesante).
A continuación se muestra un diagrama de la arquitectura del protocolo de datos de Netcat:
Como verá a continuación, esta sencilla solución también es extraordinariamente poderosa y flexible. Usaremos conexiones locales por simplicidad, aunque, por supuesto, también se pueden usar entre diferentes máquinas.
Sintaxis
nc [-opciones] nombre de host puerto[s] [puertos] nc -l -p puerto [-opciones] [nombre de host] [puerto]
Parámetros básicos
- -l: configura el modo "escuchar", espera las conexiones entrantes.
- -p: puerto local.
- -u: configura el modo UDP.
Pon a prueba tu comprensión de Netcat como cliente-servidor
Abra dos terminales de computadora: el primero actuará como servidor y el segundo como cliente.
Cliente TCP
Con Netcat, su PC se puede convertir en un servidor. Querrás comenzar como un servidor que escucha en el puerto 2399 :
$ nc -l 2399
También podemos usar el servidor para conectarnos al puerto abierto recientemente ( 2399 ) desde el del cliente :
$ nc localhost 2399
Como puede ver en la imagen a continuación, la conexión está establecida:
Con la conexión establecida, ahora puedes escribir al servidor desde el cliente :
$ nc localhost 2399 Hola servidor
En la terminal donde se ejecuta el servidor , sus archivos de texto aparecerán sin problemas.
$ nc -l 2399 Hola servidor
cliente UDP
De forma predeterminada, Netcat usa el TCP para comunicarse, pero también puede usar UDP con la opción -u
Como mencionamos anteriormente, Netcat te permite convertir tu PC en un servidor. Aquí, vamos a establecer la conexión entre el servidor y el cliente mediante UDP.
En el del servidor , ejecute el siguiente comando. Como puedes ver, sólo necesitas agregar -u al comando para establecer la conexión UDP
$ nc -u -l 2399
Una vez que inicie el servidor, establezca la conexión con el cliente :
$ nc-u localhost 2399
Ahora el cliente y el servidor utilizan UDP para comunicarse. Puede 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 puede ver a continuación, el mensaje es recibido por el servidor y la transmisión es verificada por la conexión:
Con esta introducción a Netcat, ahora comprende mejor cómo utilizar esta herramienta avanzada para enviar datos de forma rápida y eficiente entre el cliente y el servidor. Consulte la página de inicio del proyecto Netcat para obtener más información.
¡Feliz piratería! 🙂