Usando TCP puro – nc

Carreta

TCP (Transmission Control Protocol) es el protocolo de transporte sobre el que se construye la mayor parte de internet — HTTP, SMTP, SSH, y prácticamente cualquier comunicación en red. Garantiza que los datos lleguen completos y en orden entre dos puntos.

nc (netcat) es una herramienta de línea de comandos que abre conexiones TCP de forma directa, sin protocolo propio encima. Me parece que puede ser muy útil para hacer backups sin usar practicamente nada de recursos de hardware, para no depender prácticamente nada de dependencias externas y para simplificar brutalmente la depuración.

Creo que esta herramienta es muy útil, sobre todo usando IPv6, donde cada dispositivo dispone de una dirección pública real y las conexiones entre dos puntos pueden establecerse de forma completamente directa, sin servidores intermediarios ni técnicas para atravesar NAT.

Chateando

Establecer una conexión usando nc es extremadamente fácil.

En un computador hay que abrir un puerto que escuche:

nc -l -6 1234

Y en el otro hay que conectarse a la IPv6 de esa computadora y el puerto:

nc 2607:f8b0:4004:c09::64 1234

¡Listo! Solo con eso se establece la conexion y se podrán emitir mensajes por los dos lados.

Enviando bits

nc envía bytes crudos, por lo cual es posible enviar cualquier stream de bytes.

Este ejemplo muestra como se podría enviar una imágen:

Receptor

nc -l 1234 > imagen.jpg

emisor

nc 2607:f8b0:4004:c09::64 1234 < imagen.jpg